SEARCH

How-To Geek

Rescue Old, Damaged CDs with an Ubuntu Live CD

Your old CDs – especially ones you’ve burned yourself – degrade over time, to the point that they’re unreadable. We’ll show you how to squeeze as much data out of them as you can, before it’s too late!

The tool we’re going to use to do this is called ddrescue, which can be easily accessed from the Live CD environment. ddrescue can make .iso files out of your CDs, which can then either be burned to a more reliable CD, or can be mounted and accessed in all modern operating systems.

sshot-6

Boot into the Ubuntu Live CD environment using a burnt CD or a prepared flash drive.

First, we’ll install ddrescue. Open up the Synaptic Package Manager (System > Administration > Synaptic Package Manager).

In the Synaptic Package Manager window, click on Settings > Repositories.

sshot-1

Add a check in the box whose label ends with “universe” to enable Ubuntu’s universe repository. Click Close.

sshot-2

Back in the main Synaptic window, click the Reload button to reload the list of available packages.

sshot-3

Once the search index has been rebuilt, enter “ddrescue” in the Quick search text field. Two different packages will come up; make sure that you choose “gddrescue” and not “ddrescue,” which operates slightly differently.

sshot-4

Right click on “gddrescue” and select Mark for Installation. Click the Apply button, and follow the prompts to install ddrescue.

Next, we need to select a location to save the .iso file that will be produced by ddrescue. In our case, we’ll use an internal NTFS hard drive. To mount it, we’ll click on Places and then select the hard drive we want to use.

sshot-7

The rest of this guide will be done in a terminal window, so open one through Applications > Accessories > Terminal.

Navigate to the location in which you will save the .iso file. In our case, it’s a newly mounted hard drive, so we’ll first change to the /media directory, and then use tab completion to change to the directory that represents our hard drive.

sshot-8

Once you’re in the right directory, you’re ready to run ddrescue! ddrescue is neat because you can try to pull data off of a CD multiple times, and each time it will add to the same image file whatever new data is manages to recover.

Because of that, for the first pass, it’s best to start with recovering the easy parts first, and then drilling down into problem areas later.

For the first pass, the terminal command is:

ddrescue –n –b 2048 /dev/cdrom <ISO file> <log file>

In our case, the CD we’re trying to recover is a 13 year old CD with Red Hat Linux 4.2 on it, so we’re going to call the image RedHat.iso, and the log file RedHat.log.

sshot-9

The “-n” flag ensures that this first pass won’t take too long, but will still recover the easy-to-read parts of the CD. The “-b” flag is important because CDs have block sizes of 2048 bytes.

Eventually ddrescue will finish, possibly with some errors.

sshot-10

In our case, there were around 80 MB of data that were not recovered due to errors. Let’s try a second, more in-depth run to try to recover as much data as possible.

The terminal command for this second run is very similar to the first, except that instead of using the “-n” flag we will use the “-d” flag to tell ddrescue to go into direct mode and read as much data from the CD as possible. For more information about command line parameters ddrescue recognizes, see its manual.

ddrescue –d –b 2048 /dev/cdrom <ISO file> <log file>

sshot-11

Make sure that the .iso and .log files are the same as you used in the first step.

We let ddrescue run overnight, and in the morning…

sshot-12

we had recovered over 55 MB of the data we hadn’t recovered before! If we left it longer, we may have been able to recover even more.

It’s a good idea to try to save your CDs now, before they degrade any further. Hard drive space is cheap; buying an external drive is small investment if it means you can save your old CDs (and then you can throw them away to save some space on your shelves).

And while ddrescue is a great tool for doing this, it can also be used to pull data from other devices like hard drives and floppy disks. If you tried to make a drive image with dd and it gave you errors, then give ddrescue a try instead!

Trevor is our resident Linux geek, but always keeps his eyes open for neat Windows tricks too.

  • Published 07/13/10

Comments (8)

  1. Peter

    Hi, would this work for an old, scratchy audio CD (not a CD-R, not “burned”)?

  2. Trevor Bekolay

    @ Peter

    Yes, it will work with an audio CD, but the final output will be a .ISO file, not .wavs or .mp3s that you can listen to.

    However, you can use this method to create an .ISO, and then mount that .ISO and use a normal CD-ripping program on it to get audio files. In this way, ddrescue would be a first pass that tries to pull all of the data off of the CD, and then the ripper would examine the data that ddrescue recovered and make audio files from it.

    It might be a bit convoluted, though. If you’re on Windows, I’ve always found that Exact Audio Copy does a pretty good job with scratched CDs (though it can take quite a long time).

  3. Manu

    This method is very useful before trying to “clean” or “repair” a slightly damaged CD. If you destroy the CD in the cleaning process you still got that image created with ddrescue and, if you success cleaning the CD, then you can try ddrescue again, and so on…

  4. Trevor Bekolay

    @ Manu

    That’s a great point! The fact that it adds to the .iso that it got before is really neat, I think.

  5. sob

    Will this work with DVDs? I have one in mind at the moment.

    Thanks!!

  6. Christian

    Nice, really nice tip, thanks! I’ve got a bunch of old CDs here and I’m transferring it all to an external HDD, some of them have errors — looks like I’ll play with ddrescue a lot. Just tried it with a known 100 MB unreadable file, and it successfuly copied it!

  7. Metafaniel

    HI! Thanks for the explanation. However I’ve got a doubt =S
    I’ve tried your method and I successfully managed to backup data from a not-so-damaged FAT32 disk… I read that default block sizes for FAT32 volumes are as follows:

    4KB 500MB-8GB
    8KB 8GB-16GB
    16KB 16GB-32GB
    32KB over 32GB

    So for -b I used “8192″ (My disk size it’s 16GB)
    Everything was successful, even no errors where found =D
    HOWEVER =/ I can’t mount/burn that ISO file =(
    I’ve tried to mount it with ISO Master, Furious and AcetoneISO2, however all of them can’t mount the ISO =’(

    So what can I do? It seems to be everything has been backed up but why I can’t mount/burn it??? =( THANKS!!! =)

  8. Rob

    Metafaniel,
    I don’t know those programs you used but perhaps they assume the iso file to be a cd image (rather than fat32 as in your case). In ubuntu, try:
    sudo mount -t vfat -o loop your-image.iso /mnt

    you should then be able to find the files on the drive in directory /mnt.

Get Free Articles in Your Inbox!

Join 134,000 newsletter readers

Email:

Go check your email!