This command copies as much as possible from a failing drive into a disk image
ddrescue -n /dev/sdX copy.img rescue.map
The second round uses multiple tries in attempts to also rescue previously identified bad blocks.
ddrescue -d -r3 -n /dev/sdX copy.img rescue.map
ArchWiki - Disk cloning
Unix StackExchange - Please help me rescueing a failing hard drive
TODO: testdisk
TODO: photorec
TODO: foremost