I recently found a box of my old (in computer terms) electronic documents dating back from 1996. They were stored on a combination of Zip 100 disks and normal CD-R disks. Given that the sum total of all these disks wouldn't even make a dent on the terabyte drive in my closet, I thought I'd migrate them over. I also wondered how easy it would be to rescue ~10 year old digital media after my successful effort at 80 year old media!
Deep in the bowels of my storage room, I found the parallel port Zip drive (although missing the cables and power supply). I tried my variable power supply and the thing fired up no problems on 5VDC. I was also pleasantly surprised that Iomega still lets you download the drivers for these things. The Zip drives were notorious for the Click of Death, but I had no trouble recovering all the old files.
Then came the CD-Rs which I thought would be the easiest... in fact, most of them had large sections that were unreadable. Lesson for the future: CD-Rs only last about 5 years, so copy them over to new media.
I then stumbled upon an amazing piece of software called JFileRecovery which is not only free, but multi-platform (Mac, Linux, Windows, whatever runs Java). This application will force the computer to retry [a configurable amount of time] until the drive can read the data. If not, it fills it with blank space so that the file is the correct size. For most data files, as long as the beginning is intact, blank spaces in the middle of the file make it still partially (or completely) recoverable.
With this software, I was able to revive virtually all of the .xls, .doc and .ppt files with no noticeable corruption (MS Office does a decent job of opening and "fixing" these corrupt files). As for the photos, most were recoverable but contain obvious glitches in the corrupt area.
So, the next time you have trouble copying a file and you think it's because of corrupt media (you get "time out" "Data Error" "Cyclic Redundancy Check" "CRC Error" "Error performing inpage operation" or similar errors) give JFileRecovery a try.