Recovering Files from a Corrupt CD/DVD

For Ubuntu, try dvdisaster for data cd's and dvd's. Really good if you like graphical tools. It's tricky to use with commercial movie dvd's, though. You'll have to open the dvd in Totem once first to "authenticate" the drive. After that, it works well.

You also have ddrescue for the terminal.

I have used both, and they are good.

Once you have the file on your hard drive you can try "uncompressing" it, or mounting it. If it's too damaged, I resort to foremost or testdisk to get all possible files out of the dumped image of the disk. Here is a quick link: http://www.ubuntugeek.com/recover-deleted-files-with-foremostscalpel-in-ubuntu.html

Not sure about music cd's, though. Look for a cd-ripper that uses cdparanoia. I haven't needed to do that in a long time. A quick search shows abcde, ripperx, and more.


I suggest SafeCopy! It works properly (at least for me) and is very simple to install and use.

You may install it using sudo apt-get -install safecopy

I suggest you to use three pre-defined stages as follows (suppose that your CD/DVD device file is /dev/cdrom):

safecopy --stage1 /dev/cdrom /tmp/mycd.iso

The output of above commands will be something like this:

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)

If there was any error in the output (Unrecoverable bad blocks is not 0) you may run second stage by safecopy --stage2 /dev/cdrom /tmp/mycd.iso

The output will be something like this:

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)

If there was any error in the output of second stage (Unrecoverable bad blocks is not 0) you may run third stage by safecopy --stage3 /dev/cdrom /tmp/mycd.iso

For more information, please read SafeCopy Man Page.


The other answers concentrate on software; I'll add another "layer" to this.

The fact that the disc (CD or DVD) is physically damaged is likely to impose a limitation on the possible results of the software approach.

I still do recommend to try them FIRST as what follows below might destroy your data entirely if you're too rough with it.

A process to reduce scratches; what tools, chemicals and gadgets to use:

Initial advice: read through and practice first, then do the real thing.

  1. Wettex wiping sponge cloth or similar. Make it be damp, then place it on top of a steady surface
  2. Place your disc with the recording surface up on top of 1.
  3. Find any type of Rubbing compound and place fairly large drops of it on top of the disc surface
  4. Use any combination of tools to work on surface similar to how "Buffing" is done on car paint.

Take it in easy steps, clean the disc after some work and try to read it - eventually, using easy steps of the above, you will get more data out than initially.

NOTE: This will not work for discs that has cracks through the optical layers or in the recording substrate. There is no magic in this. You are making the top surface more even, removing scratches as you go.

Tried out in practice on DVD+R discs