web-dev-qa-db-ja.com

CRC(CRC32)ハッシュを再帰的に検証するコマンド

コマンドmd5sumsha1sumsha256sumを使用すると、ハッシュと1行あたりのパスを含むテキストファイルを取得し、sha1sum -c mydir.txtのように1つのコマンドでファイルのリスト全体を確認できます。 (上記のテキストファイルは、findなどのループで簡単に作成できます。)

CRC/CRC32ハッシュのリストで同じことを行う方法はありますか?

このようなハッシュは、多くの場合、Zip自体や7zなどのZipのようなアーカイブ内に保存されます。例えば:

$ unzip -v archive.Zip 
Archive:  archive.Zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
 8617812  Stored  8617812   0% 12-03-2015 15:20 13fda20b  0001.tif

または:

$ 7z l -slt archive.7z

Path = filename
Size = 8548096
Packed Size =
Modified = 2015-12-03 14:20:20
Attributes = A_ -rw-r--r--
CRC = B2F761E3
Encrypted = -
Method = LZMA2:24
Block = 0
1
Nemo

crc32ユーティリティには、-csha1sumのようなオプションはありません。それでも、検証はスクリプトで実行できます。

Sha1sumが値を出力するのと同じ形式でcrc32値をファイルに保存したとしましょう。

a8374911 *file1.ext
32c5188e *file2
6592d5e5 *bflmpsvz

Crc32は、bashスクリプトを介して確認できます。

while read line
do 
   name=${line#* \*}
   crc32=`crc32 "$name"`
   echo -n "$name: "
   if [ "${line% \**}" == "$crc32" ]
   then
      echo OK
   else
      echo FAILED
   fi
done < file_with_crc32

スクリプトは、sha1sum -cと同じ出力を提供します。ファイルfile_with_crc32のすべての行と各行を繰り返し処理します

  • 読み取り行からファイル名を取得します
  • crc32を計算します
  • 計算された値をファイルの値と比較します
  • 結果を出力します
2
Zaboj Campula