Io

sha1sum 報告校驗和不匹配,即使它們相同

  • July 19, 2020

也許我在這裡做了一些非常愚蠢的事情,但Google在解決問題方面並沒有多大幫助。

我有一個用於備份目的的文件存檔。我從這個檔案中生成了一個 SHA1 校驗和文件:

sha1sum myarchive.tar > myarchive.tar.sha1

該文件的內容如下:

6f5d7bdd71fe25ed8e881265fdb8a8bbcdaa41c1  myarchive.tar

我還在終端中執行了 SHA1 程序,而沒有通過管道傳輸到文件:

sha1sum myarchive.tar

這給了我輸出:

6f5d7bdd71fe25ed8e881265fdb8a8bbcdaa41c1  myarchive.tar

顯然,這些校驗和是相同的。但是,當我執行驗證命令時,存檔及其 SHA1 文件在同一目錄中彼此相鄰:

sha1sum -c myarchive.tar.sha1

我收到一條錯誤消息,指出校驗和不匹配:

myarchive.tar: FAILED
sha1sum: WARNING: 1 computed checksum did NOT match

顯然這裡出了點問題,但我不知道它可能是什麼。任何人都可以啟發我嗎?

編輯:有趣的是,對文件執行兩個連續的 MD5 會產生兩個不同的校驗和。現在我很困惑。

$ md5sum myarchive.tar
9a15036eed341613bbcf2c4b53a09859  myarchive.tar
$ md5sum myarchive.tar
a662d6b469627c62f2b03ee0df067436  myarchive.tar

EDIT2:附加上下文:

  • 這是在真實硬體上(我的 Ubuntu MATE 19.10 台式機)。
  • 我製作的存檔是用於藍光備份光碟的。它的大小為 22.6GB。
  • 對刻錄到藍光光碟的文件執行 SHA1 驗證最終會成功。

EDIT3:響應查看輸出的請求dmesg,似乎有一些錯誤,如下所示:

[ 7102.039819] perf: interrupt took too long (2502 > 2500), lowering kernel.perf_event_max_sample_rate to 79750
[ 8278.017874] sr 4:0:0:0: [sr0] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 8278.017876] sr 4:0:0:0: [sr0] tag#0 Sense Key : Blank Check [current] 
[ 8278.017877] sr 4:0:0:0: [sr0] tag#0 Add. Sense: No additional sense information
[ 8278.017878] sr 4:0:0:0: [sr0] tag#0 CDB: Read(10) 28 00 00 00 00 00 00 00 01 00
[ 8278.017879] blk_update_request: critical target error, dev sr0, sector 0 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 0
[ 8278.019391] sr 4:0:0:0: [sr0] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 8278.019392] sr 4:0:0:0: [sr0] tag#0 Sense Key : Blank Check [current] 
[ 8278.019392] sr 4:0:0:0: [sr0] tag#0 Add. Sense: No additional sense information
[ 8278.019393] sr 4:0:0:0: [sr0] tag#0 CDB: Read(10) 28 00 00 00 00 00 00 00 01 00
[ 8278.019394] blk_update_request: critical target error, dev sr0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 8278.019396] Buffer I/O error on dev sr0, logical block 0, async page read

我認為這與我的 USB 藍光碟機動器有關,儘管有人可以糾正我。

在您的案件中,有兩件事需要仔細調查。


藍光光碟

正如您的輸出片段所證明的那樣dmesg,您的藍光光碟已達到使用壽命。除非藍光碟機動器能夠 100% 良好地讀取藍光光碟上的數據,否則無法修復該光碟,目前這是不可能的。

關於藍光光碟的個人建議:如果我必須使用我的藍光碟機動器刻錄某些東西,我肯定會使用 M-Disc ( wiki ) 藍光光碟。對於高度敏感的數據,它接近完美的儲存。


電腦的儲存

如果從您的儲存中讀取,從您的電腦儲存中讀取的不同的連續校驗和會更困擾我,也就是說。理論上你可能有壞的記憶體,但這不太可能。我的建議是長時間觀看dmesg手冊頁)的輸出,此類命令的範例如下:

\dmesg --human --color=auto --ctime --level=err,warn --follow

這可以幫助您確定您的儲存(無論是經典的 SATA HDD 還是現代 M.2 NVMe SSD)是否出現故障。如果您發現儲存確實存在問題,最好準備好備份。


我希望這個答案可以幫助處於類似位置的人。

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