簡體   English   中英

rsync如何對rsync執行校驗和

[英]rsync how to do a checksum on rsync

使用rsync時有時rsync不會復制完成的所有文件,下面是我使用的代碼。 它們是一種在rsync之后進行校驗和檢查的方法,看看是否所有文件都已被復制,如果沒有復制,直到所有文件都被復制了?

TEMP="/home/user/temp"
OPTS="-rav -h"

rsync $OPTS --stats user@example.com:/home/user/Local $TEMP

正如uʍopǝpısdn的回答所暗示的那樣, rsync -crsync --checksum可能會滿足您的需求。

-c, - checksum:基於校驗和跳過,而不是模態時間和大小

這會強制發送方使用128位MD4校驗和對每個常規文件進行校驗和。 它在初始文件系統掃描期間執行此操作,因為它構建了所有可用文件的列表。 接收器然后校驗其每個文件的版本(如果它存在並且它具有與其發送方對應的相同的大小)以便決定需要更新哪些文件:具有改變的大小或改變的校驗和的文件被選擇用於傳遞。 由於除了在文件傳輸期間發生的自動校驗和驗證之外,還會發生連接兩端所有文件的整個文件校驗和,因此該選項可能非常慢。

請注意,rsync始終通過檢查其整個文件校驗和來驗證每個傳輸文件是否在接收端正確重建,但是自動傳輸后驗證與此選項在傳輸之前無關“此文件是否需要要被更新?” 校驗。

對於這種緩慢的擔憂現在可能不相關,當你不能或不想依賴修改時間時,這似乎是一個很好的選擇。

我認為通過正確配置rsync可以最好地解決這個問題。 閱讀man頁:)有選項(比如--checksum )。

你也可以自己做這件事:

  1. find rsync'd目錄中的所有文件。
  2. xargs md5sum獲取所有文件的校驗和
  3. md5sum校驗和

如果你在雙方(本地/遠程)這樣做,你將有一個校驗和進行比較。

使用rsync -Pahn --checksum /path/to/source /path/to/destination | sed '/\\/$/d' | tee migration.txt rsync -Pahn --checksum /path/to/source /path/to/destination | sed '/\\/$/d' | tee migration.txt

sed從校驗和驗證中刪除目錄。 tee輸出到屏幕和文件。

請記住,如果您有非常大的文件,這可能不是一個合適的方法,因為驗證需要很長時間。

資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM