Rescue a damaged disk using GNU ddrescue
GNU ddrescue (gddrescue) is a linux data recovery tool. It copies data from one file or block device (harddisc, cdrom, etc) to another, trying hard to rescue data in case of read errors.
It can also be used as a forensic cloning tool.
Installing gddrescue in Ubuntu linux
# aptitude install gddrescue
The command to use for gddrescue is ddrescue, don’t ask me why it is not called gddrescue.
First you copy as much data as possible, without retrying or splitting sectors.
This example rescues data from one disk to another
# ddrescue --force /dev/sda /dev/sdb logfile.ddrescue
Warning! This overwrites content on /dev/sdb
When you use a log file you can stop ddrescue any time by pressing Ctrl+ C to interrupt the process.
You restart it again with the same parameters and ddrescue will resume from where it was before it was interrupted. This is good to know since this can be a time consuming process.
Now let it retry previous errors reported in the logfile 3 times, using uncached reads
# ddrescue --force --direct --max-retries=3 /dev/sda /dev/sdb logfile.ddrescue Press Ctrl-C to interrupt Initial status (read from logfile) rescued: 2 TB, errsize: 69632 B, errors: 136 Current status rescued: 2 TB, errsize: 49152 B, current rate: 256 B/s ipos: 916972 MB, errors: 96, average rate: 359 B/s opos: 916972 MB, time from last successful read: 0 s Retrying bad sectors... Retry 1
If that fails you can try again but retrimmed, so it tries to reread full sectors
# ddrescue --force --direct --retrim --max-retries=3 /dev/sda /dev/sdb logfile.ddrescue
You should now have rescued some data that you can continue your rescue work with.
There may be another post about that later.
Rescue a bad CDROM using ddrescue
# ddrescue -n -b2048 /dev/cdrom cdimage.img logfile.ddrescue # ddrescue -d -b2048 /dev/cdrom cdimage.img logfile.ddrescue
The cdimage.img file can then be mounted as a loop file or written to a CDROM.