[Linux] MD5の値を大量にチェックする

  • このエントリーをはてなブックマークに追加
  • LINEで送る

小ネタです。
例えばsplitコマンドなどで分割したファイルをダウンロードした際に、一つ一つMD5の値を確認するのはダルいですよね。md5sumコマンドでは、予め検証したいファイルのパスとそのMD5の値をペアで記述されたファイルを用意しておくと、一発で確認することでができます。

定義ファイルは以下のようにMD5値と、ファイルのパスを半角スペースなどで区切って書きます。

$ cat MD5SUM
f64062373f79e3fdabed57f6aec6d54d data/foo.zip.1
89063c79371e866afe627ddc221d3a9e data/foo.zip.2
993e1252af0e1fbd2435dcadd2a9fead data/foo.zip.3

あとは-cオプションでこの定義ファイルを渡せば自動的にチェックしてくれます。

$ md5sum -c MD5SUM
data/foo.zip.1: OK
data/foo.zip.2: OK
data/foo.zip.3: OK
- Sponsored Link -

エラーパターン

エラーになる場合は次のような表示になります。

ファイルが存在しない。

md5sum: stat 'data/bar.zip': No such file or directory

MD5チェックサムの値が異なる。

data/foo.zip.2: FAILED

定義ファイルにかかれているMD5チェックサムの長さが異なる。以下は1byte分削除した際のメッセージ。こちらはエラーではなく警告、そのため処理は続行されます。

Warning: Hash size is wrong, maybe you want to use 'sha1sum' or 'ripemd160sum'

BASHで結果をチェック

シェルスクリプトでmd5チェックサムの結果がすべて正しかった場合にのみ処理を継続したい場合は、以下のように記述します。

#!/bin/bash

if md5sum -c MD5SUM | grep -Ev 'OK$' > /dev/null; then
  echo '[ERROR] 正常に保存されていないファイルがあります'
  exit 1
else
  echo 'OK'
fi

grepコマンドでOKではない行が存在すればエラーというお手軽ロジックです。

- Sponsored Link -

ご質問やリクエストなどお気軽に。メールアドレスの入力は任意です。書き込みが反映されるまで時間がかかります。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください