There are two similar tools for a dd on bad hardware:
What is the difference between dd_rescue and ddrescue, when to prefer which one?
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.Sign up to join this community
ddrescue first quickly copies good blocks using a large block size and then optionally tries to recover more data reading smaller blocks within the blocks that failed in the first pass. This requires a log file that records what areas are still missing and the output must go to a file or disk that allows random access. If run again with the log file present,
ddrescue will try again reading the missing parts only.
dd_rescue copies the data in sequential order, allowing it to be captured on stdout, e.g. to compress it before writing it to a file. When a read error is encountered
dd_rescue switches temporarily to a smaller block size to try to recover data from the problematic area before continuing with the remainder of the disk.