Herramientas utilizadas.
Conceptos básicos a tener en cuenta.
Clúster = Bloque
Conocer los sectores defectuosos.
Generar una imagen del disco saltándose los sectores defectuosos y anotándolos en el fichero logfile.
ddrescue -v -d -r 3 /dev/sdd3 imagen_disco.img logfile
Ejemplo del contenido del fichero logfile.
# Rescue Logfile. Created by GNU ddrescue version 1.16 # Command line: ddrescue -d /dev/sdd3 imagen_disco.img logfile # current_pos current_status 0x02499600 + # pos size status 0x00000000 0x02499800 + 0x02499800 0x00000200 - 0x02499A00 0x9142566600 +
Bloque dañado. (Símbolo -)
0x02499800 0x00000200 -
Pasamos de hexadecimal a decimal.
echo $((16#02499800)) 38377472
Consultamos el tamaño del clúster del disco / imagen NTFS.
ntfsinfo -m -f imagen_disco.img .... Cluster Size: 4096 Index Block Size: 4096 ...
Dividimos el valor de posición inicial de bloque entre el tamaño del clúster para averiguar el número de cluster que pertenece a ese bloque corrupto.
38377472 / 4096 = 9369
¿Por qué se divide? Supongamos que el disco es una carretera, la posición de ese bloque defectuoso vendría dada en metros, en el metro número 38377472 la carretera tiene un problema. Pero queremos saber a qué kilómetro (clúster) pertenece ese tramo, por lo tanto se debe dividir.
Mostrar el fichero que se encuentra en dicho clúster.
ntfscluster -f -c 9369 sdd3.img 2>> /dev/null Searching for cluster 9369 Inode 89381 /Windows/System32/atidxx64.dll/$DATA
Fuente: http://radagast.ca/linux/how-to-find-the-ntfs-filename-associated-with-a-bad-block-using-linux.html