备份代码及数据库
备份平台上的数据库以及代码
备份平台上的数据库以及代码
<?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 常用函数
精彩图集
精彩文章