rsyncがディレクトリが同じであることを確認するための最も迅速で信頼性の高い方法ですか?

rsyncがディレクトリが同じであることを確認するための最も迅速で信頼性の高い方法ですか?

修正する:もう一度読んでみると良い質問ではないようです。私の考えでは、このようなことを尋ねなければならないと思います。どのくらい信頼できますかrsync -aP --dry-run /origin /dest。もちろん、最も信頼できる方法がデータの整合性を確認する最速の方法ではありません。

答えは、rsyncがこれらのオプション(およびいくつかの失敗シナリオ)で何をするのかを滑らかに説明し、diffの実行内容に関する情報を提供するので、質問を残します。


問題は340GBフォルダをコピーしましたが、コピーが成功したことを確認したいと思います。rsync -aP /origin /destあるext4パーティションから別のパーティションにコピーします。

diff -r /origin /dest私は比較ソースとターゲットディレクトリを使用するのに非常に(非常に)長い時間がかかることを知っています。その後、ディレクトリを比較するために使用できると思いましたrsync -aP --dry-run /origin /dest。それから時間がかかりました。5秒(!)。 (私はtimeそれを測定するためにコマンドの前にこれを使用します。)

rsync -aP以来「デルタファイルリストを送信」メッセージだけが表示され、他のものは何も表示されません(他のファイルやコピーされていないファイルが一覧表示されます)。これは、両方のディレクトリが同じであることを確認するための最速かつ信頼性の高い方法であるという結論を下しました。 (オプションを使用する限り、rsync -aファイルとディレクトリも所有者、権限、変更時間などが同じです...-P意味します--progress。)

私は正しいですか?rsync -aP --dry-run /origin /destディレクトリが同じであることを確認するための最も迅速で信頼性の高い方法は何ですか?

答え1

diff を使用すると、常にファイルの内容を読み取って内容の違いを見つけます。

デフォルトでは、rsync は、ファイル名、変更時間、ファイルサイズが 2 つの間で同じ場合、ファイルの内容を読みません。同じであれば、ファイルの内容が同じであると仮定して読みません。これにより、すでに同じ(またはほぼ同じ)ディレクトリの速度がはるかに高速になります。

ほとんどの場合、この動作は問題ではありません。同期の前後にファイルが同じ変更時間を持つために同じ1秒ウィンドウ内で変更されることは非常にまれです。そして同じファイルサイズを維持してください。そんなことがあっても大きな影響を与えることはほとんどありません。

--ignore-timesコマンドラインオプションを使用すると、rsyncに変更時間(またはサイズ)に関係なく常にファイルの内容を読み取ることができます。

答え2

速度と信頼性はしばしば反対の要件です。diff(またはcmp)は、ファイルを少しずつ比較して、最も多くの情報を提供します。信頼できる答え。 (diff -qファイルが同じかどうかを知りたいときに使用してください。)

速度を上げるには、ファイルの読み取りを完全にスキップし、タイムスタンプに依存するか、データ転送をスキップする必要があります。これは、ディスクI / Oが速度制限要因である可能性があるシステムでは大きな問題ではない可能性があります。

ファイルが別のシステムにあり、同様のシステムがあるmd5sum場合、または類似のシステムがある場合は、次のようにします。

cd /somewhere ; find . -type f | xargs -d '\n' md5sum > /tmp/checksums

両端を確認し、出力ファイルを比較します。これにより、データ全体ではなくハッシュ値のみを転送できます。 (またはsha512sumより強力な検査が必要な場合)rsync -c明らかにまたMD5は内部で使用されます。


タイムスタンプの確認とデータ全体の読み取りの選択は、エラーの原因が何であるかによって異なります。メタデータを確認すると、すべての項目がコピーされる前にコピープロセスが終了したことがわかりますが、コピーされた実際のデータは確認されません。自動データ破損を検出するために、データは完全に完全な読み取りが必要で、データ全体またはチェックサムのみが比較されます。 rsync を使用すると、rsync -i -cチェックサムが一致しないファイルのリストが出力され、再度コピーされます。

関連情報