rsync 是否通過網路檢查差異?
我正在嘗試使用 rsync 和 ssh 設置一個簡單的備份腳本,該腳本應該將我的東西備份到伺服器。
為了節省伺服器驅動器中的空間,我將 –link-dest 選項與最新備份一起使用,以便重複的文件只是硬連結到以前的文件,所以實際的 rsync 命令看起來像
rsync -av -e ssh --link-dest=user@server:/home/user/backups/previous /home/user/tobackup/ user@server:/home/user/backups/current
這只是“解釋”,因為腳本負責備份哪些文件以及如何處理“目前”和“以前”目錄。
我的問題是,由於給定文件與伺服器中支持的文件進行比較,我猜 rsync 需要先實際發送它,然後比較它,然後如果它是新的或更改的,則保存它,或者刪除它並如果它沒有改變,保存一個硬連結?還是在不發送文件的情況下以某種方式進行比較?
我的問題的原因是,如果備份很大,我希望不必發送大的未更改文件,只是發現它們沒有更改。我不知道 rsync 是如何做到這一點的,也無法在其文件中找到它,所以很高興知道它是否做到了,並且我可以期望每次備份的所有文件都通過網路發送,或者如果 rsync 只發送未更改的。
如果我最初的想法由於某種原因從一開始就有缺陷,那麼顯然歡迎替代方法。
您的名義問題的答案是肯定的“是的”。rsync,無論是通過網路,從驅動器到驅動器,還是從文件夾到文件夾,都會檢查現有文件並僅更新已更改的文件。
來自
man rsync
:Rsync 使用“快速檢查”算法(預設情況下)查找需要傳輸的文件,該算法查找大小或上次修改時間已更改的文件。當快速檢查指示文件的數據不需要更新時,直接在目標文件上進行其他保留屬性的任何更改(根據選項的要求)。
rsync 比描述的更強大,因為它可以檢測文件中的差異並更新它們。有關這方面的範例,請參閱 Ubuntu 測試頁面,您可以在其中 rsync 每日 .iso 建構以進行測試。
一些輕讀材料:
如何使用 Rsync 在 Linux 中同步新的或更改/修改的文件。
如果您閱讀其中任何一頁,最後一頁可能是最重要的。它準確地顯示了該應用程序的多功能性。