我有一个 ISO 文件,我将其刻录到 CD 上。现在如何检查 CD 是否正确创建?我想要一个计算哈希总和的命令,我可以用它来检查在 ISO 文件上计算的哈希总和。理想情况下,该命令应该:
- 无论 ISO 文件如何,都可以工作:也就是说,我不想保留光盘中每个文件的哈希和列表,或者记住块数
- 相对较短:一行命令很好,两行长的命令链也可以,跨越一页的脚本则不行
- 相当高效:例如,
dd
将光盘恢复为文件然后md5sum
在该文件上运行是不可接受的
如果没有不能满足所有人的答案,我也会欣赏最近的比赛。如果你能告诉我为什么它不那么直接就更好了。
答案1
基本问题是我们想要获取与最初 ISO 上完全相同的信息的 md5sum。当您将 ISO 写入 CD 时,磁盘末尾可能会有空白,这不可避免地会改变 md5sum。因此,最短的方法是:
md5sum /dev/cdrom
不起作用。什么有效(并且常见于在线的文档)只是从设备读取确切的字节数,然后执行md5sum
.如果您知道字节数,您可以执行以下操作:
dd if=/dev/cdrom bs=1 count=xxxxxxxx | md5sum
其中“xxxxx”是 iso 的大小(以字节为单位)。
如果您不知道现有的字节数,但磁盘上仍然有 ISO,则可以通过执行以下操作来使用 ls 获取它们(取自这里):
dd if=/dev/cdrom | head -c `stat --format=%s file.iso` | md5sum
还有许多其他单行结构应该可以工作。请注意,在每种情况下,我们都用来dd
从磁盘读取字节,但我们不会将这些字节传输到文件,而是立即将它们传递给 md5sum。
bs=
通过进行一些计算以使用更大的块大小(命令中的dd
),可以提高速度。
答案2
有一个用于此任务的程序。这叫—— checkisomd5
。在Ubuntu中可以通过命令安装:
sudo apt-get install isomd5sum
答案3
如果光盘上图像的大小可以被 2048(整数)整除,这似乎很常见,那么您可以得到准确的 MD5sum,如下所示,其中sr0
是光学器件的名称 - 可以使用lshw -C disk
- 找到,以及“count”是图像大小除以 2048 的除数。
dd if=/dev/sr0 bs=2048 count=356352 |md5sum