Linux

如何使用命令行工具同步兩個文件夾?

  • October 1, 2020

從 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刪除目標文件夾中源中不存在的文件

手冊頁:https ://download.samba.org/pub/rsync/rsync.html

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