Amanecemos un día tranquilo, hace sol, los pajaros cantan, etc… y cuando vamos a por nuestro CD backup de datos y lo introducimos en nuestro flamante Linux, o intentamos arrancar este, resulta que no hay manera de acceder al disco duro o CD/DVD, nos salen sapos y culebras por la boca.
Calma, no lo des todo por perdido, aun podremos rescatar todo o parte de los que verdaderamente es importante, gracias a ddrescue.
A través de synaptic o como root desde el terminal instalamos:
# aptitude install ddrescue magicrescue
Una vez instalado empezamos la lectura de la superficie del disco a tratar.
En este punto hay que hacer una aclaración para que no se vuelva nadie loco. En caso de usar Ubuntu el comando a ejecutar se llama ddrescue pero en caso de Debian el comando se llama dd_rescue a pesar de que el paquete a instalar se llama ddrescue.
Vamos con 2 supuestos:
Extracción datos de CD / DVD
# dd_rescue /dev/hda miiso.iso
Suponemos que hda es la unidad CD/DVD.
Este proceso puede llevar bastante tiempo, todo depende de lo deteriorado que estén los datos en el soporte. Una vez que haya terminado ya tendremos un fichero ISO el cual podremos montar, si nos deja con el comando:
# mkdir /media/mi_cd_imagen
# mount -t iso9660 -o loop miiso.iso /media/mi_cd_imagen# ls /media/mi_cd_imagen
Si el comando mount al intertar montarlo nos da un error de que no puede montar la unidad porque no reconoce el archivo como una iso9660 valida, entonces la iso esta tan deteriorada que no es reconocida y por tanto tendremos que extraer los archivos legibles de la iso con el comando magicrescue que encontrarás en un apartado mas abajo llamado «Rescate con magicrescue».
Extracción datos de disco duro / Pendrive
Suponemos que la unidad de disco duro que queremos rescatar es la partición de datos que esta en /dev/sda2 , entonces ejecutaríamos:
Esto genera un fichero imagen del disco en otro disco. Si quisieramos rescatar todo el disco se pondría
solamente.
Si lo que queremos es recuperar la partición, pero salvarla copiandola en otra partición de otro disco sin hacer una imagen de ella, sería de la forma:
Hay que tener en cuenta que si la tabla de particiones de la unidad sda esta dañada, al hacer esta operación, es muy posible que la partición del disco sdb2 también haya quedado deteriorada por este proceso, por tanto hay que chequear esta partición para recuperar su estado correcto de la forma:
Otra cuestión sería si se ha realizado un dd_rescue de todo el disco a otro disco completa entonces los procesos serian:
$ e2fsck -v -f /dev/sdb1
$ e2fsck -v -f /dev/sdb2
Rescate con magicrescue
Una vez llegado a este punto, tendremos o bien una imagen ISO de un CD o bien una imagen de disco duro IMG. En caso de haber usado la opción de rescatar de disco duro a disco duro, por ejemplo de sda a sdb no tiene sentido este paso, por tanto saltárselo.
A continuación ejecutaremos en un terminal el comando:
# mkdir /media/mis_ficheros
# magicrescue -d /media/mis_ficheros -r /usr/share/magicrescue/recipes mifichero.xxx
Donde:
– d ->Directorio donde se almacenarán los ficheros rescatados de la ISO o imagen de disco duro.
– r ->Se indica el tipo de archivo a recuperar. En caso de poner lo de arriba, recupera todos los tipos de archivos que están definidos en el directorio recipes. Si solo quisiéramos rescatar archivos de Mocosoft Office, pondríamos «/usr/share/magicrescue/recipes/msoffice»
mifichero.xxx ->El archivo ISO o imagen de disco a extraer.Todos los recipes o tipos de archivos que puede rescatar magicrescue los puedes ver ejecutando el comando:
# ls -l /usr/share/magicrescue/recipes/
Una vez finalizado el proceso, que puede ser largo del magicrescue, solo tenemos que ir al directorio que creamos (/media/mis_ficheros) y ver que hemos podido recuperar.
También hay que aclarar que magicrescue es capaz de recuperar archivos directamente de la unidad de disco especificando esta de la forma:
# magicrescue -d /media/recuperados/ -r /usr/share/magicrescue/recipes/ /dev/sda2
Pero si la unidad esta con errores de acceso a los datos, magicrescue reporta el error de no lectura y deja de seguir leyendo, por tanto se interrumpe sin haber leido todo el disco. Esta bien usarlo siempre y cuando no suceda lo dicho anteriormente, pero sino, es mejor usar dd_rescue que ese si lee toda la superficie del disco.
Esto es todo.