您好,登錄后才能下訂單哦!
1. php腳本 <?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服務器共享出來的目錄
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。