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

社区服务
高级搜索
猴岛论坛电脑百科教你定时下载远程网站备份,防止网站宕机
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
0个回复

[网络问题]教你定时下载远程网站备份,防止网站宕机

楼层直达
阿里云服务器

ZxID:12008696

等级: 禁止发言

举报 只看楼主 使用道具 楼主   发表于: 2015-06-01 0
教你定时下载远程网站备份,防止网站宕机
最近一直在考虑网站备份的事情,备份在服务器上也是不放心的,最放心的还是下载到本地电脑里。随想了一个定时备份以及下载备份文件到本地电脑的方案,并且用代码实现,着实费了不少劲。



以下方案适合有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://bbs.houdao.com/", $file_path)."\r\n",'a+');
       //echo str_replace("www/html", "http://bbs.houdao.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://bbs.houdao.com/",$dirpath , $bakfile);
$bakfile2=str_replace("http://bbs.houdao.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;
[ 此帖被清の神隐在2015-06-01 11:29重新编辑 ]
« 返回列表
发帖 回复