php自動備份數據庫

<?php
//天天早上備份一次 MySQL 數據庫並自動打包,同時刪除 5 天前的備份文件  建議在本地運行沒有任何問題再傳到服務器上 之後就能夠添加計劃任務
////////////////////////*/
//保存目錄,路徑要用反斜槓.您須要手動創建它.
//WinRAR.exe  要把壓縮包的exe文件跟當前運行頁面放在同一個目錄,固然你也能夠本身配置,這樣才能壓縮
ini_set("max_execution_time", "0");//代碼運行時間不限制  防止備份失敗
ini_set('memory_limit', '128M');//設置內存 根據需求能夠修改
date_default_timezone_set("PRC");
$store_folder = 'D:\databse_backup';
if(!file_exists($store_folder)) 
{
   mkdir($store_folder);
}
//用戶名和密碼
//該賬號須有操做[全部]的數據庫及FILE的權限

//不然有些數據庫不能備份.
$db_username = "root";
$db_password = "root";
$time=time();
$nowdir = $store_folder."\\".date("Ymd",$time)."";
$con = mysqli_connect("localhost", "root", "root");
if(!file_exists($nowdir)) 
{
   mkdir($nowdir);
}
if(!$con) 
{
   die('Could not connect: ' . mysqli_connect_error());
}
echo "正在備份請勿關閉頁面....</br>";
ob_flush();  
flush();  
sleep(1); 
//數據庫執行文件地址 
$mysqladdres='D:\phpStudy\MySQL\bin\mysqldump.exe';//個人服務器是 phpmystudy  根據本身的狀況設置
$res = mysqli_query($con,'show databases');
$data = array();
echo str_repeat(" ", 4096);   //防止瀏覽器的緩存
while ($row = mysqli_fetch_assoc($res))
{
    $data[] = $row['Database'];
    system ($mysqladdres.' --opt '."$row[Database] -u{$db_username} ".($db_password?"-p{$db_password}":"")." > $nowdir\\$row[Database].sql");
    echo "dumping database `$row[Database]`...</br>";
    ob_flush();  
    flush();  
    sleep(1); 
}
echo "\nWinrar loading...</br> ";
system( dirname(__FILE__)."\\WinRAR.exe a -ep1 -r -o+ -m5 -df \"$nowdir.rar\" \"$nowdir\" " );
$rar="$store_folder\\".date("Ymd",$time-86400*5).".rar";
//刪除 5 天前的文件
if(file_exists($rar))
{
    @unlink($rar);
}
ob_flush();  
flush();  
sleep(1); 
echo "\nOK!</br>";
mysqli_close($con);
ob_end_flush(); 
?>
相關文章
相關標籤/搜索