Unmount the partition where you got your deleted files at. I will denote that partition with /dev/hdx1.
# umount /dev/hdx1
Check the size in blocks of /dev/hdx1.
# fdisk -l /dev/hdx
Now you need to have an extra partition of the same size as /dev/hdx1, to be able to act safely. Suppose that you have an empty harddrive located at /dev/hdy.
# fdisk /dev/hdy
Create a partition with the same size as /dev/hdx1. Here size is the size in blocks (each block is 1024 kB) of /dev/hdx1 taken from above.
Note: I am using fdisk version 2.10f and if you have another version the fdisk interaction below may not be the same.
fdisk: n <- Add a new partition. fdisk: p <- Primary partition. fdisk: <- Just press return to chose the default first cylinder. fdisk: +sizeK <- Make a partition of the same size as /dev/hdx1. fdisk: w <- Write table to disk and exit.
Now copy the content of the original partition to that extra one.
# dd if=/dev/hdx1 of=/dev/hdy1 bs=1k
This process may take quite a long time dependent of how big the partition is. You can get the job done faster by increasing the blocksize, bs, but then you need to get the division of the partition by bs to have a remainder of zero.
From now on we will only work with that copy of the source partition to be able to step back if something goes wrong.