备份代码及数据库
备份平台上的数据库以及代码
备份平台上的数据库以及代码
<?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;
}
- 上一篇:MySql计数器,如网站点击数,如何实现高性能高并
- 下一篇:pdo 常用函数
精彩图集
精彩文章






