Cómo usar `ddrescue` para la recuperación de datos en Linux

Foro sobre GNU Linux
Responder
gbeltran
Mensajes: 328
Registrado: 13 May 2023, 01:15
Ubicación: Valencia - España
Contactar:

Cómo usar `ddrescue` para la recuperación de datos en Linux

Mensaje por gbeltran »

La pérdida de datos es una experiencia como poco 'frustrante' (o 'gddrescue'), especialmente si se trata de información valiosa. Afortunadamente, existen herramientas como `ddrescue` que pueden ayudarte a recuperar datos de dispositivos dañados. Vamos a ver cómo instalar y utilizar `ddrescue` en sistemas Linux, con ejemplos. Pero primero...

¿Qué es `ddrescue`?
`ddrescue` es una herramienta de recuperación de datos diseñada para copiar datos de un dispositivo a otro, especialmente en situaciones donde hay sectores dañados. A diferencia de otras herramientas, `ddrescue` intenta recuperar la mayor cantidad de datos posible, omitiendo los sectores dañados y registrando el progreso para que puedas reanudar la recuperación más tarde.

Instalación
Antes de comenzar, asegúrate de tener `ddrescue` instalado en tu sistema. La instalación varía según la distribución de Linux que estés utilizando. Estas son las más populares:

- En Debian/Ubuntu:

Código: Seleccionar todo

  sudo apt-get install gddrescue
- En Fedora:

Código: Seleccionar todo

  sudo dnf install ddrescue
Sintaxis básica
La sintaxis básica de `ddrescue` es la siguiente:

Código: Seleccionar todo

ddrescue [opciones] origen destino [registro]
- origen: El dispositivo o archivo del que deseas recuperar datos.
- destino: El dispositivo o archivo donde deseas guardar los datos recuperados.
- registro: (opcional) Un archivo que almacena el estado de la recuperación, lo que permite reanudarla si se interrumpe.

Ejemplo 1: Copiar un disco dañado

Supongamos que tienes un disco duro dañado en `/dev/sdX` y deseas copiarlo a una imagen de disco en `recuperado.img`. Puedes usar el siguiente comando:

Código: Seleccionar todo

sudo ddrescue /dev/sdX recuperado.img recuperado.log
- En este caso, `recuperado.log` es el archivo de registro que `ddrescue` utilizará para guardar el estado de la recuperación. Esto es útil si necesitas interrumpir el proceso y reanudarlo más tarde.

Ejemplo 2: Reanudar una recuperación

Si la recuperación se interrumpe por alguna razón (por ejemplo, un corte de energía), puedes reanudarla usando el archivo de registro. Simplemente ejecuta:

Código: Seleccionar todo

sudo ddrescue -r 3 /dev/sdX recuperado.img recuperado.log
- La opción `-r 3` indica que `ddrescue` intentará leer los sectores dañados hasta 3 veces antes de omitirlos.

Ejemplo 3: Copiar solo los sectores buenos

Si deseas copiar solo los sectores que están en buen estado y omitir los dañados, puedes usar la opción `-n`:

Código: Seleccionar todo

sudo ddrescue -n /dev/sdX recuperado.img recuperado.log
Ejemplo 4: Recuperar datos de un archivo de imagen

Si ya tienes una imagen de disco y deseas recuperar datos de ella, puedes hacerlo así:

Código: Seleccionar todo

sudo ddrescue /ruta/a/imagen.img recuperado.img recuperado.log
Opciones útiles

Aquí hay algunas opciones adicionales que pueden ser útiles al usar `ddrescue`:

- `-f`: Forzar la escritura en el destino, útil si el destino ya existe.
- `-d`: Leer directamente desde el dispositivo, lo que puede ser más rápido en algunos casos.
- `-r`: Especificar el número de intentos para leer sectores dañados.

+ info relacionada:
- Cómo reparar y clonar disco con ddrescue
- GNU ddrescue Manual
gbeltran
Mensajes: 328
Registrado: 13 May 2023, 01:15
Ubicación: Valencia - España
Contactar:

Re: Cómo usar `ddrescue` para la recuperación de datos en Linux

Mensaje por gbeltran »

NOTA: En Debian y Ubuntu instalas gddrescue, pero la orden es ddrescue. Ejemplo:

Código: Seleccionar todo

sudo ddrescue /dev/sda imagen.img /home/guillermo/logimagen.log
[sudo] contraseña para guillermo: 
GNU ddrescue 1.23
Press Ctrl-C to interrupt
     ipos:   10449 MB, non-trimmed:        0 B,  current rate:       0 B/s
     opos:   10449 MB, non-scraped:        0 B,  average rate:    111 MB/s
non-tried:  229608 MB,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:   10449 MB,   bad areas:        0,        run time:      1m 34s
pct rescued:    4.35%, read errors:        0,  remaining time:         47m
                              time since last successful read:          4s
Copying non-tried blocks... Pass 1 (forwards)^C
Responder