Tengo un disco duro con bloques defectuosos o sectores que no se pueden leer debido a posibles problemas mecánicos, como una cabeza de disco defectuosa, un motor defectuoso o algún otro problema que hace que el disco duro lea datos insoportablemente lento y con mucho de errores de lectura. Veo un promedio de 50 KB / seg, con algunas lecturas que caen por debajo de 10 KB / seg, y con frecuencia se atasca en un archivo o sector por completo, generalmente durante bastante tiempo, de 2 a 10 minutos o más (cuando usando rsync, antes de que se agote el tiempo de espera).
La velocidad parece variar enormemente, y se atasca mucho en los archivos, y cuando finalmente se "despega", solo parece durar un breve estallido antes de quedar atascado nuevamente. El disco también es muy silencioso con solo un sonido ocasional de copia de archivos (generalmente cuando se atasca / despega por un breve tiempo, antes de atascarse nuevamente). Por lo tanto, no hay ninguno de esos sonidos malvados que normalmente están asociados con la muerte del disco duro. Alguien sugirió que los problemas sonaban como si pudieran ser causados por una cabeza de disco desalineada, lo que requiere muchas relecturas antes de que finalmente lea los datos con éxito. Suena plausible, pero estoy divagando ...
De todos modos, el problema con rsync es que parece no tener un soporte decente para el manejo de errores. Obviamente, no fue diseñado para recuperar datos de discos duros defectuosos, pero todas las llamadas utilidades de "recuperación de datos" que están destinadas a tal uso generalmente se centran en la recuperación de archivos eliminados o particiones desordenadas, en lugar de copiando archivos de discos duros moribundos. Obviamente, la recuperación de archivos borrados no es lo que necesito, por lo que quizás puedas entender mi decepción por no poder encontrar lo que busco todavía.
Naturalmente, aquí es donde probablemente diría "¡Debería usar ddrescue!" Bueno, eso está muy bien, pero ya tengo una copia de seguridad de la mayoría de los datos, así que solo quiero recuperar ciertos archivos. No me preocupa tratar de recuperar una partición completa bloque por bloque como lo hace ddrescue. Solo estoy interesado en rescatar solo archivos y directorios específicos.
Idealmente, lo que me gustaría es una especie de cruce entre rsync y ddrescue: algo que me permita especificar el origen y el destino como directorios de archivos normales como rsync (en lugar de dos particiones completas como lo requiere ddrescue), con una forma de omitir archivos con errores en una ejecución inicial, y luego me permite intentar recuperar esos archivos con errores en una ejecución posterior (con un comando ligeramente alterado, por supuesto), tal vez incluso ofreciendo una opción para especificar el número de intentos de reintento ... al igual que cómo funciona ddrescue con bloques, solo quiero una utilidad que funcione con archivos / directorios específicos como rsync.
Entonces, ¿estoy soñando despierto aquí, o existe algo allá afuera que pueda hacer esto? ¿O tal vez incluso una forma de hacer que rsync o ddrescue funcionen de esa manera? Estoy realmente abierto a cualquier solución que funcione, siempre y cuando me permitan elegir qué archivos quiero "rescatar", y pueda omitir archivos con errores en la ejecución inicial, e intentar / volver a intentar esos errores más tarde.
Hasta ahora he intentado rsync con las siguientes opciones, pero a menudo se queda atascado en un archivo por más tiempo que el tiempo de espera, e idealmente me gustaría pasar al siguiente archivo y volver más tarde a los archivos que obtiene pegado Sin embargo, no creo que sea posible. De todos modos, esto es lo que he estado usando hasta ahora:
rsync -avP --stats --block-size=512 --timeout=600 /path/to/source/* /path/to/destination/