星期三, 7月 08, 2015

Find + Rsync

最近有一個檔案備份同步的需求,條件是備份某段時間內異動(新增)的檔案

爬了一下文章,似乎可以透過find 以及rsync 來做到。

我們來看一下範例,找出某段時間之後有被存取過的檔案。
# find .   -newerct 2015-07-01
./
file1
file2
其他find 更多應用可以參考MAN,其他跟時間比較相關的有mtime(檔案內容修改時間)、ctime(檔案狀態改變時間)、atime(檔案最後被存取時間)

接著搭配RSYNC把找出的檔案備份
 find SOURCE -newerct 2015-06-01 -exec rsync -av {} DST \;
原本以為這樣就可以結束,順利的備份,但是不管怎麼跑,RSYNC都會全部備份,奇怪了,不是都已經使用FIND了嗎?
後來仔細去看才發現,是因為FIND出 來的結果,第一筆是 ./也就是
./
file1
file2
最後在find 條件 加上要備份的檔案副檔名解決。
或是加入 *
 find SOURCE/* -newerct 2015-06-01 -exec rsync -av {} DST \;

附加,如果希望執行兩個命令以上呢
  find SOURCE/* -newerct 2015-06-01 -exec rsync -av {} DST \; -exec cmd {} \;
參考來源
利用 「find」 以日期為條件找出被修改或狀態改變的檔案
 find -exec with multiple commands

沒有留言: