One of my favorite Linux features is its endless adaptability as a cross-platform rescue tool, and my favorite rescue Linux of all is the excellent Gentoo-based SystemRescueCD. SystemRescueCD comes with every imaginable necessity:
- Support for most computer filesystems, including Mac's HFS+ and all Windows filesystems
- a useful assortment of network diagnostic and fixit apps
- rdesktop, free Windows terminal server client
- tightvnc, cross-platform remote desktop
- several VPN (virtual private network) servers and clients
- LVM (Linux volume manager)
- Linux software RAID
- GParted, graphical partitioning tool
- Partimage, for cloning partitions
- Testdisk, for recovering data from lost partitions and damaged drives
And a lot more stuff you can read about at SystemRescueCD. With a SystemRescueCD or USB stick you can perform heroic rescues on any Linux, Unix, Mac OS X, Windows, and probably a number of lesser-known platforms as well. Yes, you can really fix these systems- you're not limited to the tired old reformat-reinstall dance that those big shot innovative vendors rely on.
SystemRescueCD comes with WindowMaker for folks who prefer a graphical environment to the command line, but it's pretty limited. It's good for running GParted, Leafpad, Firefox and Dillo, and for running multiple X terminals. It's nice and lightweight, so it should work even on frail old PCs and laptops.
SystemRescueCD doesn't automatically set up networking, so run the net-setup command after it boots up to configure networking. startx gives you WindowMaker. If you have any problems starting SystemRescueCD, reboot and hit the F2-F5 keys to see a lot of helpful information on boot options.
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.
% 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.
- DataRecovery; an excellent Ubuntu help page on using advanced tools to recover data from damaged files