我知道您可以使用 arg -z 和 -a 進行 rsync 進行壓縮和存檔。
有人可以告訴我這些選項,如果需要將檔案還原到原始資料夾,它是否會以任何方式影響正在備份的檔案?
在執行 rsync -avz 之後,我複製了媒體檔案的樣本,它們似乎工作正常,但我想確保..
謝謝
答案1
有人可以告訴我這些選項,如果需要將檔案還原到原始資料夾,它是否會以任何方式影響正在備份的檔案?
不會,該-z
開關不會以任何方式影響寫入目標位置的數據,只是-a
為了確保製作更忠實的副本。欲了解更多信息,請繼續閱讀...
rsync 的手冊頁對-z
( --compress
) 開關的描述如下:
-z
,--compress
在傳輸過程中壓縮檔案數據
(-a
只是一種簡寫,它啟用開關,以確保傳輸完成後目標位置資料在所有方面都與來源位置資料相同。它對檔案元資料有影響,但對檔案內容沒有影響;內容無論您是否使用,複製的文件的內容都是相同的-a
。
請注意,描述為-z
壓縮轉移期間。這是重要的部分,但如果沒有一些背景知識,可能不容易理解。
主要是,rsync 使用客戶端/伺服器架構,即使對於本地傳輸也是如此;一側從來源位置讀取數據,另一側寫入目標位置。這兩者之間可能是網路連接,或者它們可能運行在同一台主機上。這種架構允許 rsync 使用完全相同的協定和本質上相同的實作來進行本地複製或透過網路複製:唯一需要更改的部分是中間層,它實際上在 rsync 實例之間來回轉送數據。
當您的吞吐量受到網路吞吐量的限制時,或者如果您按網路數據傳輸量付費,並且可能如果您在來源系統和目標系統上都有空閒的 CPU 時間,然後壓縮流經網路的資料流可以幫助複製過程更快完成(或成本更低),因為您可以用一些額外的 CPU 時間來換取較少的流經網路的資料。
然後,目標 rsync 進程將解壓縮數據,然後進一步處理數據並最終將其寫入儲存。
由此可見使用 rsync 在本機複製檔案時開啟壓縮本質上是浪費 CPU 時間,因為所涉及的兩個 rsync 實例之間的連接比所涉及的任何其他 I/O 快得多,並且同一 CPU 將執行資料流的壓縮和解壓縮。在這種情況下,暫時忽略緩存,資料將從磁碟(慢)讀入 RAM,可能在 RAM 中複製(快),然後再次寫出到磁碟(慢)。緩慢的組件將佔據主導地位,並且在 RAM 中複製較少的數據不會顯著加快該過程(並且可能會由於所需的額外處理而減慢速度,這本身很可能需要在 RAM 中複製數據) 。如果你是真的不幸的是,啟用壓縮將使您超出需要使用交換空間來容納記憶體中所有所需資料的限制,這基本上將殺表現。
如今,普通 RAM 可以毫不費力地處理每秒數 GB 的持續傳輸。 7200 rpm 旋轉磁碟機在順序操作中往往會達到約 120-150 MB/s 的最高速度,而隨機檔案 I/O(由 rsync 完成)實際上永遠不會在超過短突發的情況下連續進行。 SSD 在延遲和吞吐量方面都可以做得更好,但仍然數量級比記憶體慢。因此,在本地複製時,您將始終受到 I/O 限制,並且壓縮傳輸中的資料流最好沒有任何區別因為仍然讀取和寫入相同數量的數據,正如我們在上面看到的,這是過程中緩慢的部分。