When the extra drive is ready, create a directory to mount it in, then mount it and copy your files. In this example the sick hard disk is /dev/sda, and the external drive is /dev/sdb. We're going to save /etc/ and /home:
% mkdir /mnt/sickly % mkdir /mnt/rescue % mount /dev/sda1 /mnt/sickly % mount /dev/sdb1 /mnt/rescue % cd /mnt/sickly % cp -r home/ etc/ /mnt/rescueDo not mount anything in mnt or bad things will happen; always create a new mountpoint.
GNU ddrescue, by Antonio Diaz, is a superior data-rescuing utility. It operates in a similar fashion to dd-rescue and dd-rhelp, which are also good rescue commands. It works at the block level, so it doesn't matter what filesystem you're saving- it works on all of them. Yes, every single one. It copies good blocks first, and when it hits bad blocks it skips over them and keeps going. Time is crucial on a dying hard disk, and ddrescue is the fastest of the three. Make sure your source disk is not mounted before running ddrescue; you can check this with the mount command.
ddrescue has a lot of command options, but this simple invocation does the job just fine:
% ddrescue -r3 /dev/sda1 /dev/sdb1 rescue-logfileThat tells it to run three times, and to copy whatever it can from /dev/sda1 to /dev/sdb1. The partition you're copying to should be half again as large as the source partition so you have a safe margin to operate in. The logfile can be named whatever you want. Using a logfile requires more disk space, but it's your insurance against interruptions and crashes.
Then run the appropriate version of fsck for your filesystem on the copy, not on the original. For extra insurance, make a copy of your copy first. Then mount it read-only and see what you were able to save. This example is for Ext3:
% e2fsck -v -f /dev/sdb1 % mkdir /mnt/ddrescued % mount -o ro /dev/sdb1 /mnt/ddrescuedYou'll probably want to install ddrescue on another system so you can read the dommed info pages, which are much more detailed than the man page. (Yes, we hates info pages and crippled man pages.) SystemRescueCD doesn't include an info reader.
In part two, you'll learn how to perform rescue operations over the network.