ddrescue has this option:
minimum read rate of good areas in bytes/s
If you specify it on your command line with a decent size like
10M, with any luck, areas that are still able to read but extremely slow will be skipped first, and continue with other areas the drive is still able to read performantly.
Depending on how much is missing in the end, you can still follow it up with a slow pass afterwards.
It's also possible to run
--reverse mode or force it to start at a specific offset with
--input-position=X so if
ddrescue doesn't skip into a faster region by itself you can force it to do that manually.
Is this really what recovering a failed hard drive feels entails?
Hard to tell since there are so many different types of failures. It also depends on the type of drive, how it handles errors, and sometimes also how the controller itself reacts to bad drives. Check
dmesg for any noise, see if there are bus resets, those should not happen just because a drive encounters a read error. (If that happens, perhaps increase
If your drive supports SCTERC (unlikely for desktop consumer drives) you might be able to tell the drive to not even attempt internal error correction but return read errors directly.