為什麼手動複製文件後rsync還要複製文件?

為什麼手動複製文件後rsync還要複製文件?

cp ~/1 ~/2 -d -r -v -i我使用 bash將許多資料夾(~54GB)中的許多檔案從 ext4 位置複製到另一個位置。然後我想檢查所有檔案是否都已正確複製,因此我運行了rsync --delete -vturOn ~/1 ~/2,但 rsync 想要複製所有檔案。為什麼是這樣?

PS:我本來打算使用cpwith -a,但使用-d錯誤。

編輯:一個答案這裡引導我使用--itemize-changes顯示>f..t......所有文件的標誌。手冊頁表明,意味著t修改時間不同,類型文件是文件(f),而僅修改項目屬性(.)。它是否正確?那麼改變的只是修改時間嗎?

編輯:我運行了rsync(沒有-n),儘管t修改時間不同,但它繼續再次複製所有文件(實際文件內容),這是意外的,因為 rsync 無論如何都應該進行差異複製,這應該注意嗎?

編輯:停止同步並在沒有-t參數的情況下重新運行。現在,逐項變更顯示為“T”而不是t。如果我希望將來對這些檔案使用 rsync,我似乎必須透過 rsync 複製所有檔案至少一次。

編輯:我刪除了目標文件,並使用帶有-van參數的 rsync 再次複製了所有內容。

答案1

來自 rsync 文件:

Rsync 使用「快速檢查」演算法(預設)來尋找需要傳輸的文件,該演算法會尋找大小或上次修改時間已更改的文件。

此外,當來源和目標都是本地時,預設會rsync使用該選項運行--whole-file

-W, --whole-file

使用此選項時,不使用 rsync 的增量傳輸演算法,而是按原樣發送整個檔案。當來源電腦和目標電腦之間的頻寬高於磁碟頻寬時(特別是當「磁碟」實際上是網路檔案系統時),如果使用此選項,傳輸可能會更快。當來源和目標都指定為本地路徑時,這是預設設置,但前提是沒有有效的批次寫入選項。

我不確定,但聽起來您可能想要這個--checksum選項。

-c, --checksum              skip based on checksum, not mod-time & size

請注意,這需要從磁碟讀取來源檔案和目標檔案來計算校驗和。

更多相關內容:

https://superuser.com/a/118984/219809

https://serverfault.com/a/279346

相關內容