If you chose to go this route, you need to make sure you have a
rescue partition somewhere -- a place to write out new copies of
the files you recover. Hopefully, your system has several
partitions on it: perhaps a root, a /usr, and a
/home. With all these to choose from, you should
have no problem: just create a new directory on one of these.
If you have only a root partition, and store everything on that, things are slightly more awkward. Perhaps you have an MS-DOS or Windows partition you could use? Or you have the ramdisk driver in your kernel, maybe as a module? To use the ramdisk (assuming a kernel more recent than 1.3.48), say the following:
# dd if=/dev/zero of=/dev/ram0 bs=1k count=2048 # mke2fs -v -m 0 /dev/ram0 2048 # mount -t ext2 /dev/ram0 /mnt
This creates a 2MB ramdisk volume, and mounts it on
/mnt.
A short word of warning: if you use kerneld (or its
replacement kmod in 2.2.x and later 2.1.x kernels)
to automatically load and unload kernel modules, then don't
unmount the ramdisk until you've copied any files from it onto
non-volatile storage. Once you unmount it, kerneld
assumes it can unload the module (after the usual waiting
period), and once this happens, the memory gets re-used by other
parts of the kernel, losing all the painstaking hours you just
spent recovering your data.
If you have a Zip, Jaz, or LS-120 drive, or something similar, it would probably be a good choice for a rescue partition location. Otherwise, you'll just have to stick with floppies.
The other thing you're likely to need is a program which can read
the necessary data from the middle of the partition device. At a
pinch, dd will do the job, but to read from, say,
600 MB into an 800 MB partition, dd insists on
reading but ignoring the first 600 MB. This takes a not
inconsiderable amount of time, even on fast disks. My way round
this was to write a program which will seek to the middle of the
partition. It's called fsgrab; you can find the
source package on my website
or on Metalab (and
mirrors). If you want to use this method, the rest of this
mini-Howto assumes that you have fsgrab.
If none of the files you are trying to recover were more than 12
blocks long (where a block is usually one kilobyte), then you
won't need fsgrab.
If you need to use fsgrab but don't want to download
and build it, it is fairly straightforward to translate an
fsgrab command-line to one for dd. If
we have
fsgrab -c count -s skip
device
then the corresponding (but typically much slower)
dd command is
dd bs=1k if=device count=count
skip=skip
I must warn you that, although fsgrab functioned
perfectly for me, I can take no responsibility for how it
performs. It was really a very quick and dirty kludge just to get
things to work. For more details on the lack of warranty, see the
`No Warranty' section in the COPYING file included
with it (the GNU General Public Licence).