设计了一个跨站文件备份脚本

C 2018-3-8 7602

这里就不详细说明了,各位可以自己拿去试一下。
[task.php]
$key='37a0096710b00604ccc08f6f2da526de'; //通讯密钥
$dir='backup'; //存储在哪
$web='http://127.0.0.1'; //目标网址
$lag=60; //下载超时
$num=3; //保留份数
function cgrab($url,$wait,$save){$c=curl_init($url);curl_setopt($c,CURLOPT_TIMEOUT,$wait);curl_setopt($c,CURLOPT_RETURNTRANSFER,empty($save)?1:0);curl_setopt($c,CURLOPT_SSL_VERIFYPEER,0);curl_setopt($c,CURLOPT_SSL_VERIFYHOST,0);curl_setopt($c,CURLOPT_HEADER,0);curl_setopt($c,CURLOPT_NOBODY,0);if(empty($save)){$s=curl_exec($c);curl_close($c);return $s;}else{$f=fopen($save,'w');curl_setopt($c,CURLOPT_FILE,$f);$s=curl_exec($c);curl_close($c);fclose($f);return $s;}}
if(!file_exists($dir.'/'.$key)){mkdir($dir.'/'.$key,0777,true);}
$set=@unserialize(cgrab($web.'/.backup.'.$key.'.php',10,false)?:null)?:null;
if(empty($set['date'])){die('disconnected');}
if(file_exists($dir.'/'.$key.'/'.$set['date'].'.tar')){die('completed');}
if(!cgrab($web.'/.backup.'.$key.'.tar',$lag,$dir.'/'.$key.'/'.$set['date'].'.tar')){unlink($dir.'/'.$key.'/'.$set['date'].'.tar');}
if(!empty($num)){$del=glob($dir.'/'.$key.'/*');rsort($del);foreach(array_splice($del,$num) as $row){unlink($row);}}
die('success');
?>
[.backup.37a0096710b00604ccc08f6f2da526de.php]
<?php //文件权限777
$key='37a0096710b00604ccc08f6f2da526de'; //通讯密钥
$dir='view'; //哪个目录
$fmt=date('Ymd'); //日期格式
$set=@unserialize(file_exists('.backup.'.$key.'.run')?file_get_contents('.backup.'.$key.'.run'):null)?:null;
if($set['date']>=$fmt){echo serialize($set);die;}
$tar=new PharData('.backup.'.$key.'.tar');
$tar->buildFromDirectory($dir);
$set['date']=$fmt;
file_put_contents('.backup.'.$key.'.run',serialize($set),LOCK_EX);
echo serialize($set);die;
?>

最新回复 (1)
  • C 2018-3-8
    2
    可用于打包备份sqlite数据库,增量备份上月文件等。