让服务器每天备份一次MySQL数据库并自动打包,删除30天前的备份文件。
1.环境:windows server 2003+Apache 2.0+PHP 5+MySQL 4 . 0 . 26。
2.假设PHP安装目录为d:/PHP,MySQL安装目录为D:/mysql。
3.在d:/php下创建文件mysql_backup.php
& lt?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
set _ time _ limit(0);
$ days = 90
//保存目录。使用反斜杠作为路径。您需要手动创建它。
$ store _ folder = ' K:\ bak ';
//用户名和密码。此帐户必须拥有操作[所有]数据库和文件的权限,否则某些数据库无法备份。
$ db _ username = " root
$ db _ password =“* * * *”;
/**
* @desc函数,用于生成zip压缩文件
*
* @param $dir字符串要压缩的文件夹名
* @param $filename字符串压缩的zip文件名包含zip后缀
* @param $outDir字符串输出目录
*/
functionzip($dir,$filename,$ OutDir){ 0
if(!file_exists($dir) ||!is _ dir($ dir)){ 0
die('不能存在dir '。$ dir);
}
if(strtolower(end(explode(' . '),$filename)))!= ' zip '){ 0
die('仅支持zip文件');
}
$dir=str_replace('\ ','/',$ dir);
$filename=str_replace('\ ','/',$ filename);
if(file _ exists($ filename)){ 0
die(' zip文件'。$文件名。已经存在!”);
}
$ files = array();
getfiles($dir,$ files);
if(空($ file)){ 0
die(' dir为空');
}
$ zip = newZipArchive
$res=$zip->open($outDir)。"\".$filename,ZIpARCHE::CREATE);
if($ RES = = = TRUE){ 0
foreach($ file as $ v){ 0
$zip->addFile($v,str_replace($dir。/','',$ v));
}
$zip->close();
echo 'ok
}else{
回声“失败”;
}
}
function getfiles($ dir & amp;$ files = array()){ 0
if(!file_exists($dir) ||!is _ dir($ dir)){ 0
返回;
}
if(substr($dir,-1)= '/'){ 0
$dir=substr($dir,0,strlen($ dir)-1);
}
$ _ files = scandir($ dir);
foreach($ _ file as $ v){ 0
if($v!='.'和。和。$v!='..') {
if(is_dir($dir。'/'.$v)(
getfiles($dir)。'/'.$v,$ files);
}else{
$files[] =$dir。'/'.五美元;
}
}
}
返回$ files
}
/*
*删除目录
*/
functiondelDirAndFile($ dirName){ 0
if($ handle = open dir(" $ DirNAmE "){ 0
while(false!= =($ item = readdir($ handle))){ 0
if($item!="."和。和。$item!="..") {
if(is _ dir(" $ DirName/$ item "){ 0
delDirAndFile(" $ dirName/$ item ");
}else{
if(取消链接(" $dirName/$item "))
Echo "成功删除文件:$ dirname/$ item
}
}
}
close dir($ handle);
if(rmdir($dirName))
回声”成功删除目录:$ dirname
}
}
$ time = time();
$date=date("Y-m-d ",$ time);
$ now dir = $ store _ folder \ \ "。$日期。"";
if(file_exists("$nowdir.rar "))
模具(“文件存在。\ n ");
@ mkdir($ now dir);
mysql_connect("localhost "," $db_username "," $ db _ password ");
$ query = MySQL _ list _ DBS();
while($ result = MySQL _ fetch _ array($ query)){ 0
系统(dirname(__FILE__)。\..\Mysql\bin\mysqldump - opt '。" $ result[Database]-u { $ db _ username } "。($db_password?"-p{$db_password} ":" "" & gt$ nowdir \ \ $结果[数据库]。SQL ");
回送"数据库:`$结果[数据库]`...\ n ";
}
回声" \ n声音加载...\ n ";
zip($nowdir,“\”。$日期。".zip ",$ store _ folder);
delDirAndFile($ now dir);
//删除超过90天的文件
@ unlink($ store _ folder \ \)。日期(“Ymd”,$time- 86400 *$days)。".zip”);
回声" \nOK!\ n ";
?& gt