ファイルを比較する

大容量,大量のファイルをコピーまたは転送などした後に,それらが本当にエラー無く正しく処理されたことを確かめるにはどうすればよいか?

とりあえずテキストファイルの場合はdiffという超有名なコマンドがある訳ですが,今回はバイナリファイルも比較しなければなりません.

テキスト,バイナリの区別無くファイルを比較するコマンドにcmpがあるようです.
しかし,あるディレクトリに対して再帰的に比較をするオプションは無いようです.ちょっと使い辛いです.findなどで列挙しながら流し込む…などの工夫が必要でしょう.

diffには-aというオプションがあり,これを指定すると全てのファイルをテキストと見なすようです.しかし付けなくても比較はしてくれるようです…要調査ですね.

rsyncには-nというオプションがあり,これを指定すると実際にコピーやファイル転送などの作業はしませんが,比較の処理や出力するメッセージは実際に作業を行った場合と同等なものになるようです.

ということで,次のような三つのone linerを思いつきました.

$ diff -aqr SRC_DIR COPIED_DIR
$ diff -qr SRC_DIR COPIED_DIR
$ rsync -nrv SRC_DIR DIST_DIR

これらはまだ未検証なので何とも言えません.
他に何か良い方法をご存知の方がいらっしゃいましたら,是非教えて下さい!

ちなみにWindowsの場合はWinMergeという高機能な比較ツールがあります.