GNU ddrescue

GNU ddrescue is a data recovery tool. It copies data from one file or block device (hard disc, cdrom, etc) to another, trying hard to rescue data in case of read errors.

Tags Recovery Tools
Licenses GPLv3
Operating Systems OS Independent
Implementation C++

Tweet this project Short link

Rss Recent releases

  • Rrelease-mid
  •  23 Jun 2009 08:34
  • Rrelease-after

Changes: The splitting algorithm has been modified to sequentially read the areas smaller than a threshold size. The description of the rescue algorithm in the manual has been made clearer.

  • Rrelease-mid
  •  25 May 2009 12:20
  • Rrelease-after

Changes: In rescue mode, ddrescue now shows the time elapsed from the last successful read. The SIGUSR1 and SIGUSR2 signals are now ignored.

  • Rrelease-mid
  •  02 May 2009 18:45
  • Rrelease-after

Changes: In case of error writing the logfile to disc, the user is now given the option of fixing the problem and continuing. After every read error, ddrescue now verifies that the input file has not disappeared. Descriptions of "--direct", "--synchronous", and "--sparse" in the manual have been made clearer. "make check" now verifies that files are open in binary mode.

Changes: The option "--try-again" has been added. The size skipped when bad sectors are found has been made independent of "cluster-size". Rescue speed has been improved for large log files. An overflow reading from devices of undefined size has been fixed. "make install-info" should now work on Debian and Mac OS X.

Changes: Rescue speed has been improved for large log files. An overflow reading from devices of undefined size has been fixed.

Rss Recent comments

Rcomment-before 20 Sep 2005 13:40 Rcomment-trans rtpdave Rcomment-after

Using ddrescue and SpinRite together
I've created a "Quick and Dirty" Perl program which reads a GNU ddrescue 1.0 "logfile" (sector list file), and generates a DOS .bat file of SpinRite 6.0 commands to try to recover the unrecovered regions. After SpinRite has completed its work, you can run ddrescue 1.0 again to add the recovered data to the recovery image. You can get my little Perl program here:
http://www.burtonsys.com/download/ddr2sr.zip (http://www.burtonsys.com/download/ddr2sr.zip)

Note #1: This little Perl program can be run under any system that supports Perl 4 or 5 (Linux, DOS, Windows, etc.).
For tiny compatible Perl 4 implementations for DOS and Windows, see:
http://www.burtonsys.com/auxil/#tinyperls (http://www.burtonsys.com/auxil/#tinyperls)

Note #2: ddrescue runs under Linux, and SpinRite runs under MS-DOS or FreeDOS. So (obviously) some rebooting will be required.

Note #3: You must use Antonio Diaz's GNU ddrescue 1.0:
http://freshmeat.net/projects/addrescue/ (http://freshmeat.net/projects/addrescue/)
You cannot use ddrescue 0.9 or earlier, nor can you use Garloff's dd_rescue (which is an entirely different program).

Note #4: Gibson Spinrite will set you back U.S. $89. I think it is well worth it (and I have no connection to Gibson, other than as a satisfied SpinRite user). Get it here:
http://www.grc.com/sr/spinrite.htm (http://www.grc.com/sr/spinrite.htm)

-Dave

Rcomment-before 16 May 2005 18:32 Rcomment-trans rtpdave Rcomment-after

Fast, effective, and flexible!
I compared the speed of Antonio's ddrescue 0.9 to the speed of dd_rescue for copying error-free data on a PC with ATA/EIDE drives, and Antonio's ddrescue ran nearly twice as fast as dd_rescue.

Since dying hard disk drives tend to get sicker and sicker as time goes on, I think speed it is important, to improve the success rate of the rescue. ddrescue's better speed could also help with "freezer-based" hard disk drive recovery. Sometimes a dying hard disk drive can be coaxed into working again, briefly, by sealing it in a plastic bag and freezing it in the freezer overnight. (I'm now 1-for-3 recovering hard disk drives with this technique.) But, of course, when you take it out of the freezer and plug it into your computer it starts warming up. You may only have a few minutes to recover your data before the drive warms up and starts failing again. So a faster ddrescue improves your chances of getting all the data off before the drive gets too warm.

The new 1.0pre1 is a gigantic improvement over 0.9! I've not benchmarked it, but I assume that the speed is about the same. However, the new logfile format has many advantages!

The most important advantage is that it enables you to do multiple ddrescue passes to recover your data. For example:

# first, grab most of the error-free areas in a hurry:

ddrescue -B -n /dev/hdd rescued.ima rescued.log

# then try to recover as much of the dicy areas as possible:

ddrescue -B -r 1 /dev/hdd rescued.ima rescued.log

(the "-r 1" is necessary to make it retry the failed areas)

Then put the drive in the freezer overnight (or run SpinRite on it), and then try again:

ddrescue -B -r 1 /dev/hdd rescued.ima rescued.log

(it won't recopy the already copied areas)

You can also run it on just part of the disk, e.g., to try extra hard to recover the most important areas. This example retries extra hard (10x) to recover any bad areas in the first 50 MB of the drive:

ddrescue -B -r 10 -s 52428800 rescued.ima rescued.log

Each time you run it, ddrescue updates the logfile to show which areas of the disk drive or file were successfully copied, which failed to copy, and which are yet to be attempted. It also updates the logfile when you halt it with Ctrl-C, and also saves it every 30 seconds during normal operation (in case of a crash).

When you are done, the logfile also serves as a nice, concise ASCII record of where the good and bad areas are in the copy of the drive or file. I can envision tools and scripts which use that information to identify the damaged files on a rescued disk drive, or which consolidate the good areas of the two copies of the FAT on a FAT16 or FAT32 drive, or which identify the damaged areas that are in "free space" and just mark them as "good" (because their contents don't matter), etc., etc..

ddrescue 1.0pre1 is a wonderful little utility, and (thanks to the simple, well-documented ASCII logfile format) it is nicely extensible.

Great job, Antonio!

-Dave

Rcomment-before 29 Dec 2004 06:39 Rcomment-trans ant_diaz Rcomment-after

Re: recoverdm

> Looks a lot like recoverdm which can also merge multiple recover attempt

> images (and features a special mode for damaged cd-roms).

I think recoverdm is more like a specialized dd.

Gnu ddrescue tries to copy the non-damaged part of the file as soon as possible. Recoverdm copies data linearly, like dd, and loses too much time trying to read bad sectors.

Recoverdm is specialized for linux (all functions in dev.c are no-ops except for linux).

Gnu ddrescue is so much more efficient "merging" backups than recoverdm + mergebad that I have had to change the description of what ddrescue does to make this efficiency clear to the user.

Rcomment-before 28 Dec 2004 12:18 Rcomment-trans fvh Rcomment-after

recoverdm
Looks a lot like recoverdm which can also merge multiple recover attempt images (and features a special mode for damaged cd-roms).

Rcomment-before 03 Sep 2004 17:01 Rcomment-trans ant_diaz Rcomment-after

Re: Dejà vue

> And how would you want packagers to package a tool with completely the same name (and an older version) ??

>

> Please take another name for the project, or consider your program obsoleted by Kurt's version at any time.

The names are no more the same. Mine is ddrescue, Garloff's is dd_rescue. But even if they were, it is in the interest of packagers to diferentiate them if they want to deliver a better, faster and smaller program.

No-screenshot

Project Spotlight

Goanna

An Eclipse plugin providing static analysis for C/C++.

No-screenshot

Project Spotlight

sslh

A server-side multiplexer for SSL and SSH.