Linux
如何使用命令行工具同步兩個文件夾?
從 Windows 遷移到 Linux 後,我想找到 Winmerge 的替代軟體,或者學習命令行工具來比較和同步 Linux 上的兩個文件夾。如果您能告訴我如何在命令行上執行以下任務,我將不勝感激……(我研究過 diff 和 rsync,但我仍然需要一些幫助。)
我們有兩個文件夾:“/home/user/A”和“/home/user/B”
文件夾A是保存正常文件和文件夾的地方,文件夾B是備份文件夾,作為文件夾A的完整鏡像。(文件夾B中沒有使用者直接保存或修改的內容。)
我的問題是:
- 如何列出僅存在於文件夾 B 中的文件?(例如,自上次同步以來從文件夾 A 中刪除的那些。)
- 如何將僅存在於文件夾 B 中的文件複製回文件夾 A?
- 如何列出兩個文件夾中存在但時間戳或大小不同的文件?(自上次同步以來已在文件夾 A 中修改的那些。我想避免使用校驗和,因為有數以萬計的文件,它會使過程太慢。)
- 如何將文件夾 A 的精確副本複製到文件夾 B 中?我的意思是,將文件夾 A 中的所有內容複製到僅存在於文件夾 A 中的文件夾 B 中,並從文件夾 B 中刪除僅存在於文件夾 B 中的所有內容,但不要觸及兩個文件夾中相同的文件。
這會將文件夾 A 放入文件夾 B:
rsync -avu --delete "/home/user/A" "/home/user/B"
如果您希望文件夾 A 和 B 的內容相同,請將
/home/user/A/
(使用斜線)作為源。這不是文件夾A,而是它的所有內容並將其放入文件夾B。像這樣:rsync -avu --delete "/home/user/A/" "/home/user/B"
-a
同步保留所有文件系統屬性-v
冗長地執行-u
僅複製具有較新修改時間的文件(如果時間相等,則複製大小差異)--delete
刪除目標文件夾中源中不存在的文件