I'd add my voice to Electro - if you need that data, don't fsck the only copy in the world.
I'm not sure how far you've gotten, but I'd start with parted (the GNU partition editor) to see if it can see the Linux partition. I'm sure parted is available for your distro (whatever it is). Whatever you do, DO NOT change anything
. Install it and do something like:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda3 23783500 13760800 10022700 58% /
tmpfs 258128 0 258128 0% /dev/shm
/dev/hdb1 82250252 62575016 19675236 77% /newhome
/dev/hda4 10327720 4386040 5941680 43% /mnt/myD
/dev/hda1 4184740 3170648 1014092 76% /mnt/myC
saopaolo:/home/lmm# parted /dev/hda
GNU Parted 1.6.9
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
This program is free software, covered by the GNU General Public License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
Error: The partition table on /dev/hda is inconsistent. There are many reasons
why this might be the case. However, the most likely reason is that Linux
detected the BIOS geometry for /dev/hda incorrectly. GNU Parted suspects the
real geometry should be 4865/255/63 (not 77545/16/63). You should check with
your BIOS first, as this may not be correct. You can inform Linux by adding
the parameter hda=4865,255,63 to the command line. See the LILO or GRUB
documentation for more information. If you think Parted's suggested geometry
is correct, you may select Ignore to continue (and fix Linux later).
Otherwise, select Cancel (and fix Linux and/or the BIOS now).
Information: The operating system thinks the geometry on /dev/hda is
4865/255/63. Therefore, cylinder 1024 ends at 8032.499M.
check MINOR do a simple check on the filesystem
cp [FROM-DEVICE] FROM-MINOR TO-MINOR copy filesystem to another
help [COMMAND] prints general help, or help on COMMAND
mklabel LABEL-TYPE create a new disklabel (partition table)
mkfs MINOR FS-TYPE make a filesystem FS-TYPE on partititon MINOR
mkpart PART-TYPE [FS-TYPE] START END make a partition
mkpartfs PART-TYPE FS-TYPE START END make a partition with a filesystem
move MINOR START END move partition MINOR
name MINOR NAME name partition MINOR NAME
print [MINOR] display the partition table, or a partition
quit exit program
rescue START END rescue a lost partition near START and END
resize MINOR START END resize filesystem on partition MINOR
rm MINOR delete partition MINOR
select DEVICE choose the device to edit
set MINOR FLAG STATE change a flag on partition MINOR
Disk geometry for /dev/hda: 0.000-38166.679 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.031 4094.692 primary fat32 boot
2 4094.692 4839.895 primary linux-swap
3 4839.895 28066.684 primary reiserfs
4 28066.685 38162.219 primary fat32 lba
If you can see it, you could try to copy the partition to your new drive (you'll need an empty partition of at least the same size, of course). If you have to resize a partition on your new drive to make room, MAKE A BACKUP before you start
And let that be a lesson to all of us: BACKUP BACKUP BACKUP!!!
Another alternative to buying another drive, if parted can't see it, your data is worth $89 and it's either ext2 or ext3, I'd recommend Stellar's Linux disk recovery tools
. I have not tried the Linux version, but the NTFS/FAT version was absolutely amazing at recovering my otherwise dead, 5 yr old 10G drive. There is a free demo that will tell you whether or not there's any hope of recovery. Sadly, you need a WinDoze (9X/ME/NT/2000/XP) box to run it on.
Good luck, and please let us know how it turns out.