您现在的位置:主页 > 业界资讯 > >

定时下载远程网站备份,防止网站宕机

时间: 2015-05-12 13:39 来源: 未知 作者: admin 收藏 百度搜索本文

网站遭到攻击宕机过一整天,所谓吃一堑长一智,一直在考虑网站备份的事情,备份在服务器上也是不放心的,最放心的还是下载到本地电脑里。随想了一个定时备份以及下载备份文件到本地电脑的方案,并且用代码实现,着实费了不少劲。
 
以下方案适合有html和php基础的朋友。
 
1、服务器上定时备份数据库。这一条我相信大多数网站应该都有吧,包括用开源CMS建站的朋友。不再详述。
 
2、服务器上定时取得截止到昨天0点修改的文件,这一条主要是把新上传的文件,主要是文章中用到的图片备份下来,这一步主要是获得新上传文件的路径,方便第三步下载用。在这一步骤里也可以获得第一步备份数据库的文件路径,方便下载。附主要代码思路:
 
//遍历文件
function listDir($dir,$ok_path){
 if(is_dir($dir)){
  if ($dh = opendir($dir)){
   while (($file = readdir($dh)) !== false){
    if((is_dir($dir."/".$file)) && $file!="." && $file!=".."){
     //echo "<b><font color='red'>文件名:</font></b>",$file,"<br><hr>";
     listDir($dir."/".$file,$ok_path);
    }else{
     if($file!="." && $file!=".."){
      $file_path = $dir."/".$file;
      //echo $file_path."<br>";
      if (chkModifiedFile($file_path)) {
       write_file($ok_path, str_replace("www/html", "http://www.ag568.com", $file_path)."\r\n",'a+');
       //echo str_replace("www/html", "http://www.ag568.com", $file_path)."<br>";
      }
     }
    }
   }
   closedir($dh);
  }
 } else {
  //echo "找不到文件夹";
 }
}
 
function chkModifiedFile($file) {
 $last_modified = filemtime($file);
 $bak_time = strtotime(date("Y-m-d",strtotime("-1 day")));
 //$timediff = $time - $last_modified;
 if ($last_modified > $bak_time) {
  return true;
 } else {
  return false;
 }
}
 
取得一天前修改的文件的地址放到一个固定的文件里,供第三步下载使用。
 
3、根据第二步生成的文件路径地址下载文件到本地电脑。附主要代码思路,注:该文件是在本地环境中运行的
 
$file = file_get_contents($filename1.$filename2);
if (!$file) {
 die ($filename1.$filename2.",读取失败!");
}
 
$a = explode("\r\n",$file);
 
for ($i=0;$i<count($a)-1;$i++){
 //$af = explode('/',$a[$i]);
 //$bakfile=$af[count($af)-1];
 $bakfile=$a[$i];
 $bakfile1=str_replace("http://www.ag568.com/",$dirpath , $bakfile);
 $bakfile2=str_replace("http://www.ag568.com/","" , $bakfile);
 
 if (strstr($bakfile2,"/")) {
  $b = explode("/",$bakfile2);
  //echo $bs = $b[0];
  @mkdir($dirpath.$b[0],0777);
 }
 //echo $bakfile1."</br>";
 if ($gp->httpcopy($bakfile,$bakfile1)) {
  echo $bakfile1.",OK"."</br>";
 } else {
  echo $bakfile1.",ERR"."</br>";
 }
}
 echo "共备份:".$i;

(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%