Siempre he usado el dd_rescue de Garloff con buenos resultados, así que no he visto la necesidad de innovar.
A lo mejor has tenido buena suerte hasta ahora, pero quizá te interese esta referencia al algoritmo de dd_rescue tomada del manual de GNU ddrescue [gnu.org].
"Other programs switch to small size reads when they find errors, but this is a bad idea because it means spending more time at error areas, damaging the surface, the heads and the drive mechanics, instead of getting out of them as fast as possible. This behavior reduces the chances of rescuing the remaining good data."
Cuando empecé a usar la herramienta, la versión GNU aún no existía, lo que si existía en los repositorios era una herramienta tambien llamada ddrescue, escrita en bash por Antonio Diaz que funcionaba haciendo llamadas por debajo a/bin/dd con la que tuve escaso éxito en mis pruebas.
La herramienta en bash de la que hablas nunca existió. Ddrescue [gnu.org] siempre ha sido un programa C++. Lo sé bien, yo soy Antonio Díaz:-). ¿Quizá te refieres a dd_rhelp [kalysto.org]?
-- A truly clever developer will create code so easy to understand that a less than average developer could debug it.
Re:dd_rescue vs GNU ddrescue
(Puntos:3, Informativo)( http://savannah.gnu.org/users/antonio )
"Other programs switch to small size reads when they find errors, but this is a bad idea because it means spending more time at error areas, damaging the surface, the heads and the drive mechanics, instead of getting out of them as fast as possible. This behavior reduces the chances of rescuing the remaining good data." La herramienta en bash de la que hablas nunca existió. Ddrescue [gnu.org] siempre ha sido un programa C++. Lo sé bien, yo soy Antonio Díaz
A truly clever developer will create code so easy to understand that a less than average developer could debug it.