从损坏的CD/DVD中恢复文件

我有一些状况不佳的旧CD/DVD,希望能从中恢复出任何可以恢复的内容。在Windows系统中,有像Isobuster和Cd Recovery这样的软件可以帮助我实现这个目标。请问有没有人能推荐一个适用于Linux系统的本地应用程序?

你尝试过物理治疗吗?CD在这方面很有趣,因为可以对封面进行处理以提高阅读体验。 - Martin Owens -doctormo-
3个回答

对于Ubuntu,尝试使用dvdisaster来处理数据光盘和DVD。如果你喜欢图形化工具,它非常好用。但是对于商业电影DVD的使用稍微有些棘手。你需要先在Totem中打开DVD以进行“认证”驱动器。之后,它可以正常运行。

你还可以使用终端上的ddrescue

我两者都使用过,它们都很好。

一旦你将文件保存在硬盘上,你可以尝试"解压缩"或挂载它。如果文件损坏严重,我会使用foremosttestdisk从磁盘的镜像中提取出所有可能的文件。
这里有一个快速链接: http://www.ubuntugeek.com/recover-deleted-files-with-foremostscalpel-in-ubuntu.html 不过,对于音乐CD来说,我不太确定。你可以寻找一个使用cdparanoia的CD转换工具。我很久没有这样做了。快速搜索显示有abcde、ripperx等工具可供选择。

1有没有办法创建直接打开并安装软件仓库中的链接呢?:) - UrkoM
1<a href="http://apt.ubuntu.com/p/hello"><img src="http://bit.ly/software-large"> 你好</a> 这就是你要的 :) - Stefano Palazzo

我建议使用SafeCopy!它在我这里运行正常,并且非常简单安装和使用。
您可以使用sudo apt-get -install safecopy来安装它。
我建议您按照以下三个预定义阶段进行操作(假设您的CD/DVD设备文件是/dev/cdrom):
safecopy --stage1 /dev/cdrom /tmp/mycd.iso

以上命令的输出将类似于以下内容:
Low level device calls enabled mode: 2
Reported hw blocksize: 4096
DVD low level access: drive reset
Reported low level blocksize: 4096
Filesize not reported by stat(), trying seek().
File size: 895686656
Blocksize: 4096
Fault skip blocksize: 89567232
Resolution: 89567232
Min read attempts: 1
Head moves on read error: 0
Badblocks output: stage1.badblocks
Marker string: BaDbLoCk
Starting block: 0
Source: /dev/cdrom
Destination: /tmp/mycd.iso
......................................... [40961]    
................[58254](+238608384){X}[80121](+89567232)
.[80374](+1036288){X}[102241](+89567232)
.[102314](+299008){X}[124181](+89567232)
......................................... [165142]    
......................................... [207126]
..........._  :-) 100%
Done!
Recovered bad blocks: 0
Unrecoverable bad blocks (bytes): 3 (268701696)
Blocks (bytes) copied: 218673 (895686656)

如果输出中存在任何错误(不可恢复的坏块 不为 0),您可以通过 safecopy --stage2 /dev/cdrom /tmp/mycd.iso 运行第二阶段。

输出将类似于以下内容:

Low level device calls enabled mode: 2
Reported hw blocksize: 4096
DVD low level access: drive reset
Reported low level blocksize: 4096
Filesize not reported by stat(), trying seek().
File size: 895686656
Blocksize: 4096
Fault skip blocksize: 524288
Resolution: 4096
Min read attempts: 1
Head moves on read error: 0
Incremental mode file: stage1.badblocks
Incremental mode blocksize: 4096
Badblocks output: stage2.badblocks
Starting block: 0
Source: /dev/cdrom
Destination: /tmp/mycd.iso
Current destination size: 895686656
......................................... [99468]    
........................_  :-| 100%
Done!
Recovered bad blocks: 0
Unrecoverable bad blocks (bytes): 0 (0)
Blocks (bytes) copied: 218673 (895686656)

如果第二阶段的输出中有任何错误(无法恢复的坏块不为0),您可以通过safecopy --stage3 /dev/cdrom /tmp/mycd.iso运行第三阶段。
要获取更多信息,请阅读SafeCopy Man Page

1Safecopy真是太棒了,而且使用起来超级简单,即使在CLI环境中也不例外。谢谢! - Baptiste Candellier
它运行得很好 :) - Shamshirsaz.Navid
这对我来说在18.04上非常有效,用来处理我从图书馆借来的损坏(?)的DVD。尽管由于某种原因(可能是版权保护?),我不得不先用VLC打开光盘(其他任何尝试都无法挂载它)。 - Elder Geek

其他答案都集中在软件上,我会再增加一个“层次”来解释。光盘(CD或DVD)物理损坏的事实可能会对软件方法的可能结果施加限制。
我仍然建议首先尝试它们,因为下面的内容如果处理不当,可能会完全破坏您的数据。
减少划痕的过程;使用哪些工具、化学品和小工具:
初步建议:先阅读并练习,然后再进行真正的操作。
  • Wettex擦拭海绵布或类似产品。将其弄湿,然后放在一个稳定的表面上。
  • 将录音面朝上放在1上。
  • 找到任何一种研磨膏,并将较大的滴放在光盘表面上。
  • 使用任何组合的工具来处理表面,类似于对汽车漆进行抛光。
  • 采取简单的步骤,清洁光盘经过一段时间的工作后尝试读取它 - 最终,通过以上简单的步骤,您将能够从中获取更多的数据。

    注意:这对于光盘在光学层或记录基板中有裂缝的情况无效。这没有什么神奇的。您只是在进行操作时使顶部表面更加平整,同时去除划痕。

    在DVD+R光盘上进行了实际测试

    3好主意!顺便说一下,练习刮花的不需要的光盘/塑料碎片可能是一个好主意,因为如果出了问题,数据可能会完全丢失。 - Wilf