This is an advanced-level tip, but something I discovered that was critical to recovering data from a hard drive that was dying (giving read errors).
Just dragging a folder to copy it to an another location will terminate if it encounters a read error. This makes it PAINFULL to try to recover data from a failing drive. Disk Repair failed as well.
The power of the UNIX base OS helps in this case.
There is a UNIX command on the Mac called ditto. If you use the right options, it will not only permit you to copy the folder, but to log the files that it could not copy due to read errors.
ditto -v -V -rsrcFork [source folder path] [destination folder path] > [output file name] 2>&1
This will copy the folder and create a log file of what did copy and what did not. Remember you can drag and drop folders onto the terminal window in order to insert the source and destination folders. Ditto uses STDERR instead of STDOUT--that is why you need the 2>&1 in order to log the output.
Also, you can use the grep command to just view the files that didn't copy:
grep 'error' [output file name from above]
This took a bit of time as every time it hit a bad file, it takes the ditto process about 30 seconds before it gives up, posts an error and continues on.
BTW. This was the fourth Maxtor drive I have had to recover data from. Two were mine. The other two were from people I was helping. They only give a one year warranty-one actually failed in that time. Seagate gives a 5-year warranty-a little more expensive now, but saves much pain and gnashing of teeth down the road.
20 Useful OS X Tips