Rsync

rsync –whole-file 解釋

  • November 1, 2022

當我rsync從硬碟驅動器執行到已安裝的快閃記憶體驅動器時,速度很慢。我正在考慮使用--whole-file開關。

你能解釋一下,為什麼它更快?為什麼我不應該害怕使用它?以及使用它的優缺點是什麼。我沒有找到太多關於它的資訊。

rsync 命令:

rsync -avh --delete --no-o --no-g /home/xralf/audio /media/extdevice/rsync_backups/

rsync從硬碟驅動器(ext4 文件系統)到快閃記憶體驅動器(vfat 文件系統)。

讓我們從在您的系統上找到**--whole-file的文件開始,它首先解釋了它的作用:-W**man rsync

此選項禁用rsync的 delta-transfer 算法,這會導致所有傳輸的文件被完整髮送。

然後接著說,

如果在源電腦和目標電腦之間的頻寬高於磁碟頻寬(尤其是“磁碟”實際上是網路文件系統時)使用此選項,傳輸可能會更快。

$$ … $$

基本上有兩種操作模式rsync

  1. 本地副本(包括源和目標看起來都是本地文件系統的一部分的網路文件系統)。在這種情況下rsync,根據文件大小和修改時間戳選擇複製整個文件或跳過它。在這種情況下啟用該--whole-file選項,因此沒有增量優化。實際上,幾乎所有時間都啟用此功能是沒有意義的,因為您將花費更長的時間閱讀源文件和目標文件來比較它們,而不是首先複製文件。
  2. 遠端副本(其中一個路徑包含{host}:{path}{host}::{path}樣式構造)。在這種情況下rsync,可以在本地機器上執行一個自身實例,在遠端機器上執行一個實例。這兩個實例可以獨立讀取源文件和目標文件來比較它們,希望得到優化的情況,即只有更改通過網路傳輸。此處,--whole-file預設情況下未啟用。

在場景 #1 中,該--whole-file選項預設啟用,將導致文件副本幾乎總是比增量傳輸快。(例外情況是,如果您讀取本地磁碟的速度明顯快於寫入本地磁碟的速度。)

這是您正在使用的情況(本地到本地副本)。這裡最大的問題是你正在寫入一個 VFAT 文件系統,它的文件時間戳只有兩秒的粒度。這意味著對於許多文件rsync來說,它們會認為它們已經過時並且會重新複製它們——這是不必要的。

此處的修復是使用--modify-window=1(有關詳細資訊,請參閱文件,,man rsync)。我還讀到,如果您處於夏季和冬季之間變化的時區,您應該rsync在 UTC 下執行命令以避免相關的時區並發症,但我自己沒有對此進行測試:

TZ=UTC rsync -rtvh --modify-window=1 --delete /home/xralf/audio /media/extdevice/rsync_backups/

在場景 #2 中,該--whole-file選項預設禁用,並且會導致增量文件傳輸,這通常比不小心發送整個文件要快。例外情況是通過網路發送數據比計算源和目標之間的差異更快;例如,在 10Gb/s 網路上可能就是這種情況。

結論:一般來說,試圖欺騙rsync的內置優化不會讓事情變得更好,而且往往會使傳輸速度變得更糟。既不啟用也不禁用--whole-file,而只是讓rsync自己選擇。就 VFAT 文件系統而言,盡量避免使用它們,但如果你不能這樣做,那麼你確實需要提供rsync一些額外的幫助。

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