sha1sum 报告校验和不匹配,即使它们相同

sha1sum 报告校验和不匹配,即使它们相同

也许我在这里做了一些非常愚蠢的事情,但谷歌在解决这个问题方面并没有多大帮助。

我有一个用于备份目的的文件存档。我已从此存档生成了 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

编辑2:附加上下文:

  • 这是在真实硬件上(我的 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 蓝光驱动器有关,尽管有人可能能够纠正我。

答案1

在您的案例中,有两件事需要进行仔细的调查。


蓝光光盘

正如您的输出片段所证明的那样dmesg,您的蓝光光盘已达到使用寿命。没有办法使固定除非蓝光驱动器能够 100% 正确地读取蓝光光盘上的数据,但目前这是不可能的。

个人对蓝光光盘的推荐:如果我出于某种原因必须使用蓝光驱动器来刻录某些内容,我肯定会使用 M-Disc(维基百科) 蓝光光盘。对于高度敏感的小的数据存储接近完美。


您计算机的存储

从您的计算机存储中读取的不同的连续校验和会让我更烦恼,如果这是从您的存储中读取的话。理论上,你的内存可能很差,但这种可能性不大。我的建议是观察dmesg(手册页)在很长一段时间内,此类命令的示例如下:

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

这可以帮助您确定您的存储(无论是经典 SATA HDD 还是现代 M.2 NVMe SSD)是否出现故障。如果你真的发现那里您的存储有问题,最好准备好备份。


我希望这个答案对处于类似位置的人有所帮助。

相关内容