This is a great issue on windows systems actually. If hard drive start failing, it freeze up the whole system even it could be a backup and external storage drive.
If it would be me, I would try to recover/cure old hard drive before moving data to another drive to be make sure all data are actual. You can explore software at http://hddguru.com that scanning hard drive and enforce HDD firmware to replace broken sectors. To be able to do it efficiently you might need to have PC that can operate in IDE mode (instead of AHCI). HDD makers trying to keep sectors replacement as last resort, when some threshold of error will triggered, HDD's firmware would "cure" bad sectors (actually replaced bad sectors with spare healthy ones). Just keep in mind, if you would be able to cure all bad sectors, do not use it, but copy content ASAP to another disk.
I have a pretty good recovery experience with DOS version of Victoria from hddguru. (there might be an obstacle - it has Russian interface but it really deserve translation) Even worst numbers in SMART diagnostic might be cured if you have a patience. Well, as I said, if hard drive start failing and SMART parameters 5,196,197 is greater than 0, it will soon fail completely, but in most cases cure such drives with Victoria is more than enough to copy all data to a healthy HDD.
If you don't want to mess up with recovery, you can use any Live Linux CD, a good candidate is http://www.system-rescue-cd.org/ where you can use ddrescue
utility to transfer data from bad disk.
Here is a good example how to use ddrescue
:
https://www.data-medics.com/forum/how-to-clone-a-hard-drive-with-bad-sectors-using-ddrescue-t133.html
First you need to spot correct name of your external (broken hard drive).
When SystemRescueCD finished to load to console, type startx
to run desktop. When it finished, go to Menu->System->Show filesystems and spot your external drive by brand or label and what name operation system is assigned to it. Usually primary hard drive would be listed as /dev/sda and all other as /dev/sdb, /dev/sdc ... and so on. Write it down, your bad hard drive name and drive name that you would use as a target (where you going to copy to) then
in yellow terminal windows run
ddrescue -f /dev/sdb /dev/sdc /root/log01.log
where /dev/sdb
- is a bad drive and /dev/sdc
is target drive where you going to copy to.