Tip of the Trade: GNU ddrescue, Plus the Right Gadget Rescue
July 16, 2007
GNU ddrescue is a must-have rescue utility for all system and network administrators. GNU ddrescue operates like dd_rhelp, which is a clever and useful front-end to dd_rescue. I know, that's some beastly naming there, but you want the non-hyphenated GNU ddrescue.
We all know and love the reliable dd command because it copies disks at the block level. You can use it to copy anything on any platform because it does not rely on understanding filesystems. dd is the basis of many cloning and rescue tools. But dd cannot be used to rescue a failing hard drive because it stops when it finds errors. dd_rescue was designed to skip over bad blocks and keep going. However, if it finds many bad blocks at the beginning of the drive, that results in much wasted time as it works its way through them. When you're rescuing a failing drive, you want anything that is recoverable to be copied as quickly as possible.
dd_rhelp handles this by scripting dd_rescue to skip over the bad blocks until a good block is found. Priority is given to finding and copying the good blocks. Then, it goes back and reattempts to process the bad blocks.
You may still use dd_rhelp or dd_rescue if it pleases you, but I recommend moving up to ddrescue. It's a single, efficient program written in C, rather than a C program (dd_rescue) plus a Bash script (dd_rhelp). It operates in like dd_rhelp by copying the good blocks first. You may interrupt it and then go back to where you left off. dd_rhelp creates a detailed logfile that sometimes collects useful information. It runs in a completely automatic mode, and it also has several options if you can't resist tweaking.
The fastest and safest way to rescue a failing hard drive is via a direct hard drive to hard drive copy. But this can be a pain you have to open cases and have enough PATA/SATA and power connectors to make it work. If you're rescuing a 2.5" drive you might not have this option anyway. Thankfully, an excellent solution is available: Get yourself a SATA/PATA-to-USB 2.0 adapter. These little gadgets are great. You can plug in any 2.5" or 3.5" drive to any USB 2.0 port and then run GNU ddrescue to directly copy the ailing drive.
The name confusion is unfortunate; just remember that Antonio Diaz is the author of GNU ddrescue, and Kurt Garloff is the author of dd_rescue. And we should thank both of them for writing these excellent and helpful utilities, along with the author of dd_rhelp.