Try getting a live cd (such as the system rescue cd
). Burn the .iso file to a disk, then boot from the CD by hitting a key at your BIOS menu (usually F1 or F9) to bring up the boot menu, and select CD. Once you've booted and you have your prompt, plug in your external drive and try the following commands:
fdisk -l (that will show you all the disks attached to your computer. Typically the first disk [internal] is sda, and the USB disk is sdb.) The thing to take note of here is the last column on the list that contains /dev/sdb#, it should say NTFS, or FAT32, or something like that.
fsck /dev/sdb1 (that will check the file system on the first partition on your external drive. If it comes back with an errory, try fsck.NTFS or fsck.FAT32, whatever the file system was in the first part.)
testdsk /dev/sdb (That will initiate a harddrive test that could find/fix errors with your drive).
If none of that works, plug in another drive to make a backup of your external. Take note that it's important to have free space on the SECOND (not broken) external that is EQUAL TO or GREATER than the amount of USED space on the broken drive.
Once the backup drive is plugged in, type mount /dev/sdc1 /mnt/backup (if that doesn't work or it says something about NTFS and read only, type umount /mnt/backup; ntfs-3g /dev/sdc1 /mnt/backup).
Finally, type mkdir /mnt/backup/SDB to make a directory to store the files.
Now with the second drive, try to mount it using the advice for sdc (although change /mnt/backup to /mnt/windows)
If it mounts, then type rsync -av --progress /mnt/windows /mnt/backup/SDB/ which will start copying all the files onto the backup drive. NOTE: This will cause a lot of text to scroll, and will take a long time!
Once that's finished, you can restart into windows and format your drive, then plug in the extra drive and copy everything back over.
Hopefully that helps!