Recover a dead hard drive with dd
The Unix program dd is a disk copying utility that you can use at the command line in order to make a disk image. It makes a bit-by-bit copy of the drive it's copying, caring nothing about filesystem type, files, or anything else.
Normally, in order to make a disk image, the disk you're copying from has to be able to spin up and talk – in other words, it's OK to make a copy if the disk is healthy. But what happens when your disk is becoming a doorstop? As long as it continues to spin, even with physical damage on the drive, dd and Mac OS X will get you out of the fire.
I had a client who was getting read/write errors on the hard drive. Disk Utilities could not repair it. Nor could Drive Genius or Disk Warrior. They all seemed to hang on sector scans at about 45gig of a 120gig HD. I fired up dd, and it started OK, but stopped at the same physical error location – complaining about a Hard Error.
So the workaround was to designate the dd mode as noerror – which just slides over the hard stops, and to add the mode sync, which fills the image with nulls at that point. We did it on BSD Unix, but as long as you can get the hard drive attached to your Mac, the command is the same:
dd bs=512 if=/dev/rXX# of=/some_dir/foo.dmg conv=noerror,sync
The bs=512 designates block size, and the if=/dev/rXX# is the UNIX path to the actual disk device. Make sure that the chosen directory (some_dir) has enough room to take the entire disk image – which will be equal to the size of the drive. Since dd doesn't care about the contents of the drive, it copies every bit on the thing, so you get an image equal to the disk's capacity. A really big file. WARNING: This can take hours if not days.
Once you've established the disk image (in this example, foo.dmg), you're almost home. Here's where your Mac OS X box is far and away the best thing to have. In this example, the dd output file is foo.dmg. You have to realize that this is an exact copy of a busted drive, but the “holes” are filled with nulls. As long as the damage isn't to the boot sector, though, when you double-click on it, Mac OS X mounts it without breathing hard … who cares if it's FAT32, NTFS, whatever.
Resources
Other utilities can help out in this case also.
CopyCatX from SubRosaSoft
ddrescue from the GNU Project