Rsync
rsync 是無狀態的嗎?
假設我們進行了備份(2TB 和 500'000 個文件):
rsync -az /home/me/ root@192.168.0.2:/backup/home/me/
問題:
- 它是否首先從目的地下載已經存在於目的地的文件列表(+它們的雜湊),以便能夠計算需要發送的內容?
如果是,500k 文件的下載量有多大?我猜每個文件至少 100 個字節(文件名 + 雜湊),即至少 50MB?更大(因為文件被分成更小的塊)?
是
rsync
無國籍的嗎?以下哪一項是正確的:
同步成功後,本地或遠端電腦上都不會保留任何數據庫。如果我在 1 小時後重做另一次同步,所有內容都將從頭開始(散列、重新下載目標上已經存在的文件列表等)或者
當同步成功時,數據庫會同時保存在本地和遠端伺服器上,並帶有散列等,以便下一次同步更快(不再需要重新散列所有內容)?
Rsync 是無狀態的。每次重新執行它時,它都會重新評估源和目標的文件,以決定傳輸什麼。
但是,請注意,如果沒有
-c
(--checksum
) 選項,rsync 不會計算校驗和。它只比較大小和修改時間。如果您使用的是-a
. 這意味著生成列表不必打開和讀取任何文件,只需打開和讀取目錄。您的 rsync 命令必須執行的文件系統工作與執行find /home/me -ls
.您可以使用該
--stats
選項獲取有關正在傳輸的數據量的一些有用資訊。這包括“發送的總字節數”欄位。您可以執行 rsync-n --stats
,該欄位將告訴您必須傳輸的文件列表有多大。(還報告了“文件列表大小”,但由於某種原因我只報告了 0。)請注意,rsync 不會發送每個文件的完整路徑,因此文件列表可能明顯小於每個文件 100 字節.您可能還對Rsync 的工作原理:實用概述感興趣。