Rsyncを使用する場合、rsyncが実行されたすべてのファイルをコピーしないことがあります。以下は、私が使用するコードです。チェックサムを実行するか、rsyncの後ですべてのファイルがコピーされたかどうかを確認し、そうでない場合はすべてのファイルがコピーされるまで再試行する方法ですか?
TEMP="/home/user/temp"
OPTS="-rav -h"
rsync $OPTS --stats [email protected]:/home/user/Local $TEMP
これは、rsync
を適切に構成することで最もよく解決されると思います。 man
ページを読んでください:)オプションがあります(これには--checksum
など)。
これは自分で行うこともできます。
find
rsyncされたディレクトリ内のすべてのファイル。xargs md5sum
すべてのファイルのチェックサムを取得しますmd5sum
チェックサム両側(ローカル/リモート)でこれを行うと、比較するチェックサムがあります。
Uʍopǝpısdnの答えが示唆するように、rsync -c
またはrsync --checksum
あなたが必要なことをするかもしれません。
-c、-checksum:mod-timeとsizeではなく、チェックサムに基づいてスキップします
これにより、送信者は128ビットのMD4チェックサムを使用してすべての通常のファイルをチェックサムする必要があります。これは、使用可能なすべてのファイルのリストを作成するときに、最初のファイルシステムスキャン中に実行されます。次に、受信者は、更新する必要のあるファイルを決定するために、各ファイルのバージョン(存在し、送信側の対応するファイルと同じサイズの場合)をチェックサムします。サイズが変更されたファイルまたはチェックサムが変更されたファイルが選択されます。転送。接続の両側にあるすべてのファイルのこのファイル全体のチェックサムは、ファイルの転送中に行われる自動チェックサム検証に加えて行われるため、このオプションは非常に遅くなる可能性があります。
Rsyncは、転送された各ファイルがファイル全体のチェックサムをチェックすることによって受信側で正しく再構築されたことを常に検証しますが、転送後の自動検証は、このオプションの転送前の「このファイルは必要ですか?」とは関係ありません。更新しますか?」小切手。
これが遅いという懸念は、最近はおそらく関係ありません。これは、変更時間に依存できない、または依存したくない場合に適したオプションのようです。
使用する rsync -Pahn --checksum /path/to/source /path/to/destination | sed '/\/$/d' | tee migration.txt
sed
は、チェックサム検証からディレクトリを削除します。 tee
は、画面とファイルに同時に出力します。
非常に大きなファイルがある場合、検証に時間がかかるため、これは適切な方法ではない可能性があることに注意してください。