Recover and Preserve Data With GNU ddrescue

Tuesday Jul 19th 2011 by Joe Brockmeier

With GNU ddrescue you need never worry about the impact of optical media degradation on your data.

I have a great deal of information saved on old CD-Rs, but that may not be the best way to preserve data. Over time, optical media can degrade -- and those old CD-Rs and DVD-Rs may already be on their way to the optical media afterlife. One extremely useful tool for rescuing data on damaged disks and failing hard drives is GNU ddrescue.

You're probably already familiar with the dd utility. For those who aren't, dd is standard *nix utility (you'll find many implementations) that performs a low-level copy of data of a disk or file. It's often used these days to write images to USB keys, for example, for folks who want to boot off a USB key. It's also very useful for data recovery -- but it can be frustrating to use if the source media has a lot of errors. If that's the case, you'll want to turn to ddrescue.

What's so great about ddrescue? Essentially, it expects read errors, and as a result it is designed to run multiple passes and try to reconstruct a disk that's degrading in some fashion.

To start with, you can use ddrescue with relatively few options:

ddrescue /dev/sr1 filename.iso filename.log

Here, you're telling ddrescue to copy the device at dev/sr1 to filename.iso and save a logfile called filename.log. Why do you want the logfile? This keeps a record of what the utility has done so far and where it's found errors. It's also a good idea to use this because it allows you to interrupt a job and start over again later without having to start from scratch.

This will start copying the file and give you a status report on the number of blocks rescued, rate of copying and errors (if any). If you're like me and start copying disks before you've been seeing any errors, you may need to make only one pass. But if you do encounter errors, you can take another pass at it using the logfile and hope that ddrescue can recover the error:

ddrescue -r4 /dev/sr1 filename.iso filename.log

Rinse and repeat as necessary. Note that the -r option tells ddrescue how many times to retry before giving up.

If you want to see exactly (or at least in more detail) how GNU ddrescue works, check out the algorithm section of the ddrescue manual. It explains the steps ddrescue uses to try to rescue data and in what order. You'll probably want to look over the manual anyway to familiarize yourself with ddrescue as a utility and its other options. It has quite a few options that may come in handy in more complex scenarios.

You might also want to start copying over some of that old optical media right away, even if you're not seeing errors or haven't had a reason to read the disks lately. Although ddrescue is a very handy and reliable tool, it has its limitations.

Joe 'Zonker' Brockmeier is a freelance writer and editor with more than 10 years covering IT. Formerly the openSUSE Community Manager for Novell, Brockmeier has written for Linux Magazine, Sys Admin, Linux Pro Magazine, IBM developerWorks,,, Linux Weekly News, ZDNet, and many other publications. You can reach Zonker at and follow him on Twitter.

Follow ServerWatch on Twitter

Mobile Site | Full Site
Copyright 2017 © QuinStreet Inc. All Rights Reserved