This isn't the "Linux way" but you might want to try running Spinrite
on the drive first. Spinrite is a for-pay tool from GRC.com that boots
DOS from a CD or floppy and runs a sector-level scan of the hard
drive. It re-reads any bad sectors it finds until it recovers the data
and forces the drive to repair or reallocate it. I've used Spinrite on
a number of my drives to solve soft-error problems that were causing
slow boots. I've even used it to recover most of the drive where there
was physical damage. My chances of making a drive bootable again so I
could copy the info have been pretty good.

As long as the drive can be accessed, Spinrite should be able to read
it and will probably be able to repair any errors that are due to
failure of the drive's error correction. If it was just a weak sector,
you should use what they call "level four surface scan" to read and
refresh every sector on the drive. The "level 2 scan" will look for
sector errors and try to recover them but doesn't do the all sector
refresh. It has been shown that "level 2 scan" can often recover read
errors on a USB stick too, but I've never managed to fix a USB stick
if the OS doesn't recognize it first.... Don't use level 4 on a USB
stick.

Spinrite is a $90 solution that might reduce your aggravation, and for
you it would be a business expense. You buy it online from grc.com and
it is a very small download. If you look, you can find Spinrite v6 out
on various download sites and if it solves your problem, I'd hope
you'd buy a legal copy.

Whether you trust the hard drive in the future is up to you. I've
started using Spinrite on level 4 as preventative maintenance on my
laptop and desktop hard drives, just in case.... If you want details
how it works, read the web site. I'd bet someone could write a script
for Linux that would do most of what Spinrite does, but probably not
all....

The usual disclaimers apply, I'm not affiliated with the company and
have no financial interest. I just like the software and enjoy the
"Security Now" podcast.

Doug.