取得 rsync 以跳過相同大小的文件

取得 rsync 以跳過相同大小的文件

我使用以下命令將大量大視訊檔案複製到外部磁碟機。

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

相關內容