
我使用以下命令將大量大視訊檔案複製到外部磁碟機。
rsync -Ph --inplace /Volumes/Production/Prefix* Prefix
我們停電了,複製中斷了。使用rsync,重新啟動它沒有問題,但問題是它需要相當長的時間才能恢復到原來的位置。它會遍歷每個文件,看起來就像讀取了整個文件。據報道,當它再次開始複製時,它的速度比平常快大約 3-5 倍。
這段時間它到底在做什麼?是通讀整個文件並將其與來源文件進行比較嗎?還是它正在做其他奇特的事情?有沒有辦法讓 rsync 更快跳過已完成的檔案?例如告訴它只檢查具有不同檔案大小的檔案或其他檔案?
答案1
問題的原因不是-t
在-a
-t
以前的運行rsync。
-t
為了在複製時保留檔案修改時間是必要的,這樣一旦複製,目標檔案的最後修改時間將與原始檔案的最後修改時間相同。如果沒有這個, rsync 的後續運行將不會將任何目標檔案視為與原始檔案匹配,並且將始終更新它們。
Rsync的比較行為
預設情況下,如果現有目標檔案的上次修改時間和檔案大小與來源檔案匹配,則 rsync 將跳過現有目標檔案。
從此恢復
如果您確信沒有其他軟體同時修改了目標檔案並且只想恢復,則可以使用該--size-only
選項。這會修改比較行為,如果文件大小匹配,rsync 將跳過現有目標文件,而不檢查上次修改時間。
將來您將遇到的問題是,如果您想再次同步目錄,您仍然需要文件修改時間匹配,或者您需要忽略修改時間並相信文件沒有被其他人修改過軟體(以不改變大小的方式)。
選項說明
預設 rsync 比較:如果檔案大小和上次修改時間匹配,則跳過。
--size-only
:如果檔案大小匹配,則跳過。--ignore-times
: 永遠不要跳過。文件時間和尺寸被忽略。--checksum
:如果檔案大小匹配,則計算兩個檔案的校驗和,如果匹配,則跳過。
此--size-only
選項使跳過檔案的可能性更大,而--ignore-times
和--checksum
選項則使跳過檔案的可能性較小。
答案2
rsync
有一個選項:--size-only
它可以滿足您的需求。
答案3
預設情況下,Rsync 檢查檔案的修改時間和大小。如果添加 --checksum,那麼它將與整個文件進行比較(即:無論 mod-time 和大小匹配如何)。
答案4
由於您沒有對存檔執行 -a 操作,因此它沒有複製多次,因此由於時間戳記不匹配,它認為它們是不同的文件,然後對整個文件進行校驗和。
如果您要製作時間戳可以/應該匹配的副本:始終包含-a
.
現在(雖然很久以前)你可以嘗試添加--ignore-times