Linux便利コマンド : md5sum

うめだ
2023-05-11
2023-06-09
目次

はじめに

みなさま、md5sumコマンドを活用されてますでしょうか?

ハッシュ計算についてはそこまで詳しく理解している訳ではありません。
このコマンドの用途としては、ファイルの比較です。

OSS等、ファイルのダウンロードサイトにて、該当のファイル名とあわせて、ハッシュ値が記載されていることがあると思います。

該当ファイルに対して何らかのハッシュ関数で算出された値となっており、ダウンロードしたファイルに対して、ハッシュ計算を行い、記載された値と比較し、マッチしていれば、破損等なく、正常にダウンロードが完了したことを確認できるようになっています。

サーバーの運用業務として、リプレイスを行う際などに、特定の設定ファイルが、現サーバーと同じ内容になっているかをチェックするときに利用しています。

そこで、私がいつもどういうふうに使っているかを紹介します。

環境

OS : AlmaLinux 8
md5sumバージョン : 8.30

使い方

まずはサンプルファイルを作成します。

$ mkdir -p testdir/confdir_A testdir/confdir_B
$
$ ls -lR testdir
testdir:
total 0
drwxrwxr-x 2 future future 6 May  4 17:36 confdir_A
drwxrwxr-x 2 future future 6 May  4 17:36 confdir_B

testdir/confdir_A:
total 0

testdir/confdir_B:
total 0
$
$ echo "sample  = 001" > testdir/confdir_A/sample001.conf
$ echo "sample  = 001" > testdir/confdir_B/sample001.conf
$ echo "sample  = 002" > testdir/confdir_A/sample002.conf
$ echo "sample  = 002" > testdir/confdir_B/sample002.conf
$
$ ls -lR testdir
testdir:
total 0
drwxrwxr-x 2 future future 50 May  4 17:37 confdir_A
drwxrwxr-x 2 future future 50 May  4 17:37 confdir_B

testdir/confdir_A:
total 8
-rw-rw-r-- 1 future future 14 May  4 17:37 sample001.conf
-rw-rw-r-- 1 future future 14 May  4 17:37 sample002.conf

testdir/confdir_B:
total 8
-rw-rw-r-- 1 future future 14 May  4 17:37 sample001.conf
-rw-rw-r-- 1 future future 14 May  4 17:37 sample002.conf
$

ディレクトリ:confdir_Aとconfdir_Bにそれぞれ、ファイル:sample001.confとsample002.confを作成しました。同じ内容でファイルを作成しましたので、md5sumの結果は値になるはずです。

では確認してみましょう。

$ find testdir/confdir_A -type f | xargs md5sum
887eec73cf61dc5e5a4d3339dc46d348  testdir/confdir_A/sample001.conf
b10b42b748070f2715486095e5948a18  testdir/confdir_A/sample002.conf
$
$ find testdir/confdir_B -type f | xargs md5sum
887eec73cf61dc5e5a4d3339dc46d348  testdir/confdir_B/sample001.conf
b10b42b748070f2715486095e5948a18  testdir/confdir_B/sample002.conf
$

ディレクトリ:confdir_Aとconfdir_B それぞれの配下のファイルに対してmd5sumを実行した結果は同じ値になりました。

次に、sample003.confを作成します。

$ echo "sample  = 003" > testdir/confdir_A/sample003.conf
$ cat testdir/confdir_A/sample003.conf | sed -E "s/\s{2}/\t/g" > testdir/confdir_B/sample003.conf

ディレクトリ:confdir_B配下のsample003.confは連続するスペースをタブに変換してみました。

以下の通り、見た感じ内容は同じです。

$ head testdir/confdir_A/sample003.conf testdir/confdir_B/sample003.conf
==> testdir/confdir_A/sample003.conf <==
sample  = 003

==> testdir/confdir_B/sample003.conf <==
sample  = 003
$

では、md5sumの値を確認してみましょう。

$ find testdir/confdir_A -type f | xargs md5sum
887eec73cf61dc5e5a4d3339dc46d348  testdir/confdir_A/sample001.conf
b10b42b748070f2715486095e5948a18  testdir/confdir_A/sample002.conf
c6ac9f9449ebcd2120c8e01d2b29326a  testdir/confdir_A/sample003.conf
$
$ find testdir/confdir_B -type f | xargs md5sum
887eec73cf61dc5e5a4d3339dc46d348  testdir/confdir_B/sample001.conf
b10b42b748070f2715486095e5948a18  testdir/confdir_B/sample002.conf
b275bdf052bf96d25dc211a62b0fd12d  testdir/confdir_B/sample003.conf
$

sample003.confの値が違っているのがわかると思います。

まとめ

いかがでしたか?

目視でのハッシュ値比較には限界がありますので、実行結果をテキストファイルに出力させて、diffで差分確認すれば、簡単にチェックできます。

ぜひ、md5sumコマンドを活用してみてください。