龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

备份代码及数据库

时间:2014-07-22 14:48来源: 作者: 点击:
分享到:
备份平台上的数据库以及代码
备份平台上的数据库以及代码
<?php
set_time_limit(0);
date_default_timezone_set('Asia/Shanghai');
$dbHost     = "localhost";
$dbUser     = "root";
$dbPass = "";
$dbName   = "mysql";
$bakDir   = 'D:/bak/' . date('Y-m-d/H-i') . '/';
$sourceDir = 'G:/wamp/www/mark/re/App/';
$errorlog = $bakDir . 'msg.log';
if (!file_exists($bakDir) && !mkdir($bakDir, 0777, true)) {
	exit (append($errorlog, '建立文件夹失败!'));
}
if (!mysql_connect($dbHost, $dbUser, $dbPass)) {
	exit (append($errorlog, '数据库连接失败'));
}
if (!mysql_select_db($dbName)) {
	exit (append($errorlog, '数据库"' . $dbName . '"不存在'));
}
if (!file_exists($sourceDir)) {
	exit (append($errorlog, '目录"' . $sourceDir . '"不存在'));
}
mysql_query("set names 'utf8'");
$mysql = "set charset utf8;\r\n";
$q1    = mysql_query("show tables");
while ($t = mysql_fetch_array($q1)) {
	$table = $t[0];
	$q2    = mysql_query("show create table `$table`");
	$sql   = mysql_fetch_array($q2);
	$mysql .= $sql['Create Table'] . ";\r\n";
	$q3 = mysql_query("select * from `$table`");
	while ($data = mysql_fetch_assoc($q3)) {
		$keys = array_keys($data);
		$keys = array_map('addslashes', $keys);
		$keys = join('`,`', $keys);
		$keys = "`" . $keys . "`";
		$vals = array_values($data);
		$vals = array_map('addslashes', $vals);
		$vals = join("','", $vals);
		$vals = "'" . $vals . "'";
		$mysql .= "insert into `$table`($keys) values($vals);\r\n";
	}
}

$filename = $bakDir . "db.sql";
write($filename, $mysql);
append($errorlog, '备份数据库成功');


$zip = new ZipArchive();

if ($zip->open($bakDir . 'source.zip', ZipArchive::CREATE) === TRUE) {
	$files = map($sourceDir);
	foreach ($files as $file) {
		$dir  = str_replace('\\', '/', $sourceDir);
		$file = str_replace('\\', '/', $file);
		$zip->addFile($file, str_replace($dir, '', $file));
	}
	$zip->close();
	append($errorlog, '备份源码成功');
}
exit(append($errorlog, '备份成功'));

function append($file, $str) {
	$str = date('Y-m-d H:i:s------------------------------------' . PHP_EOL . $str . PHP_EOL);
	$fh  = fopen($file, 'a');
	flock($fh, LOCK_EX);
	fwrite($fh, $str . PHP_EOL);
	fclose($fh);
	return $str;
}

function write($file, $str) {
	$fp = fopen($file, 'w');
	flock($fp, LOCK_EX);
	fputs($fp, $str);
	fclose($fp);
	return true;
}

function map($directory) {
	$files = array();
	if (file_exists($directory) && is_dir($directory)) {
		foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $file) {
			$files[] = $file->getRealPath();
		}
	}
	return $files;
}

2. [代码]备份程序     跳至 [1] [2] [全屏预览]

@echo off
php.exe G:\bakfile.php
pause
精彩图集

赞助商链接