cp ~/1 ~/2 -d -r -v -i
我使用 bash將許多資料夾(~54GB)中的許多檔案從 ext4 位置複製到另一個位置。然後我想檢查所有檔案是否都已正確複製,因此我運行了rsync --delete -vturOn ~/1 ~/2
,但 rsync 想要複製所有檔案。為什麼是這樣?
PS:我本來打算使用cp
with -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
請注意,這需要從磁碟讀取來源檔案和目標檔案來計算校驗和。
更多相關內容: