2010-10-08 36 views
2

我有一個「數據」目錄,即我通過shell腳本定期向遠程NAS rsync。檢測目錄中是否有修改內容,如果有,備份 - 否則什麼也不做

但是,我想讓這個更高效。我想在運行rsync之前檢測「數據」中是否發生了變化。這樣我就不會不必要地喚醒NAS上的驅動器。

我想修改shell腳本來獲得在數據文件的最新修改的時間(通過使用遞歸查找),並寫一個文件每次數據rsynced。

每次同步之前,shell腳本可以與之前的時間戳記「數據」是同步時間比較「數據」的當前時間戳。如果當前時間戳較新,則rsync,否則不執行任何操作。

我的問題是,有沒有弄清楚,如果自上次rsync的「數據」目錄中被修改,一個更有效的方法?請注意,數據具有很多很多層的子目錄。

回答

5

如果我理解正確的,你只是想看看是否有文件被修改,這樣你就可以找出是否繼續執行腳本的rsync的部分?

找出數據上次同步的時間非常簡單,特別是如果您每晚都這樣做。只要你找到一個mtime大於上次同步時間的文件,就知道你必須繼續完整的rsync。

find具有這種功能內置於:

# find all files modified in the last 24 hours 
find -mtime 1 
3

的Rsync已經這樣做了。沒有需要檢查inode的mtime和ctime屬性的按需解決方案。

但是你可以創建一個使用inotify的,因爲它們發生追蹤變化的守護進程,並在間隔火rsync的,或當你感到足夠的事件時有發生的理由調用rsync的。

3

我會使用find命令,但做這種方式:當rsync的運行,觸文件,如「rsyncranflag」。然後你可以運行-newer rsyncranflag

那會說的任何文件明確是否從上次的rsync(如有的mtime的精度)改變

查找數據。

相關問題