Linux

比較 2 個目錄並在第 3 個目錄中複製差異

  • October 5, 2017

執行 ubuntu 12.04,我想比較 2 個目錄,比如 folder1/ 和 folder2/ 並複制與 folder3/ 不同的任何文件。還有嵌套文件,因此也應複製匹配的子目錄

有一個命令可以幫助我嗎?我可以獲得正在執行的已更改文件的完整列表:

rsync -rcnC --out-format="%f" folder1/ folder2/

但是 rsync 似乎沒有能力將這些文件“導出”到不同的目標目錄中。我可以將列表傳遞給 cp 或其他程序,以便在創建目錄的同時復製文件嗎?例如,我試過

rsync -rcnC --out-format="%f" folder1/ folder2/ | xargs cp -t folder3/

但這也不會保留目錄,它只會複製 folder3/ 中的所有文件

使用 –compare-dest。

從手冊頁:

–compare-dest=DIR - 此選項指示 rsync 使用目標電腦上的 DIR 作為附加層次結構,以比較目標文件與執行傳輸(如果目標目錄中缺少文件)。如果在 DIR 中找到與發件人文件相同的文件,則該文件將不會傳輸到目標目錄。這對於創建僅從早期備份更改的文件的稀疏備份很有用。

首先用 –dry-run 檢查你的語法

rsync -aHxv --progress --dry-run --compare-dest=folder2/ folder1/ folder3/

然後,一旦您對輸出感到滿意:

rsync -aHxv --progress  --compare-dest=folder2/ folder1/ folder3/

連結對 –compare-dest 範圍有很好的解釋。

引用自:https://serverfault.com/questions/506005