我有一张物理刻录 CD 和它的原始 ISO 映像。没有为 CD 内容提供参考校验和文件。如何检查实际 CD 是否正确(对应于原始图像)并且完全可读?
如果您还有 ISO,则可以使用cmp. 这是一个足够简单的命令,它在它找到的第一个差异时退出,因此如果早期确实存在错误,它比进行校验和快得多。
cmp /dev/cdrom /path/cdrom.iso
Run Code Online (Sandbox Code Playgroud)
成功的可能结果:
&& 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 映像之间存在一些意外差异。小智 5
首先,您将 CD 翻录到一个临时文件中:
dd if=/dev/sr0 of=copy.iso
Run Code Online (Sandbox Code Playgroud)
然后检查copy.iso和orig.iso是否具有相同的大小,例如:
stat -c '%s %n' orig.iso copy.iso
Run Code Online (Sandbox Code Playgroud)
如果大小相同,则很容易:
sha1sum orig.iso copy.iso
Run Code Online (Sandbox Code Playgroud)
但我注意到在某些情况下,大小可能会略有不同,因为副本或原始图像中都有尾随零。例如,如果copy.iso小于orig.iso:
sha1sum copy.iso
head -c $(stat -c %s copy.iso) orig.iso | sha1sum
Run Code Online (Sandbox Code Playgroud)
当然,您还应该检查尾随字节是否只是零:
od -j $(stat -c %s copy.iso) orig.iso
Run Code Online (Sandbox Code Playgroud)
除了偏移量之外,第一行应该只为零。第二行应该是星号。星号是为了避免显示连续的相同行。
dd您可以使用(例如)检查 CD 是否完全可读dd if=/dev/cdrom of=/dev/null。但您无法将其直接与 ISO 映像进行比较。每个软件都会创建略有不同的 ISO 文件(可能有一些不同的标头或填充),尽管这些不同的 ISO 映像都将提供相同的 CD 内容(目录结构、文件属性和文件内容)。
所以你只能挂载 CD,挂载 ISO 映像并使用某种目录比较工具在文件系统级别进行比较(抱歉,我在 Linux 上还没有使用任何工具)。
| 归档时间: |
|
| 查看次数: |
12689 次 |
| 最近记录: |