window server下mysql数据库每天自动备份

让服务器每天备份一次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