Zip
遞歸驗證 CRC (CRC32) 雜湊的命令
使用命令
md5sum
,sha1sum
,sha256sum
我可以獲取每行包含雜湊和路徑的文本文件,並在單個命令中驗證整個文件列表,例如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。
例子
$ 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
- 將計算值與文件中的值進行比較
- 列印結果