Io
sha1sum 報告校驗和不匹配,即使它們相同
也許我在這裡做了一些非常愚蠢的事情,但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)是否出現故障。如果您發現儲存確實存在問題,最好準備好備份。
我希望這個答案可以幫助處於類似位置的人。