Zip

遞歸驗證 CRC (CRC32) 雜湊的命令

  • June 8, 2020

使用命令md5sum, sha1sumsha256sum我可以獲取每行包含雜湊和路徑的文本文件,並在單個命令中驗證整個文件列表,例如sha1sum -c mydir.txt. (所述文本文件很容易通過循環find或其他方式生成。)

有沒有辦法對 CRC/CRC32 雜湊列表做同樣的事情?

此類雜湊通常儲存在類似 zip 的檔案中,例如 ZIP 本身或 7z。例如:

$ 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

嘗試 RHash

嘗試RHash

CygwinDebian的軟體包。

例子

$ echo -n a > a.txt; echo -n b > b.txt; echo -n c > c.txt
✔

$ rhash --crc32 --simple *.txt > checksums.crc32
✔

$ cat checksums.crc32
e8b7be43  a.txt
71beeff9  b.txt
06b9df6f  c.txt
✔

$ rhash --crc32 --check checksums.crc32
--( Verifying checksums.crc32 )-------------------------------------------------
a.txt                                               OK
b.txt                                               OK
c.txt                                               OK
--------------------------------------------------------------------------------
Everything OK
✔

注1:–簡單格式

如果您不使用--simple格式化選項,則 rhash 將預設為不同的格式。這可能不是你想要的:

$ rhash --crc32 *.txt
; Generated by RHash v1.3.7 on 2020-06-03 at 16:02.51
; Written by Kravchenko Aleksey (Akademgorodok) - http://rhash.sf.net/
;
;            1  15:58.36 2020-06-03 a.txt
;            1  15:58.36 2020-06-03 b.txt
;            1  15:58.36 2020-06-03 c.txt
a.txt E8B7BE43
b.txt 71BEEFF9
c.txt 06B9DF6F
✔

注 2: –all 選項

如果您想發瘋:嘗試一次獲取所有支持的雜湊的--all選項。

crc32實用程序沒有類似的-c選項sha1sum。然而,驗證可以在腳本中完成。

假設我們以與 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
  • 將計算值與文件中的值進行比較
  • 列印結果

引用自:https://unix.stackexchange.com/questions/250197