web-dev-qa-db-ja.com

rsyncは、ディレクトリが同一であるかどうかを確認するための最も速くて最も信頼できる方法ですか?

PDATE:これをもう一度読んで、良い質問ではなかったことがわかります。 rsync -aP --dry-run /Origin /destの信頼性について質問する必要があったと思います。もちろん、最も信頼性の高い方法は、データの整合性をチェックする最速の方法ではありません。

答えは、rsyncがこれらのオプション(およびいくつかの失敗シナリオ)で何をするかを穏やかに説明し、diffが何をするかからわかるので、この質問をそのままにしておきます。


問題は次のとおりです。340GBのフォルダーをコピーし、コピーが成功したかどうかを確認したかったのです。コピーは、rsync -aP /Origin /destを使用して1つのext4パーティションから別のext4パーティションに作成されました。

diff -r /Origin /destを使用して起点ディレクトリと宛先ディレクトリを比較すると、非常に(非常に)長い時間がかかることを私は知っています。次に、rsync -aP --dry-run /Origin /destを使用してディレクトリを比較できると思いました...そして5秒(!)かかりました。 (測定するコマンドの前にtimeを使用しました。)

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

私は正しいですか? rsync -aP --dry-run /Origin /destは、ディレクトリが同一であるかどうかを確認するための最も高速で信頼性の高い方法ですか?

5
yuric

Diffを使用すると、常にファイルの内容を読み取り、内容の違いを検出します。

Rsyncは、デフォルトでは、ファイル名、変更時間、ファイルサイズが同じである場合、ファイルの内容を読み取りません。これらが同じである場合、ファイルの内容は同じであると見なされ、わざわざそれらを読み取ることはありません。これにより、すでに同じ(またはほぼ同じ)ディレクトリで桁違いに高速になります。

ほとんどの場合、この動作は問題ではありません。ファイルが同期の前後の両方で、同じ変更時間を同じ1秒のウィンドウ内で変更されることは非常にまれであるため、および同じファイルサイズを維持します。そして、それが起こったとしても、それがそれほど重要になることはめったにありません。

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

7
trr