This evening I finally got around to doing some forensic data recovery from a broken (i.e., horribly clicking) hard drive. Most of the data I had backed up, but there are a couple non-vital files for which it would be nice to recover. That, and I've never done something like this before and it's quite fun. It's especially fun that the partition I'd like to recover was formatted in ReiserFS, for which no free and few commercial recovery tools exist.
The first step to data recovery is making an image of the faulty disk on a healthy hard drive. The disk image can then be repaired and diagnosed without having to worry about hardware failures (i.e., the dreaded clicking). The tool of choice for this is
ddrescue. For those that are familiar with the *NIX command
ddrescue works similarly except it skips over bad sectors. Once all of the good sectors are copied, it then goes back to all of the bad sectors and tries to read them again (in case the hardware malfunction is stochastic).
ddrescue prints out a handy list of statistics, including the average transfer rate. My rate is currently at 7120 kB/s (it's so slow because I am copying the image to my network file server over 100BaseT to a Pentium-III box running software raid). The hard drive I am recovering is 76.8 GB in size. I did some quick calculations to figure out how long I'd have to wait before this thing finishes.