Usando ddrescue para recuperar una unidad rota. ¿Puedo verificar el progreso antes de que se complete la ejecución?

Usando ddrescue para recuperar una unidad rota. ¿Puedo verificar el progreso antes de que se complete la ejecución?

Actualmente estoy ejecutando ddrescueuna unidad que falló. Ha estado funcionando durante aproximadamente 16 horas y todavía está en la etapa de división de bloques fallidos, pero ha estado funcionando a 0 B/s desde hace algún tiempo. Estoy copiando directamente en otra unidad, no creando una imagen.

¿Puedo verificar qué progreso se ha logrado o eso alterará algo? Solo hay un proyecto en la unidad fallida que realmente necesito, solo quiero verificar si esos archivos ya se han copiado.

El comando que ejecuté fue:

ddrescue -d -f -v /dev/sda5 /dev/sdc2 /media/username/USB/rescue.logfile

Estoy ejecutando Ubuntu y el sistema operativo de las unidades antiguas era Arch, si eso importa.

Respuesta1

En teoría, puede terminar ( ctrl+ C) ddrescuey ejecutarlo más tarde con el mismo archivo de registro para que continúe en lugar de comenzar de nuevo. He visto algunas publicaciones que afirman que este método no siempre funciona; en estos casos, ddrescueignoré el trabajo anterior y comencé desde el principio por motivos desconocidos.

Intente montar la partición de destino en modo de solo lectura:

sudo mount -o ro /dev/sdc2 /mnt/foo

Como es de solo lectura, no debería afectar ddrescuela operación. Existe el riesgo de que los datos cruciales para el sistema de archivos aún no se recuperen; en este caso, mountfallarán. Con un poco de suerte, es posible que pueda montar y luego leer los archivos que necesita, pero es posible que los archivos estén dañados incluso si no obtiene ningún error de mounty (p. ej.) cp. Inspeccionarlos o sus copias. No finalice ddrescuea menos que se asegure de que los archivos sean válidos y sin fragmentos no recuperados/estropeados en su interior.

En caso de algún problema, puede esperar para ddrescuerecuperar más datos (si los hay). No esperaría a que aparezcan los archivos no dañados bajo el punto de montaje, porque el sistema puede almacenar en caché los metadatos o los archivos mismos, etc. Espere umounta que se recuperen más datos mountnuevamente y verifique los archivos.


Editar: respondiendo preguntas adicionales.

¿Hay alguna manera de decirle a ddrescue que especifique una carpeta en particular?

No. La herramienta funciona a nivel de bloque. No sabe nada sobre el sistema de archivos y los archivos. Su declaración "ddrescuelog dice que el 99,73% de mis archivos se han recuperado" debería decir "99,73% de los bloques".

Además, ¿es posible que los datos se hayan recuperado, ya que dice que se rescataron el 99,73%, pero están demasiado dañados para ser reconocidos como archivos? Si este es el caso, ¿hay algún programa para ver archivos dañados? Tal vez pueda recuperar algunos manualmente.

Posible escenario: el contenido del archivo se recupera pero la entrada correspondiente al sistema de archivos no (nota: en general, también es posible lo contrario, pero obviamente no es su caso). Dijiste que toda la carpeta desapareció. Creo que algunos de los archivos pueden aparecer lost+founddespués fsck(o de forma similar dependiendo de su sistema de archivos; no sé qué es).

Más información aquí:¿Cuál es el propósito de la carpeta perdidos+encontrados en Linux y Unix?

Esta fsckoperación no es de sólo lectura, no debe realizarse cuando ddrescueestá funcionando. Terminar ddrescue, ejecutar fscky reanudar ddrescuetambién es algo malo. Es mejor esperar a ddrescueque termine. Puede llevar algún tiempo – leeresteyeste.

En general, deberías trabajar con fsck(o cualquier otra herramienta que no sea de solo lectura) en una copia de tus datos recuperados. Buen camino a seguir, para referencia futura:

  1. Escriba en un archivo, no en un dispositivo. Utilice un sistema de archivos concopia en escritura (COW)característica.
  2. Hacer unaVACAcopia con cp --reflink=always. Puede hacer esto durante ddrescuela operación. Esta copia es como una instantánea de su archivo de destino.
  3. Utilice cualquier herramienta en la copia, incluidas las que no son de solo lectura.
  4. En caso de falla, todavía tiene el archivo de destino original (tal vez con más datos recuperados, si ddrescuetodavía está ejecutándose) para comenzar de nuevo con otroVACAcopiar (y tal vez con diferentes herramientas).

También puedes intentar buscar archivos eliminados y recuperarlos. La elección de una herramienta depende del sistema de archivos.

Otra pista: tal vez su software estaba usando archivos temporales en algún otro lugar de la jerarquía del sistema de archivos. Controlar /tmp/, /var/tmp/.


Editar, respondiendo preguntas adicionales.

Cuando ddrescuelog dice que el 99,73% de los bloques han sido rescatados, ¿qué significa eso exactamente? Parece que debería esperar algunos resultados, no un viaje a casa vacío.

Nota: el siguiente ejemplo no pretende cubrir todos los problemas y escenarios del sistema de archivos, ni distinguir los sectores del disco de las unidades de asignación del sistema de archivos; es solo para responder la pregunta.

Imagine que su partición es un libro, una enciclopedia, no una novela con un argumento. Los archivos son artículos dentro. El bloque de disco (o sector) es como una página de un libro. El sistema de archivos es una forma general de colocar artículos en páginas. Algunas páginas contienen elTabla de contenidos (ToC)que es un problema del sistema de archivos en nuestra imagen y puede verse así:

artículo #289: páginas 2076, 2077, 2078, 402, 403.

Tenga en cuenta que este artículo está tan fragmentado como puede estarlo un archivo. En otra página, pero aún dentroToCtenemos algo así como estructura de carpetas:


people/: verToCen la página 43.

(página 43)
mathematicians/: consulteToCen la página 80.
famous Poles/: verToCen la página 82.
Adam and Eve: consulte el artículo n.º 14.

(página 80)
Euclid: ver artículo #289.
Banach Stefan: ver artículo #4380.

(página 82)
Banach Stefan: consulte el artículo n.º 4380.
Kościuszko Tadeusz: ver artículo #2208.

Esta estructura es un ejemplo de archivos vinculados. Hay al menos dos caminos que apuntan a un único artículo: ./people/mathematicians/Banach Stefany ./people/famous Poles/Banach Stefan. Aquí coloqué el punto al principio de cada ruta porque mi ejemplo oculta deliberadamente la información: ¿a qué sección pertenece people/la sección? (también puede ser /people/o /full articles/people/o /stubs/people/o /foo/bar/people/).

ElToCTambién puede tener una sección que diga:

Páginas "vacías": 567, 568, 569, 2070, 2071…

Una página determinada tiene texto (es decir, datos) incluso si no pertenece a ningún artículo existente en ese momento. Esto se debe a que el proceso de eliminación de un artículo afecta sóloTabla de contenido. ElToCes la única forma segura de saber si una página determinada pertenece a un artículo, a qué artículo, o puede tratarse como vacía y sobrescrita. Además: no hay forma de detectar una "página vacía" sinToC. Se siente extraño en una enciclopedia tener una página en blanco para ser parte de un artículo, pero el sector lleno de 0espacios o cualquier otra cosa puede ser parte de un archivo. Se trata deToC.

Algunas de sus páginas (bloques) no han sido rescatadas (aún). Cualquiera de ellas puede ser una página con datos de artículo oToc-metadatos. Posibilidades:

  • El bloque que falta es el bloque de datos (digamos, página 2078). Conoces la ruta al artículo sobre Euclides y en qué páginas se encuentra, pero una de las páginas está en blanco cuando no debería. El artículo no es válido.
  • El bloque que falta es el bloque de metadatos. Algunos escenarios:
    • Perdiste la noción del espacio libre.
    • Sabes que hay ./people/mathematicians/Euclidun camino pero te falta información en qué páginas se encuentra el artículo. Es imposible encontrar el artículo a menos que ya sepa algo sobre él (por ejemplo, una entrada sobre una persona probablemente tenga la palabra "nacido"; los archivos PDF comienzan con "%PDF").
    • Sabes que hay un solo artículo en tal o cual página, pero no hay una ruta completa hasta él. En ese caso puedes colocarlo debajo lost+foundy eso es lo que fsckservirá. En nuestra imagen hay posibilidades (entre otras):
      • Falta la página 80: sabes (de la página 43) que hay mathematiciansuna sección (carpeta), pero no sabes que el artículo n.° 289 debería estar allí con el nombre "Euclides".
      • Falta la página 43: no sabes que debería haber el artículo #14 sobre Adán y Eva, ni secciones con matemáticos ni polacos famosos; pero puedes ver (en la página 80) que hay una sección con artículos sobre Euclides y Banach, y hay otra sección (página 82) con artículos sobre Banach y Kościuszko.Esto es lo que puede estar pasando con tu /home.Los artículos (archivos) están ahí y pueden ser válidos. No se puede llegar a ellos por camino porque no tienesTocde tu /home.
  • Cualquier combinación de los problemas anteriores puede ocurrir si hay varios bloques no recuperados.
  • El bloque faltante puede marcarse como vacío. En este caso no pierdes nada.

información relacionada