ddrescue [1]
Comando para crear imágenes de unidades (discos, memorias, CD, etc) dañadas muy similar al comando scalpel [2] el cual también permite recuperar información
Su sintaxis es de la forma:
ddrescue [options] infile outfile [logfile]
Alguna de sus opciones son:
-R empieza a clonar desde la partes posterior del disco (clonado inverso), útil para que no use la cache del disco.
-r# reintentar número, cada vez que se encuentra un error cuántas veces se volverá a intentar
-n no copiar las areas problematicas
Por ejemplo, para clonar un disco, copiando primero las áreas libres de error (se usa con la opción -n), hay que utilizar el parámetro --force cuando se desea clonar de disco a disco :
ddrescue -R -n --force /dev/sda /dev/sdb /root/logfile.log
root@kali:~# ddrescue -R -n --force /dev/sda /dev/sdd /root/Desktop/logfile.log GNU ddrescue 1.16 Press Ctrl-C to interrupt rescued: 2602 MB, errsize: 0 B, current rate: 13893 kB/s ipos: 317470 MB, errors: 0, average rate: 13210 kB/s opos: 317470 MB, time since last successful read: 0 s Copying non-tried blocks...
Lo siguiente es un ejemplo de la salida del comando, en donde se le dice que se haga una imagen de la partición /dev/sdc5 en el archivo datos.img
# ddrescue -R -n /dev/sdc5 /media/clientes/87/datos.img /media/clientes/87/logfile.log GNU ddrescue 1.16 Press Ctrl-C to interrupt rescued: 2862 MB, errsize: 0 B, current rate: 6291 kB/s ipos: 103490 MB, errors: 0, average rate: 8806 kB/s opos: 103490 MB, time since last successful read: 0 s ^Cpying non-tried blocks... Interrupted by user
Presionamos Ctrl + c e interrumpimos la tarea y luego se puede ejecutar la misma orden y se continuará desde donde dejó.
# ddrescue -R -n /dev/sdc5 /media/clientes/87/datos.img /media/clientes/87/logfile.log GNU ddrescue 1.16 Press Ctrl-C to interrupt Initial status (read from logfile) rescued: 2862 MB, errsize: 0 B, errors: 0 Current status rescued: 6739 MB, errsize: 0 B, current rate: 3342 kB/s ipos: 99612 MB, errors: 0, average rate: 6059 kB/s opos: 99612 MB, time since last successful read: 0 s Copying non-tried blocks...
Es es la gran diferencia con el comando dd_rescue y otros. Ya que un disco inestable es factible que se cuelgue, y si lo hacemos con otro comando podemos perder todo el trabajo
Luego tratamos de recuperar los sectores defectuosos:
ddrescue -R -r5 /dev/sdc5 /media/clientes/87/datos.img /media/clientes/87/logfile.log
# ddrescue -R -r5 /dev/sdc5 /media/clientes/87/datos.img /media/clientes/87/logfile.log GNU ddrescue 1.16 Press Ctrl-C to interrupt Initial status (read from logfile) rescued: 106352 MB, errsize: 109 kB, errors: 7 Current status rescued: 106352 MB, errsize: 16896 B, current rate: 0 B/s ipos: 3221 MB, errors: 4, average rate: 318 B/s opos: 3221 MB, time since last successful read: 1 m Retrying bad sectors... Retry 1
Podemos intentar realizar más pasadas, si lo vemos conveniente, o cambiar la dirección de copiado, para intentar recuperar más información
# ddrescue -R -r9 /dev/sdc5 /media/clientes/87/datos.img /media/clientes/87/logfile.log GNU ddrescue 1.16 Press Ctrl-C to interrupt Initial status (read from logfile) rescued: 106352 MB, errsize: 12288 B, errors: 2 Current status rescued: 106352 MB, errsize: 8192 B, current rate: 0 B/s ipos: 3221 MB, errors: 1, average rate: 5 B/s opos: 3221 MB, time since last successful read: 3.3 m Finished
Para intentar rescatar a un cdrom se usa:
ddrescue -b 2048 /dev/cdrom ./cdimage /root/logfile
Para más información puede ver la documentación en español del creador del programa en: http://www.gnu.org/software/ddrescue/ddrescue_es.html [3]
Nota 1: El paquete para instalar este comando es gddrescue.
Nota 2: Este comando NO es igual al comando dd_rescue [4] el cual no puede reiniciar la recuperación si el proceso se detiene.
Algunos comandos relacionados son: dd_rescue [4], testdisk [5], photorec [6], scalpel [2], magicrescue [7], safecopy [8], y foremost [9].