¿Por qué dosfsck trunca archivos?

¿Por qué dosfsck trunca archivos?

Tengo un problema bastante conocido, pero lamentablemente me falta un poco de conocimiento y espero encontrar una mejor idea aquí.

Entonces, tengo una memoria USB corrupta con un sistema de archivos FAT32. Hice un clon ddrescuey lo ejecuté testdisk. Se encontró una partición (¡uf!), así que creé un dispositivo de bucle losetup -f -P USB_clone.imgy lo monté. Hasta aquí todo bien, ahora comienza el problema: todos los archivos se encuentran con el tamaño que parece correcto ( ls -al), pero cuando intenté copiar un archivo obtuve un error de E/S. Así que desmonté la partición nuevamente y ejecuté dosfsck -l -r -v /dev/loop1p1. Algunos archivos se pueden recuperar, pero la mayoría de los archivos se reparan de una forma bastante interesante:

  File size is 27589006 bytes, cluster chain length is 32768 bytes.
  Truncating file to 32768 bytes.

Esto da como resultado archivos truncados; obviamente esto no es lo que quiero...

Entonces esto me lleva a algunas preguntas:

  1. ¿Qué pasa aquí? Parece que los tamaños de los archivos se pueden detectar correctamente, pero algo anda completamente mal en, hm, bueno, ¿qué? ¿Quizás una tabla de particiones? ¿Por qué dosfsckno se puede solucionar este problema cuando el nombre y el tamaño del archivo se pueden detectar correctamente?

  2. Y por supuesto lo más importante: ¿hay alguna forma de recuperar estos archivos?

Si necesitas más información ¡solo solicítala!

¡Muchas gracias!

Respuesta1

Hay una buena explicación de la fragmentación del sistema de archivos FAT enQuora: ¿Cómo maneja el sistema operativo los sectores fragmentados en formato fat32 para recuperar los datos completos?Por Irné Barnard.

Cada sector tiene una parte en la parte posterior (o en el frente, cualquiera que sea el diseño detallado, pero en algún lugar dentro de ese sector)... algo que indique "siguiente sector en la posición X". Esto está en el diseño de todos los sistemas de archivos basados ​​en FAT, incluido FAT32. Y también es la razón por la que la fragmentación hace que el acceso a los archivos sea lento en FAT.

Así es como funciona:

  1. Usted (o algún programa que esté ejecutando) envía al sistema operativo una solicitud para abrir el archivo.
  2. El sistema operativo pasa la solicitud al sistema de archivos.
  3. El FS (FAT) verifica la ruta + el nombre del archivo y encuentra la primera carpeta en la ruta indicada.
  4. Luego lee su tabla de carpetas raíz (es decir, el inicio de la jerarquía de carpetas de la unidad). Esto le da un número de sector para la primera carpeta en la ruta.
  5. Luego continúa leyendo la tabla de esa carpeta, comparándola con la siguiente carpeta en la ruta indicada. Repitiendo hasta encontrar el último nombre de archivo/carpeta en la ruta.
  6. Esto le proporciona el sector donde comienza el archivo, así como el tamaño del archivo, para que sepa cuándo ha encontrado todos sus sectores (simple suma de tamaños de sector).
  7. Lee ese primer sector y verifica sus metadatos (es decir, el puntero al siguiente sector).
  8. Lee ese también, agrega el tamaño de datos del sector al recuento ya leído. Si aún es menor que el tamaño del archivo, continúa al siguiente sector en metadatos y se repite.

El quid de la cuestión es que los archivos que se truncan probablemente estén fragmentados. Cuando un programa de recuperación revisa los bloques e intenta encontrar el siguiente fragmento, ha decidido no confiar en dónde cree que está el siguiente bloque.

Las reglas y problemas que dosfsckse utilizan para comparar y decidir cuándo truncar están enhttps://linux.die.net/man/8/dosfscky es difícil saber por qué se trunca sin saber qué daño sufrió el disco para empezar. Si se borró la FAT, es posible que no crea que ninguno de los clústeres enumerados en la cadena de clústeres esté en uso y usted cumpla con la regla.File contains bad or free clusters. The file is truncated.

dosfsckno es una herramienta de recuperación. Es una herramienta de reparación que asume que el disco está básicamente "bien" para empezar.

Es posible que desee considerar la posibilidad de ejecutar herramientas de recuperación adecuadas, comophotorec que puede recuperar mucho más que solo fotoso testdiskque puede hacermucho más que simplemente copiar particiones.

información relacionada