Rsync

rsync 是無狀態的嗎?

  • November 18, 2020

假設我們進行了備份(2TB 和 500'000 個文件):

rsync -az /home/me/ root@192.168.0.2:/backup/home/me/   

問題:

  • 它是否首先從目的地下載已經存在於目的地的文件列表(+它們的雜湊),以便能夠計算需要發送的內容?

如果是,500k 文件的下載量有多大?我猜每個文件至少 100 個字節(文件名 + 雜湊),即至少 50MB?更大(因為文件被分成更小的塊)?

  • rsync無國籍的嗎?以下哪一項是正確的:

    1. 同步成功後,本地或遠端電腦上都不會保留任何數據庫。如果我在 1 小時後重做另一次同步,所有內容都將從頭開始(散列、重新下載目標上已經存在的文件列表等)或者

    2. 當同步成功時,數據庫會同時保存在本地和遠端伺服器上,並帶有散列等,以便下一次同步更快(不再需要重新散列所有內容)?

Rsync 是無狀態的。每次重新執行它時,它都會重新評估源和目標的文件,以決定傳輸什麼。

但是,請注意,如果沒有-c( --checksum) 選項,rsync 不會計算校驗和。它只比較大小和修改時間。如果您使用的是-a. 這意味著生成列表不必打開和讀取任何文件,只需打開和讀取目錄。您的 rsync 命令必須執行的文件系統工作與執行find /home/me -ls.

您可以使用該--stats選項獲取有關正在傳輸的數據量的一些有用資訊。這包括“發送的總字節數”欄位。您可以執行 rsync -n --stats,該欄位將告訴您必須傳輸的文件列表有多大。(還報告了“文件列表大小”,但由於某種原因我只報告了 0。)請注意,rsync 不會發送每個文件的完整路徑,因此文件列表可能明顯小於每個文件 100 字節.

您可能還對Rsync 的工作原理:實用概述感興趣。

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