• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:md5sumファイル比較)

md5sumでファイル比較する方法

このQ&Aのポイント
  • ファイルパスが異なっていても、ファイル名とmd5sum値が同じなら同じと判定する方法を教えてください。
  • md5sumコマンドを使用してファイルのmd5sum値を取得した結果、ファイルパスが異なるために比較できない場合、どのように対応すれば良いか教えてください。
  • ファイルパスが異なるが、ファイル名とmd5sum値が同じという条件でファイルを比較する方法をお教えください。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

find /var/log/squid/ -type f -exec md5sum {} \; | cut -d "/" -f1,5 > varlog.txt find /mnt/backup/squid/ -type f -exec md5sum {} \; | cut -d "/" -f1,5 >backup.txt diff -U 0 varlog.txt backup.txt 結果はこんな感じで。 --- varlog.txt 2012-12-31 21:49:55.175255302 +0900 +++ backup.txt 2012-12-31 23:19:36.000000000 +0900 @@ -6 +6 @@ -ff6bf6f97dc90b05a950015c17fb8146 /squid.log-20130202.gz +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /squid.log-20130202.gz 先頭が-の行がvarlog.txtで、+の行がbackup.txt

kureakai
質問者

お礼

>find /var/log/squid/ -type f -exec md5sum {} \; | cut -d "/" -f1,5 > varlog.txt >find /mnt/backup/squid/ -type f -exec md5sum {} \; | cut -d "/" -f1,5 >backup.txt >diff -U 0 varlog.txt backup.txt 教えて頂いた内容が一番簡単に結果を求めることが出来ました。 これなら、簡単に応用も効くし、やりたいこともできますね。 情報ありがとうございました。

その他の回答 (2)

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.2

> 2つのsquid.log-20130202.gz が同じものか比較したいのですが、 ファイルを比較したいだけなら何も md5 にこだわらずに cd /var/log && find ./squid -type f -exec cmp '{}' '/mnt/backup/{}' \; とか、いっそ rsync を --dry-run で動かしてみるとか手はあるけど?

kureakai
質問者

お礼

>ファイルを比較したいだけなら何も md5 にこだわらずに すみません。どうしても今回はmd5なので、md5で質問しました。 >cd /var/log && find ./squid -type f -exec cmp '{}' '/mnt/backup/{}' \; たしかにこれもありですね。 情報ありがとうございました。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

いまいち、やりたいことがよく判らないのですが…… ファイル名が同じでmd5sumが異なった場合はどうしたいのでしょう? とりあえず、掲示されている条件で私がやるとしたら… find /var/log/squid/ -type f -exec md5sum {} find /mnt/backup/squid/ -type f -exec md5sum {} で同じファイルにリダイレクトしてファイル化します。 # 後から実行する方は追記で。 sortコマンドでmd5ハッシュをキーにソートします。 a)1つ目のmd5ハッシュとファイル名(フルパス)をシェル変数に取り込み。 b)2つ目のmd5ハッシュとファイル名(フルパス)も別のシェル変数に取り込み。 c)md5ハッシュを比較。 c-1)違った場合はaに戻る(ファイル名の表示もする…んですかの?) d)basenameコマンドでaで取得したファイル名とbで取得したファイル名を取り出して比較。 d-1)違った場合はaに戻る(ファイル名の表示もする…んですかの?) e)同一のファイルとして表示(パス名も表示するんですかの?) f)aに戻る。 って感じでしょうか……。

kureakai
質問者

お礼

>ファイル名が同じでmd5sumが異なった場合はどうしたいのでしょう? コピーした2つのファイルを比較して、md5値が異なれば違うファイルと判断できると思ったからです。 というか、そのやり方しかあまり思いつかなかったのです。 Linuxあまり詳しくないので…。 >やり方について やり方の提示ありがとうございました。

関連するQ&A