2009年7月25日 星期六

備份程式,使用touch檢查備份是否成功

最近在工作上的需要,在建立備份程式。
過去有幾次經驗,是備份程式寫好,看似也正常在運行。
看著每日的備份

ls -al
backup20090721.tar.gz
backup20090722.tar.gz
backup20090723.tar.gz

可能看每個檔案的大小都差不多,假設是700MB,但卻不知道有沒有備份成功。
最近使用一個簡單的方法,是使用touch這個指令。

指令如下:
tar -zcvfP /nfs/backup/project/backup_20090725.tar.gz \
--exclude /home/project/cache/*   \
/home/project/ /usr/local/etc/   \
&& touch /nfs/backup/project/backup_20090725.tar.gz.ok

第一行是要備份的檔案 (tar的指令加上大P)
第二行是要排除的檔案 (如果有要排除的,放這個位置比較好,在freeBSD、Linux會比較通用)
第三行是要備份的路徑
第四行是,當前一個tar的指令有成功的話,就會產生空白的ok檔案

 

然後執行完之後,要刪除三天以前的備份,指令如下

if(is_file("/nfs/backup/project/backup_20090725.tar.gz.ok")):  //確認今天有備份成功 ,才能刪除之前的備份。

shell_exec( "rm –f /nfs/backup/project/backup_20090722.tar.gz /nfs/backup/project/backup_20090722.tar.gz.ok" );  //刪除三天前的備份

endif;