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

  • このエントリーをはてなブックマークに追加
  • LINEで送る
この記事は 2019年7月26日 に書かれたものです

小ネタです。
例えば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ではない行が存在すればエラーというお手軽ロジックです。

コメント

コメント欄は休止中です。お問い合わせはこちらからどうぞ。ご質問はTwitterにリプを投げてください。

このブログを応援する

お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。

PayPal(ペイパル)
PayPalで300円支払う
※金額は任意で変更できます。
※100円でも泣いて喜びますw
※住所の入力欄が現れた場合は「no needed」を選択ください
これまでのご協力者さま
- Sponsored Link -