我正在备份一些数据。genisoimage
我使用以下命令使用 1.1.11 版制作了数据的 ISO 映像:
$ genisoimage -l -J -r -o ../image.iso .
然后将其刻录到 CD
$ sudo wodim dev=/dev/sr0 image.iso
然后我想验证 CD 所以我首先查看了它的大小
$ sudo isosize -x /dev/sr0
这给了我写入轨道的大小,然后使用作为块大小和计数dd
的输出将轨道复制到另一个文件。isosize
现在,我从 CD 中得到的图像比我写的原始图像要小。所以我认为CD可能已损坏或图像太大:原始图像为696 MiB,CD声明容量为700 MB。
出于好奇,我安装了原始图像和我使用mount -o loop
. 然后我将两张图片的内容与
$ diff -ru <mount point 1> <mount point 2>
显然它们是完全相同的。
怎么可能原图没有写正确,但图片的内容却是一样的呢?
wodim
将图像刻录到介质时是否执行任何翻译?这或许可以解释为什么 CD 上的曲目与原始 ISO 映像不同,但映像和曲目中的数据是相同的。
或者 ISO 映像是否在末尾包含一些填充,以便即使删除了填充,图像也可以正确使用?
Genisoimage 未维护且充满错误。切勿将其用于备份!
mkisofs
这是从2004 年 5 月开始到 2007 年 5 月结束的原始程序的一个分支。它保留了 2004 年的开发状态并添加了大约 50 个 Debian 特定错误。同时,原版mkisofs
的尺寸和功能翻了一番。mkisofs
起源于 1993 年,并且在 2006 年夏季之前从未得到过深入的程序验证。 2006 年 8 月,已发现并修复了许多错误,但这些修复从未进入分支。如果您使用的是mkisofs
2006 年末或更新的原始文件,您可以确保mkisofs
正确完成的备份会生成与原始文件系统相同的文件系统。isosize
不是cdrtools
套件中的程序。我无法判断它的输出是否可靠。wodim
是 fork 的一部分,如果您使用像您提到的那样的命令行,则强制它使用劣质驱动程序。使用原始cdrecord
程序并完全省略该dev=
选项或使用记录在案的 SCSI 地址语法。这样,cdrecord
就能够为设备选择最佳驱动程序。顺便说一句:创建的 ISO 映像的大小
mkisofs
通过填充四舍五入,并且仅检查 ISO-9660 主卷描述符中提到的扇区数的程序可能会得到一个太小的值。