Directory

rsync比較目錄?

  • February 18, 2020

是否可以用 rsync 比較兩個目錄並只列印差異?有一個空執行選項,但是當我將詳細程度增加到一定水平時,會顯示比較的每個文件。

ls -alR並且diff在這裡沒有選擇,因為原始碼中的硬連結使每一行都不同。(當然,我可以用 perl 刪除這一列。)

您可能必須 rsync -avun --delete在兩個方向上執行類似的東西。

但是你實際上想要完成什麼?

更新

rsync -avun --delete $TARGET $SOURCE |grep "^deleting " 將為您提供目標目錄中不存在的文件列表。

“grep delete”,因為每一行都會列印: deleting ..file ..

rsync -avun $SOURCE $TARGET將為您提供“不同”文件(包括新文件)的列表。

要添加到 Nils 的答案(對於通過 Google 遇到此問題的任何人),預設情況下rsync僅比較文件大小和修改時間以判斷是否存在任何差異。(如果它們不同,它會做更多,但如果它們相同,它就會停在那裡。)

如果要比較實際文件內容,即使對於具有相同大小和上次修改時間的文件,也可以添加標誌-c來告訴rsync使用校驗和比較文件。

rsync -avnc $SOURCE $TARGET

(該-u選項告訴 rsync 忽略$TARGET比 on更新的文件,$SOURCE如果您正在比較內容,您可能不希望這樣做。)

引用自:https://unix.stackexchange.com/questions/57305