也许我在这里做了一些非常愚蠢的事情,但谷歌在解决这个问题方面并没有多大帮助。
我有一个用于备份目的的文件存档。我已从此存档生成了 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)是否出现故障。如果你真的发现那里是您的存储有问题,最好准备好备份。
我希望这个答案对处于类似位置的人有所帮助。