I am in the process of trying to recover files from a failed MacBook hard drive. While I've already replaced the drive in the machine itself and installed a fresh copy of OS X, I have the old drive in an external 2.5" SATA enclosure. I am able to (very, very slowly) view the directory structure and copy files, but it's an incredibly slow process and one failed file stops the whole thing. While I know there are paid drive recovery utilities out there, I'm just looking for something that will attempt to copy all of the files and directories from within a given directory and just skip the ones that can't be copied (ideally, I'd also like to know which files get skipped, but that's not a requirement).

1 Answer 1


You could use ddrescue to try to clone the raw volume (there are some notes on running it under OS X on tinyapps.org). It basically tries to read over & over, getting as much as possible from the disk.

This isn't ideal for your situation, since it 1) needs enough free disk space (either a volume or a disk image) to hold the entire drive, including free space (i.e. if it was a 200GB drive with 10GB of files, you need 200GB to hold the clone); and 2) it doesn't tell you which files it couldn't read (you can look at the log and see what blocks it hasn't been able to read, but figuring out what files those blocks are part of is not trivial).

The good news about is that, thanks to its log file, if it missed something you need (and you haven't modified the target volume at all -- mounting readonly is recommended), you can just run it again and it'll pick up where it left off, and keep hammering on the difficult blocks until they give up their data.

  • Thanks for this! I'm running it now, so we'll see if it's going to work tonight. I plan on using DiskWarrior on the resulting image to see if it can rebuild the directory. Dec 7, 2011 at 18:29
  • One thing that I'm confused by, though...the docs seem to indicate that you can resume scanning, but I don't see anything in there about it retrying failed blocks/sectors (re: your last paragraph). Any more info on how to do that? Can I just run pass after pass on the same drive and image and it'll update the image with any previously failed blocks that now succeeded? Dec 7, 2011 at 18:30
  • Yes, it just updates the image as it recovers blocks (this is why it's important to mount it readonly, otherwise further recovered blocks may no longer match the modified file layout). IIRC running it with -r -1 it'll retry bad blocks forever or until it succeeds. Dec 8, 2011 at 6:07
  • 6
    While this ended up taking WEEKS, I managed to recover the data. Thanks so much! Dec 20, 2011 at 2:17
  • 1
    @GordonDavisson "It basically tries to read over & over [..]" Not quite. From the gddrescue docs, ddrescue initially skips over unreadable blocks or slow-reading areas. After finishing with all the content that was easily read and copied, it returns to the problematic sectors for at most one more read (by default) of a non-read sector. From the docs: "Each sector is tried at most two times; the first in this [copying] step as part of a large block read, the second in one of the steps below as a single sector read."
    – landroni
    Feb 3, 2014 at 9:40

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .