php 调用 rsync,使用php结合rsync、inotify实现的实时备份脚本!

1. php脚本

#解析配置文件

$arr=parse_ini_file(‘config.ini‘,true);

#获取符合“监控”要求的目录格式的路径

$dirListen=implode(‘ ‘,$arr[‘srcdir‘]);

# 获取符合“同步目录”要求的格式的目录路径

$sdDir=dir_path_parse($arr[‘srcdir‘],$arr[‘dstdir‘]);

#运行程序后先同步一次

rsync_data($sdDir[‘src‘],$sdDir[‘dst‘]);

#监控文件系统变化

$p=popen(‘inotifywait -mrq --format "%T %w\%f %e" -e create,modify,delete,move ‘.$dirListen,‘r‘);

#文件系统发生变化时,进行数据同步

while($f=fgets($p)){

#重构字符串用以日志显示

$arr=explode(‘ ‘,trim($f));

$event[‘file‘]=implode(array_splice($arr,2,-1));

list($event[‘date‘],$event[‘time‘],$event[‘oper‘])=$arr;

#print_r($event);

$strLog=‘来自‘.gethostbyname(gethostname()).‘的操作:‘.$event[‘oper‘].‘  ‘.$event[‘file‘].‘ 于 ‘.$event[‘date‘].‘_‘.$event[‘time‘].‘ 同步备份到服务器上...‘;

$strLog .= rsync_data($sdDir[‘src‘],$sdDir[‘dst‘])."\r\n";

file_put_contents(‘databak.log‘,$strLog,FILE_APPEND);

echo $strLog;

}

#释放资源

pclose($p);

########################################函数################################################

#同步备份

function rsync_data($srcdir,$dstdir){

exec("rsync -togrvzp --delete --progress $srcdir $dstdir");

return "OK";

}

#源目录和目的目录路径处理

function dir_path_parse($srcdir,$dstdir){

if(php_uname(‘s‘) == ‘Windows NT‘){

foreach ($srcdir as $k=>$v) {

$srcdir[$k]=‘/cygdrive/‘.preg_replace(‘/[^\w-\.]{1,}/‘,‘/‘,$v);

}

$srcdirAll=implode(‘ ‘, $srcdir);

$dstdir=implode(‘::‘,$dstdir);

return array(‘src‘=>$srcdirAll, ‘dst‘=>$dstdir);

}else{

$srcdirAll=implode(‘ ‘, $srcdir);

$dstdir=implode(‘::‘,$dstdir);

return array(‘src‘=>$srcdirAll, ‘dst‘=>$dstdir);

}

}

2、config.ini #用来配置需要备份的目录

[srcdir]

dir1=d:\test ;目录不能以"\"结尾

dir2=d:\scan

[dstdir]

host=10.74.60.71 ;rsync服务器地址

shareDirName=zhangsan ;rsync服务器共享出来的目录

原文:http://noican.blog.51cto.com/4081966/1731450

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值