Linux
比較 2 個目錄並在第 3 個目錄中複製差異
執行 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 範圍有很好的解釋。