在 Mac 上验证刻录的 CD/DVD 映像

在 Mac 上验证刻录的 CD/DVD 映像

基本上,我想要做的是验证图像是否已成功刻录。这几乎与以下问题相同:,Mac OS X 除外。

在网上搜索(包括 superuser.com)后,我只能找到针对 Windows 的问题的解决方案,并且我想在 Mac OS X 上解决这个问题。

我已经尝试通过 Wine 安装 ImgBurn,但似乎不起作用。

答案1

进行此类比较的最佳方法是使用cmp命令。 cmp逐字节比较数据并告知您两个文件之间的任何差异**。

输入命令为cmp /home/image.iso /media/cdrom0(请确保根据您的情况使用映像和 CD 的实际路径)。您希望看到的输出要么是无输出(映像和 CD 相同),要么是cmp: EOF on image.iso,这表示 CD 上的字节数多于映像,但映像上的所有数据都已成功复制到 CD。CD 上的额外数据可能只是用零填充的,当映像小于 CD 的大小时就会发生这种情况。

另一方面,如果您看到输出通知您两者不同(它看起来类似于image.iso cdrom0 differ, byte 128 line 7),则表示复制映像时出错,并且它们之间存在一些差异。您可能看到的另一个不好的事情是cmp: EOF on cdrom0,因为这表明部分映像未复制到 CD(这可能是复制过程中断的结果)。

顺便说一句,我猜你看到shasum每个文件不同的原因是因为 CD 末尾的零填充,这会改变shasum但不会影响功能。


** 从技术上讲,cmp仅报告第一的文件之间的差异。如果存在多个差异,则不会显示它们,但对于将图像刻录到 CD 的情况,错误数量无关紧要,任何错误都是不好的。

答案2

我自己不是 Mac 用户,但经过一番调查后,我发现 OS X 似乎原生支持此功能,这要归功于磁盘实用程序应用程序。详情如下:http://www.macinstruct.com/node/390

这篇文章是 2011 年的,就像我说的,我自己不是 Mac 用户,所以我手头没有可以检查的文章,但如果磁盘工具仍然存在,那么这个选项可能仍然存在。

答案3

如果您不怕 OSX 的“阴暗面”,即使用终端,您可以简单地比较原始设备和图像文件的 SHA 校验和。

$ shasum /dev/rdisk2
bad2c8fbb090a4b49b63135895fdb3b64062ceb6  /dev/rdisk2
$ shasum yourdisk.iso
bad2c8fbb090a4b49b63135895fdb3b64062ceb6 yourdisk.img

并比较输出。

答案4

假设 bash 脚本可用

将下面的 bash 脚本作为“cksum.sh”复制到 $PATH
类型中包含的文件夹中chmod 755 cksum.sh(在您保存脚本的文件夹中)

然后使用它;cd进入包含原始文件的文件夹,然后执行:
$ cksum.sh -b创建一个“CONTENT.sha256sum”文件。
$ cksum.sh -c根据当前目录中的文件检查文件中的校验和。

您还可以提供校验和的文件名作为第二个参数,以覆盖默认值,该默认值始终在当前工作目录中创建/读取(注意:从校验和文件中排除)。

这肯定比其他许多解决方案慢,但我相信它比其他解决方案更通用。还请注意,如果您将校验和文件留在媒体上(无论是 CD、DVD 还是 USB),那么检查媒体内容
sha256sum -c CONTENT.sha256sum
在任​​何时候都很简单,假设您有 sha256sum 可执行文件。

它可以检测有错误和丢失的文件,但不能检测“添加的文件”(如书面所述);但这可以通过将文件夹内容与列表内容进行匹配来实现。

最终用户还可以通过查找 sha256sum 可执行文件并使用来检测有故障(例如读取错误)和替换的文件sha256sum -c CONTENT.sha256sum


--- cksum.sh ---

/bin/bash #!/bin/bash

文件=“$2”
文件=“${file:=CONTENT.sha256sum}”

案例“$1”

  -b )
    (查找 -type f!-iname“*$file”2> / dev / null \
     | 当读取 f 时;执行 sha256sum -b "$f" ;完成 ) \
     | tee "$file"
  ;;

  “-C” )
    如果 [ !-r "$file" ] ;那么
      echo "'$file' 不是可读文件,无法检查。"
    别的
      sha256sum-c“$文件”
  ;;

  *)
    echo "用法:${0##*/} -b|-c [校验和文件名]"
    echo "将在 '$file' 中创建 (-b)/检查校验和"
    echo“对于当前目录中的文件,”
    echo “通过使用‘find -type f’和‘sha256sum -b/-c’”
  ;;

埃萨克

相关内容