我有一张物理刻录的CD和它的原始ISO映像。没有为CD内容提供参考校验和文件。如何检查实际的CD是否正确(与原始图像相对应)并且完全可读?
md5sum
如果您不想引导CD / DVD,也可以自己运行并进行比较。
我有一张物理刻录的CD和它的原始ISO映像。没有为CD内容提供参考校验和文件。如何检查实际的CD是否正确(与原始图像相对应)并且完全可读?
md5sum
如果您不想引导CD / DVD,也可以自己运行并进行比较。
Answers:
首先,将CD翻录到一个临时文件中:
dd if=/dev/sr0 of=copy.iso
然后检查是否copy.iso
和orig.iso
大小相同,例如:
stat -c '%s %n' orig.iso copy.iso
如果大小相同,则很简单:
sha1sum orig.iso copy.iso
但是我注意到,在某些情况下,大小可能会略有不同,因为副本或原始图像中都有尾随零。例如,如果copy.iso
小于orig.iso
:
sha1sum copy.iso
head -c $(stat -c %s copy.iso) orig.iso | sha1sum
当然,您还应该检查尾随字节是否为零:
od -j $(stat -c %s copy.iso) orig.iso
除偏移量外,第一行应仅为零。第二行应为星号。星号是为了避免显示连续的相同行。
head -c $(stat -c %s /path/to/master.iso) /dev/sr0 | sha1sum
可以避免制作已刻录CD的映像。
如果您仍然有ISO,可以使用逐字节比较它们cmp
。这是一个非常简单的命令,它会在找到的第一个差异处退出,因此比在早期确实存在错误时进行校验和要快得多。
cmp /dev/cdrom /path/cdrom.iso
成功的可能结果:
&& echo OK
如果缺少输出会使您感到困惑,则可以追加命令。cmp: EOF on cdrom.iso
:相同,但是cdrom的字节数比iso文件更多。这通常是由于CDROM末尾的填充为零。由于这在实践中无关紧要,因此仍然是成功的。失败的可能结果:
cmp: EOF on /dev/cdrom
:出于某些原因,您CDROM上的数据不完整。也许您的ISO太大而无法放入真正的CD。/dev/cdrom cdrom.iso differ: byte 18296321, line 71780
:CDROM和ISO映像之间有一些意外的差异。如果ISO文件与用于刻录CD的文件相同,那么这是我的两个收藏夹:
diff /dev/sr0 /tmp/file.iso
将记录的图像与图像文件进行比较。如果您觉得受虐程度更高,可以尝试执行以下操作:
sha1sum /dev/sr0 /tmp/file.iso
并比较签名。如果您已经有SHA1的总和,则此功能更有用。这两个命令都会将介质读到末尾。
如果要按照@ Marki555的建议进行操作,则需要先安装光盘驱动器和映像。这是一个完整的脚本:(当然,sudo
如果您是root ,则可以免除-通常是个坏主意)
sudo mkdir /tmp/{a,b}
sudo mount /dev/sr0 /tmp/a -o ro # or whatever
sudo mount /tmp/file.iso /tmp/b -o loop,ro
diff -dur /tmp/{a,b}
sudo umount /tmp/a
sudo umount /tmp/b
sudo rmdir /tmp/{a,b}
cmp [-l]
更适合二进制文件。Diff在文本上效果最好。
Brasero可以做到:工具->检查完整性...