计算 CD/DVD 的 md5sum

phu*_*ehe 19 iso hashsum data-cd

我有一个 ISO 文件,我将它刻录到 CD 上。现在如何检查 CD 是否正确创建?我想要一个计算哈希和的命令,我可以用它来检查我在 ISO 文件上计算的哈希和。理想情况下,命令应该:

  • 无论 ISO 文件如何都可以工作:也就是说,我不想为光盘中的每个文件保留一个哈希和列表,也不想记住块的数量
  • 相对较短:一行命令很好,两行长的命令链可以,跨越一页的脚本不是
  • 相当有效率:例如,dd将光盘回一个文件然后md5sum在该文件上运行是不可接受的

如果没有不能满足所有的答案,我也会欣赏最近的匹配。如果你能告诉我为什么它不是那么简单,那就更好了。

Ste*_*n D 19

基本问题是我们想要获取与最初在 ISO 上完全相同的信息的 md5sum。当您将 ISO 写入 CD 时,磁盘末尾可能有空白空间,这不可避免地会更改 md5sum。因此,最短的方法:

md5sum /dev/cdrom
Run Code Online (Sandbox Code Playgroud)

不起作用。什么工作(并且在在线文档中很常见)只是从设备读取确切的字节数,然后执行md5sum. 如果您知道字节数,您可以执行以下操作:

dd if=/dev/cdrom bs=1 count=xxxxxxxx | md5sum
Run Code Online (Sandbox Code Playgroud)

其中 'xxxxx' 是 iso 的大小(以字节为单位)。

如果您不知道手头的字节数,但磁盘上仍有iso,您可以通过执行以下操作(取自此处)使用 ls 获取它们:

dd if=/dev/cdrom | head -c `stat --format=%s file.iso` | md5sum
Run Code Online (Sandbox Code Playgroud)

还有许多其他的单行结构应该可以工作。请注意,在每种情况下,我们都使用dd从磁盘读取字节,但我们并没有将它们通过管道传输到文件,而是直接将它们交给 md5sum。

可能的速度改进可以通过执行某些计算中使用更大的块大小(进行bs=中的dd命令)。