This is a common failure mode for hard drives. It's dead, and it cannot be repaired. The only question is whether you can recover any data from it. There are two options* - trying yourself with data recovery software, or sending it off to a data recovery company.
Recovering data yourself is an advanced topic and should be done with caution, as it's easy to permanently damage the drive and lose the data. If you're at all concerned about this, don't try it yourself, send it off to be professionally recovered.
My preferred software for data recovery is GNU ddrescue. The manual goes into great detail, but here's the short version:
- Boot up a linux system
- Connect another drive or file share larger than the failed hard drive, with room to spare
- Attach the failed hard drive
- Run
ddrescue -d -r3 /dev/sdc hdimage mapfile
where /dev/sdc
is the failed hard drive you want to recover, hdimage
is the location to store the recovered data, and mapfile
is the recovery log.
- If/when the drive quits during the recovery, you can power down/disconnect the failed drive, wait, power it back up, and try again with the same command. It will use the recovery log to know which parts of the disk were already attempted and skip those, trying new sections of the disk.
- After you have gotten all the data you are able, you can then mount the partition on the hdimage file. First, list the partitions in the image:
fdisk -lu hdimage
- Second, mount the desired partition, replacing
xxxx
with the offset listed in the previous output: mount -o loop,offset=xxxx hdimage /mnt
This method has been moderately successful for me. Of course, it all depends on how far gone your particular hard drive is. GNU ddrescue will tell you how much data it's recovered, and if it can get most of it, you have a reasonable chance of recovering your important files.
*There are actually more options for even more advanced users, but people who can do these are on par with professsional data recovery techs, and would not be asking this question.