使用将 BIN/CUE 映像刻录到 CD 非常容易cdrdao write --speed 1 --device /dev/sr0 path/to/image.cue
,但我找不到任何方法来验证刻录后的情况。我习惯使用 ImgBurn 等 Windows 实用程序,它可以在刻录完成后读回磁盘以检查错误。
这共同建议使用cmp /dev/cdrom path/to/image.iso
或比较校验和不起作用,特别是当有多个 BIN 文件时。使用grep
在转储中搜索参考 bin 文件会消耗太多内存 - 在我的系统上,即使有 CD,也会耗尽内存并且进程会被终止。
有没有一种简单的方法可以在 Linux 上做到这一点?
部分解决方案:
将映像挂载为虚拟磁盘cdemu load any path/to/image.cue
,转储每个映像cdrdao read-cd --read-raw --device /dev/srX --datafile path/to/dataX.bin path/to/imageX.toc
,并与 进行比较cmp path/to/data1.bin path/to/data2.bin && echo "OK!"
。 (仅仅使用cmp /dev/sr0 /dev/sr1
是行不通的,所以必须先将它们转储到临时位置。)
不幸的是,虽然这适用于我测试的第一张图像,但它不适用于我尝试过的任何其他图像。即使在以下情况下,两个转储的结果也会不同,从而产生漏报:
- 重复转储会产生相同的校验和,从而排除随机读取错误。
- 根据通过互联网获得的转储来验证商业 CD(不是我自己刻录的)也无法验证,这排除了随机写入错误。
- 在 Windows 上使用 ImgBurn 刻录并成功验证的磁盘也无法通过此验证过程,这排除了任何真正的数据损坏(只要我们信任 ImgBurn 的验证过程)。
因此,这可能是由于某些对齐/填充问题导致的副本不完美。对于实际使用刻录媒体来说这不是问题,但它会击败使用cmp
.