我有一张多区段 CD,我想将其内容复制到硬盘上。这张 CD 已有大约 20 年历史,其中有几个部分存在读取问题,因此它可能是 的潜在候选对象ddrescue
。
问题是,它ddrescue
似乎无法识别 CD 中除第一个区段之外的任何区段,就像它dd
识别的那样。它的文档甚至没有提到多区段 CD,互联网上似乎也没有太多关于如何做到这一点的信息。
所以问题是:如何使用ddrescue
或任何类似的工具来拯救多会话 CD?
答案1
恐怕您在评论中提到了令人不悦的答案:ddrescue
不知道如何处理单个会话。我怀疑这是 Linux 内核 CD-ROM 接口的故意选择:它只显示它认为相关的会话。为了绕过这个问题,我相信cdrdao
做了一些特殊的事情,使该工具能够访问单个会话(例如使用--session
)标志。
在我的测试中,以下内容产生一个大的二进制文件( )和一个描述磁盘.bin
的目录( )文件:.toc
cdrdao read-cd --read-raw --datafile data.bin data.toc
它不会重试或检查任何内容,因此它不能完全恢复。但它可能能够恢复混合模式 CD-ROM 并解决单个会话问题。如果上述操作未找到所有会话(您可以使用 检查有多少个会话存在cdrdao disk-info
),您可以使用以下命令提取单个会话:
for session in 1 2 3 [...] ; do
cdrdao read-cd --read-raw --session $session --datafile data-$session.bin data-$session.toc
done
需要将文件.bin
转换为ISO
文件形式,使用块:
bchunk data.bin data.toc data
如果一切顺利,这将为data.iso
磁盘的相关部分创建一个。data.ugh
如果转换失败,它还可能会创建一个文件,不幸的是我不知道如何处理这种情况。