題 rsync切換到僅比較時間戳


有沒有辦法讓 rsync 只比較文件的時間戳,並忽略它們的內容?這包括忽略文件大小。只是時間戳。只有時間戳。


3
2018-03-20 20:33


起源




答案:


Rsync無法僅使用時間戳來比較文件。它會 總是 無論如何比較文件大小,如果指定 -c 它還會比較文件的校驗和。

rsync的重點是使一個文件樹與另一個文件樹匹配。如果一棵樹中的文件與另一棵樹中的同一文件的大小不同,那麼它們在邏輯上必須不同。所以rsync會復制它。而不管。

如果要以您希望的方式複製文件,則必須使用不同的工具採用不同的方法。

如果您只想複製自知道日期以來已更改的文件(例如,您最後一次復製文件),則可以使用find的-cnewer標誌。以下小腳本將查找自上次運行以來已更改的文件:

find /path/to/files -cnewer /tmp/lastSync
touch /tmp/lastSync

-cnewer將文件的修改時間與指定文件的時間進行比較(在本例中為/ tmp / lastSync):

-cnewer file
   File's  status  was last changed more recently than file was modified.  
   If file is a symbolic link and the -H option or the -L option is in 
   effect, the status-change time of the file it points to is always used.

touch命令將更新/ tmp / lastSync的時間戳,以反映腳本剛剛運行的事實,以便後續運行腳本使用當前時間作為時基。

然後可以使用find命令的輸出來指定要使用您喜歡的任何方法複製到目標的文件(cp,scp,等等)。


5
2018-03-20 20:38



它似乎默認比較文件大小。我不希望它關心文件包含的內容。
馬特在他的回答中已經解決了這個問題,顯然答案是“不”。 Rsync是一個關注內容的工具,即使它在日期匹配時願意假設相同的內容。如果你不喜歡,你需要一個不同的工具。 - Peter Hansen