Annubis
Capitaaaan cavernicolaaaa
- Registrado
- 2 Sep 2013
- Mensajes
- 9.558
- Puntos
- 113
Bueno, debido a que le estoy haciendo una recuperación de datos a un usuario del foro que vive cerca de mí, he decidido compartir con vosotros el método usado, para que sepáis hacerlo como los "pros" xD El disco estaba muy, pero que muy jodido, ya que se le había dado un golpe importante. Desde Windows no dejaba acceder a alguna de las particiones, dando errores del tipo "El parámetro no es correcto" o de "Redundancia cíclica". Desde Linux la cosa no pintaba mucho mejor, ya que en el log de sistema, aparecían errores de entrada/salida cada pocos segundos. Así que me puse manos a la obra, para hacer una imagen completa del disco con ddrescue y a partir de ahí, recuperar los datos.
Para hacer la imagen utilicé el siguiente comando:
Después de dos días haciendo dicha imagen (el disco era de 320GB y como dije antes, estaba realmente jodido), obtuve una imagen de ~300GB con los datos en bruto. Luego me dispuse a comprobar qué había dentro de dicha imagen con el comando mmls:
De ahí podemos ver que hay 1 tabla de particiones, 1 partición en FAT32 (de ~10GB) y 2 particiones NTFS (de ~150GB) y espacio sin asignar, así que nos disponemos a extraerlas de la imagen original para poder operar sobre ellas más cómodamente. Para ello usamos el comando dd y los parámetros adecuados:
Como véis, con el parámetro bs se le dice el tamaño del sector que usa el disco, con skip se le dice en qué sector debe empezar leer y con count cuántos sectores debe guardar, los parámetros if y of son los ficheros de entrada y de salida. Después hacemos lo mismo con las otras 2 particiones.
Ahora montamos las imágenes resultantes como si de ISOs se tratar para poder acceder a ellas como si fueran discos normales:
Lo montamos con el modificador ro para que se monte en modo sólo lectura y así prevenirnos para en caso de cargarla no se borre nada xD
Actualización: He encontrado otro método para montar las particiones que, la verdad, es más cómodo y rápido, pues nos ahorra el paso de extraer las particiones del disco. Se trata del comando kpartx, que lo que hace es leer una tabla de particiones y mapear como dispositivos en el sistema las particiones contenidas en ella. Para más información, man kpartx:
Con el modificador -a le dicemos que añada las particiones que encuentre como nuevos dispositivos al sistema, y con -v le decimos que nos muestre la información detallada de lo que haga. Automáticamente nos ha añadido las 3 particiones como nuevos dispositivos. Ahora sólo nos queda montarlas:
Y... ¡se hizo la luz!
Vemos el contenido de la partición, que no es más que la partición de recuperación del portátil al que pertencecía el disco escacharrado. Ahora sólo nos queda copiar los datos que queramos salvar a donde queramos y seguir con el resto de imágenes.
Actualización 2: Como una de las particiones parecía estar realmente dañada, al usar kpartx y luego querer montar la imagen, daba un error de que no reconocía el sistema de ficheros de dicha partición, así que pensando en otro método para poder acceder a dicha información, se me ocurrió usar el propio chkdsk de Windows para que comprobara la integridad del disco y, en caso de ser necesario que reparara lo que pudiera. Como no tengo ningún Windows instalado "físicamente" en ninguna de mis máquinas y usé VirtualBox para ejecutar el chkdsk, me tocó "convertir" la imagen "en bruto" a un formato reconocible por VirtalBox, por ejemplo VDI, aunque valen todos los formatos de discos virtuales soportados por éste software de virtualización:
Después de ello, vamos a la configuración de la máquina virtual que vayamos a usar para la operación y añadimos la imagen creada por el anterior comando, como un disco secundario. Al iniciar la máquina virtual, veremos tantas unidades como particiones tuviera el disco duro fallecido. En el caso que nos ocupa, eran 3: 2 accesibles y una inaccesible, que concretamente nos pedía formatear antes de acceder a ella (cosa que no queríamos y no hay que hacer bajo ningún concepto xD). Así que abrimos una línea de comandos de Windows como administrador y ejecutamos la orden:
Aquí hará una comprobación completa del sistema de ficheros y reparará todo lo que pueda repararse. Cuando termine, ya podremos acceder a dicha partición normalmente y sacar (si queremos) toda la información que nos de la gana. Ahora sí, hemos terminado :fiesta:
Ale chapuzas, hasta la próxima. Recordad hacer éstas cosas siempre con la supervisión de un adulto.
Fuente: tener los huevos pelados de tanto hacerlo :ECI:
Para hacer la imagen utilicé el siguiente comando:
Código:
ddrescue -A --no-scrape /dev/sdX imagen.img imagen.log
Después de dos días haciendo dicha imagen (el disco era de 320GB y como dije antes, estaba realmente jodido), obtuve una imagen de ~300GB con los datos en bruto. Luego me dispuse a comprobar qué había dentro de dicha imagen con el comando mmls:
Código:
# mmls imagen.img
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors
Slot Start End Length Description
00: Meta 0000000000 0000000000 0000000001 Primary Table (#0)
01: ----- 0000000000 0000002047 0000002048 Unallocated
02: 00:00 0000002048 0020482047 0020480000 Win95 FAT32 (0x0b)
03: 00:01 0020482048 0322828287 0302346240 NTFS (0x07)
04: 00:02 0322828288 0625139711 0302311424 NTFS (0x07)
05: ----- 0625139712 0625142447 0000002736 Unallocated
De ahí podemos ver que hay 1 tabla de particiones, 1 partición en FAT32 (de ~10GB) y 2 particiones NTFS (de ~150GB) y espacio sin asignar, así que nos disponemos a extraerlas de la imagen original para poder operar sobre ellas más cómodamente. Para ello usamos el comando dd y los parámetros adecuados:
Código:
dd if=imagen.img bs=512 skip=2048 count=20480000 of=particion1.img
Como véis, con el parámetro bs se le dice el tamaño del sector que usa el disco, con skip se le dice en qué sector debe empezar leer y con count cuántos sectores debe guardar, los parámetros if y of son los ficheros de entrada y de salida. Después hacemos lo mismo con las otras 2 particiones.
Ahora montamos las imágenes resultantes como si de ISOs se tratar para poder acceder a ellas como si fueran discos normales:
Código:
mount -o ro,loop particion1.img /mnt/imagen/
Lo montamos con el modificador ro para que se monte en modo sólo lectura y así prevenirnos para en caso de cargarla no se borre nada xD
Actualización: He encontrado otro método para montar las particiones que, la verdad, es más cómodo y rápido, pues nos ahorra el paso de extraer las particiones del disco. Se trata del comando kpartx, que lo que hace es leer una tabla de particiones y mapear como dispositivos en el sistema las particiones contenidas en ella. Para más información, man kpartx:
Código:
# kpartx -a -v imagen.img
add map loop0p1 (252:1): 0 20480000 linear /dev/loop0 2048
add map loop0p2 (252:2): 0 302346240 linear /dev/loop0 20482048
add map loop0p3 (252:3): 0 302311424 linear /dev/loop0 322828288
Con el modificador -a le dicemos que añada las particiones que encuentre como nuevos dispositivos al sistema, y con -v le decimos que nos muestre la información detallada de lo que haga. Automáticamente nos ha añadido las 3 particiones como nuevos dispositivos. Ahora sólo nos queda montarlas:
Código:
mount /dev/mapper/loop0p1 /mnt/imagen/ -o ro
Y... ¡se hizo la luz!
Código:
# ls -lh /mnt/imagen/
total 233M
-rwxr-xr-x 1 root root 232M oct 1 2008 ACERBOOT.ISO*
drwxr-xr-x 3 root root 8,0K feb 13 2008 boot/
-rwxr-xr-x 1 root root 326K ene 18 2008 bootmgr*
drwxr-xr-x 4 root root 8,0K feb 13 2008 d2d/
drwxr-xr-x 3 root root 8,0K feb 13 2008 EFI/
drwxr-xr-x 2 root root 8,0K nov 14 2008 FACTORY/
-rwxr-xr-x 1 root root 142 nov 14 2008 ImageInfo.dat*
drwxr-xr-x 2 root root 8,0K feb 13 2008 logs/
drwxr-xr-x 2 root root 8,0K oct 10 2010 MSI10906.tmp/
-rwxr-xr-x 1 root root 2,3K oct 6 2008 NAPP.DAT*
-rwxr-xr-x 1 root root 31 nov 14 2008 NewEnv.bat*
-rwxr-xr-x 1 root root 11 jul 7 2005 p1.dat*
-rwxr-xr-x 1 root root 286 nov 16 2007 PRED2D.BAT*
-rwxr-xr-x 1 root root 1,6K mar 21 2008 PRENAPP.BAT*
-rwxr-xr-x 1 root root 333 nov 14 2008 RCD.DAT*
-rwxr-xr-x 1 root root 1,6K feb 22 2008 RENDSI.BAT*
-rwxr-xr-x 1 root root 230 nov 23 2009 Restore.dat*
-rwxr-xr-x 1 root root 37 nov 14 2008 SetActivePT.txt*
drwxr-xr-x 2 root root 8,0K feb 13 2008 sources/
-rwxr-xr-x 1 root root 69 oct 20 2008 SWCD.DAT*
-rwxr-xr-x 1 root root 101 oct 20 2008 SYSTEMCD.DAT*
-rwxr-xr-x 1 root root 188K ene 14 2008 WISINIBT.EXE*
drwxr-xr-x 2 root root 8,0K nov 14 2008 WisTools/
drwxr-xr-x 2 root root 8,0K nov 14 2008 X64/
drwxr-xr-x 2 root root 8,0K nov 14 2008 X86/
Vemos el contenido de la partición, que no es más que la partición de recuperación del portátil al que pertencecía el disco escacharrado. Ahora sólo nos queda copiar los datos que queramos salvar a donde queramos y seguir con el resto de imágenes.
Actualización 2: Como una de las particiones parecía estar realmente dañada, al usar kpartx y luego querer montar la imagen, daba un error de que no reconocía el sistema de ficheros de dicha partición, así que pensando en otro método para poder acceder a dicha información, se me ocurrió usar el propio chkdsk de Windows para que comprobara la integridad del disco y, en caso de ser necesario que reparara lo que pudiera. Como no tengo ningún Windows instalado "físicamente" en ninguna de mis máquinas y usé VirtualBox para ejecutar el chkdsk, me tocó "convertir" la imagen "en bruto" a un formato reconocible por VirtalBox, por ejemplo VDI, aunque valen todos los formatos de discos virtuales soportados por éste software de virtualización:
Código:
VBoxManage convertfromraw --format VDI imagen.img imagen.vdi
Después de ello, vamos a la configuración de la máquina virtual que vayamos a usar para la operación y añadimos la imagen creada por el anterior comando, como un disco secundario. Al iniciar la máquina virtual, veremos tantas unidades como particiones tuviera el disco duro fallecido. En el caso que nos ocupa, eran 3: 2 accesibles y una inaccesible, que concretamente nos pedía formatear antes de acceder a ella (cosa que no queríamos y no hay que hacer bajo ningún concepto xD). Así que abrimos una línea de comandos de Windows como administrador y ejecutamos la orden:
Código:
chkdsk /r x:
Aquí hará una comprobación completa del sistema de ficheros y reparará todo lo que pueda repararse. Cuando termine, ya podremos acceder a dicha partición normalmente y sacar (si queremos) toda la información que nos de la gana. Ahora sí, hemos terminado :fiesta:
Ale chapuzas, hasta la próxima. Recordad hacer éstas cosas siempre con la supervisión de un adulto.
Fuente: tener los huevos pelados de tanto hacerlo :ECI:
Última edición: