flea heart なwiki - コピーしたファイルがちゃんとコピーされているか確認したい
すんごい大事なファイルは消えてしまわないように大切にバックアップとかして扱っていると思います。
その大切なファイルをバックアップ先にコピーしても、「失敗してるんじゃ。。。」と不安になってしまう人がいるかもしれません。 私のように。

こんな場合はデータ改ざんチェックで使われるMD5やSHA1を使ってコピー前後のファイルを比較してやりましょう!
MD5やSHA1はファイルが少し破損していたり、変わったりしているだけでも、結果が大きく違うのでひと目で分かるのが特徴です。 といっても今回は機械にチェックを任せますが....

ファイルのMD5チェックサムをファイルリストに出力する

また1つ1つファイルをチェックするのはさすがにしんどいので、find を使ってテキストに出力して、比較してやります。


これをコピー前後でたとえば「backup.org」と「backup.new」で作ってやります。 ちなみに上のコマンドを説明すると
コマンド意味
find . -type f現在のディレクトリ配下でファイルを抽出する(これでファイルのリストが出来上がります)
while read f出来上がったファイルリストから1つずつレコードを取り出して「f」という変数に代入します
md5sum "$f"ファイルf のMD5のチェックサムを計算します
>> ~/backup.org計算したチェックサムの結果を自分のホームディレクトリに「bakcup.org」で追加出力します
do 〜 doneこの間を計算対象のファイルがなくなるまで繰り返します

「md5sum」の代わりに「sha1sum」や「sha512sum」などいろいろな方法があります。 「md5sum」は改ざんチェックの中でも最低レベルに属するチェック計算ですが、sha512sumとかを使うと計算に時間がかかってしまって終わりません。 どうしてもという方は止めませんので、こちらをどうぞ。

参考までに出力されたファイルはこのようになってます。 最初の列はMD5のチェックサム、2番めはファイルです。


出力したファイルをソートする

残念ながら出力したファイルはコピー前後ご同じ並びとは限りません。 なのでソートして順番を合わせてやります。
sort -k 2,2 backrup.org > Backup.org


パス名でsortするので2番めのフィールドでソートするために、「sort -k 2,2」を使っています。

ファイルを比較する

ファイルの比較は簡単です。 diff するだけです。
diff Backup.org Backup.new


なにも表示されなければ同じものです。 仮に違う場合は以下のように違う行を中心に差分が表示されます。


このようなときはファイルを一旦削除して再度コピー&チェックを行えばよいのです。