- <?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;
- }
- //该片段来自于http://www.codesnippet.cn/detail/090720149905.html
来源: http://www.codesnippet.cn/detail/090720149905.html