Recovering data off of a dead hard drive

I would try to remove the hard disk and mount it in another PC.

Than you can then try to use software for data recovery from a hard disk with the Journal File System.

Some examples:

  • Clever Files (OS X)
  • JFS Recovery Software (Win)
  • Geeksnerds JFS Data Recovery Software (Win)

You could try following this hint from Macworld. It makes use of the Terminal (0$) to execute the UNIX command dd to copy everything bit-by-bit from your harddrive to another location.

1. Determine UNIX id. of dead drive

If you decide to use this method you would first have to determine what the UNIX identifier of the attached disk is. Open up Terminal (Applications --> Utilities) and type the following:

diskutil list

This will give you a list of all connected drives and their partitions and it should look like shown here.

Probably your boot drive is under /dev/disk0 and the drive in the external enclosure is under /dev/disk1. This could be different, look this up by finding the name of the dead partition in the list. Let's assume for the rest of this answer that the dead drive is under /dev/disk1

Now if you can not find the name of the dead drive in that list, diskutil can not find your drive and the Macworld hint will not work for you. If you see it in the list, move on to the next step.

2. Define destination

This method copies the whole disk byte-by-byte. If it encounters an error it will skip it and write zeros to the destination (read the hint for full details). So, the destination should have enough hard drive space to accomodate the whole hard drive you're recovering. So if you've got a 320GB hard drive, you'll need 320GB of destination space. If you have 320GB to spare on your bootdrive proceed to step 3. Otherwise get another external drive with at least 320GB of space and then proceed to step 3.

3. Copy

The command given in the hint is:

dd bs=512 if=/dev/rXX# of=/some_dir/foo.dmg conv=noerror,sync

You should replace /dev/rXX# with /dev/rdisk1 (according to our earlier assumption) and /some_dir/foo.dmg differs depending on your destination. If you choose your bootdrive you could change that line to: /Users/**yourusernamehere**/Desktop/recover.dmg

If you choose an external disk you should write /Volumes/**Volumenamehere** instead of /some_dir/foo.dmg

To summarise, your Terminal command would look as follows if you choose your boot drive as destination:

dd bs=512 if=/dev/rdisk1 of=/Users/yourusernamehere/Desktop/recover.dmg conv=noerror,sync

Or if you choose an external disk:

dd bs=512 if=/dev/rdisk1 of=/Volumes/Volumenamehere conv=noerror,sync

Good luck