ddrescue

ddrescue – Recupera datos de discos dañados con el algoritmo más avanzado del mundo libre

Descripción del programa ddrescue

GNU ddrescue es una herramienta de recuperación de datos diseñada específicamente para copiar información desde discos duros, CD-ROMs, memorias USB y otros dispositivos de almacenamiento que presentan sectores defectuosos o errores de lectura.

Desarrollado por Antonio Diaz Diaz bajo la licencia GPLv2+, su principal misión es rescatar la mayor cantidad de datos posible de un medio dañado, a diferencia de herramientas tradicionales como dd que se detienen ante el primer error y pueden causar daños adicionales al disco.

Cabe destacar que su principal ventaja es el sofisticado algoritmo de recuperación que prioriza la lectura de las zonas buenas del disco antes de adentrarse en las áreas problemáticas. ddrescue utiliza un archivo de mapa (mapfile) que registra qué sectores se han leído correctamente, cuáles han fallado y cuáles están pendientes, permitiendo interrumpir y reanudar el rescate en cualquier momento sin perder el progreso.

Este enfoque minimiza el estrés mecánico sobre el cabezal del disco, lo que es crucial cuando se trabaja con unidades en proceso de fallo.

El desarrollo de ddrescue comenzó como una alternativa mejorada a dd_rescue de Kurt Garloff, y desde entonces ha evolucionado hasta convertirse en el estándar de facto para la recuperación forense de datos en sistemas Unix y Linux.

La versión actual estable es la 1.30, publicada en enero de 2026, e incluye mejoras significativas en la gestión de áreas lentas y en la eficiencia del algoritmo de scraping. Aunque nativo de Linux, también puede ejecutarse en Windows mediante entornos como Cygwin o WSL, e incluso cuenta con interfaces gráficas como DDRescue-GUI para facilitar su uso.

¿Necesitas rescatar fotos familiares de un disco duro que hace clics o recuperar documentos importantes de un CD rayado sin perder la esperanza ni pagar costosos servicios?

Características clave de ddrescue

1. Algoritmo de recuperación en fases (Copy, Trim, Scrape, Retry)

El algoritmo de ddrescue se divide en varias fases diseñadas para maximizar la recuperación mientras minimiza el daño al disco. La fase de copia (copying) lee el dispositivo de forma secuencial, saltándose las áreas problemáticas y registrándolas en el mapa. Luego, la fase de trimado (trimming) delimita los bordes de las zonas dañadas.

La fase de raspado (scraping) intenta leer los sectores individuales dentro de las áreas problemáticas, y finalmente la fase de reintento (retrying) vuelve sobre los sectores más rebeldes con diferentes estrategias. Este enfoque por capas permite recuperar datos que otras herramientas darían por perdidos.

2. Uso del archivo de mapa (mapfile) para reanudar rescates

El archivo de mapa es el corazón de ddrescue. Es un archivo de texto que registra el estado de cada sector del disco: ? (no intentado), * (leído correctamente), / (no leído, error fatal) o - (no leído, error no fatal). Si el proceso se interrumpe (por un corte de luz, por ejemplo), puedes reanudarlo exactamente donde se quedó ejecutando el mismo comando.

El programa leerá el mapa y solo intentará recuperar los sectores pendientes, sin volver a leer lo que ya se rescató. Si trabajas con diferentes tipos de archivos en varios formatos, esta capacidad de reanudación te resultará muy útil para recuperar datos valiosos sin prisas.

3. Fusión de múltiples copias dañadas

Una funcionalidad única de ddrescue es la capacidad de combinar varias copias dañadas de un mismo disco o archivo para obtener una copia completa y sin errores. Si tienes dos discos duros que fallan en sectores diferentes (lo cual es común si los errores son aleatorios), puedes ejecutar ddrescue sobre ambos apuntando al mismo archivo de salida y al mismo mapa.

El programa leerá de la segunda copia solo los sectores que fallaron en la primera, completando los huecos. Esta técnica es muy utilizada en entornos forenses y de archivado de datos.

4. Modo de llenado (fill mode) y modo de generación (generate mode)

ddrescue incluye un modo de llenado que permite sobrescribir selectivamente partes del archivo de salida con datos específicos. Esto es útil para marcar áreas irrecuperables (por ejemplo, rellenar con ceros los sectores defectuosos para que el sistema de archivos no se confunda) o para «reparar» daños leves en ciertos contextos. El modo de generación, por su parte, permite crear un mapa aproximado a partir de una copia parcial, lo que puede acelerar rescates posteriores si se dispone de una imagen incompleta del disco.

5. Soporte para acceso directo al disco (direct disc access)

Mediante las opciones -d (para entrada) y -D (para salida), ddrescue puede acceder directamente al dispositivo sin pasar por la caché del kernel. Esto es especialmente útil en sistemas Linux cuando la caché del sistema operativo interfiere con la lectura de sectores defectuosos o cuando se quiere evitar que el kernel reintente eternamente una lectura fallida.

El acceso directo reduce la latencia y da más control sobre el proceso de rescate. El proceso de recuperar datos con ddrescue es similar a descomprimir archivos en el sentido de que estás «extrayendo» información de un soporte dañado para guardarla en un lugar seguro, pero con la complejidad añadida de que el origen puede fallar en cualquier momento.

Explicación detallada de las funcionalidades

El funcionamiento de ddrescue es técnicamente sofisticado pero conceptualmente claro. Cuando ejecutas el programa con un archivo de mapa, este divide el área de rescate en bloques de tamaño configurable (por defecto, 128 sectores de 512 bytes cada uno, es decir, 64 KB). Durante la fase de copia, lee estos bloques secuencialmente. Si un bloque se lee sin errores, se marca como * en el mapa y se escribe en el archivo de salida.

Si encuentra un error, ddrescue no se detiene: marca el bloque como problemático y salta una distancia configurable (opción -K) hacia adelante para continuar con el siguiente bloque. Esta estrategia de «saltar sobre los errores» es fundamental porque evita que el cabezal de lectura pase mucho tiempo sobre áreas dañadas, lo que podría empeorar el estado del disco.

Antes de realizar cualquier operación de rescate sobre un disco que contiene datos valiosos, conviene hacer una copia de seguridad de la configuración del sistema y, sobre todo, asegurarse de que el disco de destino tenga al menos el mismo tamaño que el disco fuente. ddrescue no comprime los datos; genera una imagen bit a bit (copia forense) del dispositivo.

Si el disco de destino es más pequeño, el proceso fallará. Además, es fundamental que el disco fuente no esté montado durante el rescate, ni siquiera en modo solo lectura, porque el sistema operativo podría interferir con la lectura o modificar los datos mientras se copian. Lo ideal es trabajar desde un Live CD de Linux (como SystemRescue o Ubuntu) que no monte automáticamente las unidades.

Por ello, el flujo de trabajo típico con ddrescue combina paciencia y estrategia. El comando básico es: ddrescue -f -n /dev/disco_fuente /ruta/imagen.img /ruta/mapfile.log. La opción -f fuerza la sobrescritura del archivo de salida si ya existe; -n (no-scrape) omite la fase de raspado en la primera pasada, lo que acelera la copia inicial de las zonas buenas.

Una vez que la primera fase ha copiado todo lo que pudo (mostrará un informe con el tamaño de los sectores no recuperados), se ejecuta una segunda pasada sin -n para que ddrescue intente rescatar los sectores individuales dentro de las áreas problemáticas: ddrescue -f -r 3 /dev/disco_fuente imagen.img mapfile.log. La opción -r 3 indica que reintente los sectores más difíciles hasta 3 veces.

Para discos extremadamente dañados, se puede invertir la dirección de lectura con -R para leer desde el final hacia el principio, lo que a veces permite sortear áreas especialmente problemáticas al principio del disco.

Descarga e instalación de ddrescue

  • Página oficial: página oficial de GNU ddrescue
  • Versión actual: 1.30 (1 de enero de 2026)
  • Últimas versiones: 1.30 (2026), 1.29.1 (2025), 1.29 (2025), 1.28 (2024), 1.27 (2023)
  • Tamaño: Aproximadamente 150-200 KB (código fuente comprimido)
  • Sistemas operativos compatibles: GNU/Linux, macOS, BSD, y otros sistemas Unix-like; en Windows mediante Cygwin o WSL
  • Requisitos mínimos: 64 MB de RAM, 10 MB de espacio en disco, permisos de superusuario (root) para acceso directo a dispositivos
  • Licencia: GNU General Public License v2 o posterior (código abierto)
  • Idiomas: Inglés (interfaz de línea de comandos)
  • Soporte técnico: Lista de correo bug-ddrescue@gnu.org, documentación en info ddrescue

Cómo usar ddrescue

Cuando ejecutes ddrescue por primera vez, es fundamental hacerlo con permisos de superusuario (sudo) para acceder directamente a los dispositivos de bloque. También es muy recomendable trabajar desde un Live USB de Linux (como SystemRescue o Ubuntu) para asegurarte de que el disco dañado no esté montado. Una vez en el entorno, identifica los discos con el comando lsblk o fdisk -l. El disco dañado será algo como /dev/sda y el disco de destino (donde guardarás la imagen) será /dev/sdb o una ruta como /mnt/backup/imagen.img.

El comando básico para la primera pasada (rescate rápido de zonas buenas) es:

sudo ddrescue -f -n /dev/sda /ruta/destino/imagen.img /ruta/destino/mapfile.log

Explicación de las opciones:

  • -f: fuerza la sobrescritura del archivo de salida si ya existe.
  • -n: omite la fase de raspado (solo copia rápida).
  • /dev/sda: dispositivo fuente (el disco dañado).
  • imagen.img: archivo de imagen donde se guardará la copia.
  • mapfile.log: archivo de mapa que registra el progreso.

Una vez que la primera pasada termine (puede tardar horas o días dependiendo del tamaño y del estado del disco), ejecuta una segunda pasada para intentar recuperar los sectores difíciles:

sudo ddrescue -f -r 3 /dev/sda /ruta/destino/imagen.img /ruta/destino/mapfile.log

La opción -r 3 indica que reintente los sectores no recuperados hasta 3 veces, aplicando diferentes estrategias de lectura.

Si el disco está muy dañado y la primera pasada es extremadamente lenta, puedes usar la opción -R para leer en dirección inversa (desde el final hacia el principio). A veces, los errores se concentran al inicio del disco, y leer al revés permite rescatar grandes cantidades de datos rápidamente antes de enfrentar las zonas problemáticas.

También puedes limitar el área de rescate con -s (tamaño) o -i (posición inicial) para concentrarte en una partición específica si sabes dónde están los datos importantes.

Un truco práctico: si tienes dos copias dañadas del mismo disco (por ejemplo, dos discos que fallan en sectores diferentes), ejecuta ddrescue sobre la primera copia para generar la imagen y el mapa, y luego ejecuta ddrescue sobre la segunda copia apuntando al mismo archivo de salida y al mismo mapa.

El programa solo leerá de la segunda copia los sectores que fallaron en la primera, fusionando ambas imágenes.

Observaciones sobre el programa ddrescue

Frente a herramientas gráficas como TestDisk (enfocada en reparar tablas de particiones) o PhotoRec (enfocada en recuperar archivos por firmas), ddrescue opera a un nivel más bajo: crea una copia bit a bit del dispositivo completo, incluyendo el sistema de archivos y los datos, pero sin interpretarlos.

Esto lo convierte en la herramienta ideal para crear una imagen forense de un disco antes de intentar cualquier reparación. Mientras que PhotoRec puede recuperar archivos individuales saltándose el sistema de archivos, ddrescue preserva la estructura original, lo que es esencial si quieres montar el disco después y acceder a los archivos como si nada hubiera pasado.

En términos prácticos, el mayor beneficio para el usuario final es la capacidad de reanudar el rescate. Los procesos de recuperación de discos grandes pueden durar días, y un corte de luz o un error inesperado no significa empezar de cero.

Con ddrescue, simplemente vuelves a ejecutar el mismo comando y el programa continúa exactamente donde se quedó, leyendo solo los sectores pendientes. Además, el uso de acceso directo al disco (-d) evita que el kernel de Linux reintente indefinidamente la lectura de un sector defectuoso, lo que ahorra horas de espera.

El desarrollador de ddrescue, Antonio Diaz Diaz, es un ingeniero de software conocido por su meticulosidad y por mantener proyectos de alta calidad como lzip (un compresor con capacidades de recuperación de datos). El código de ddrescue es considerado un ejemplo de buenas prácticas en programación C, y su documentación es extensa y clara.

Las actualizaciones de ddrescue son periódicas y sustanciales. La versión 1.30, lanzada en enero de 2026, introdujo mejoras en el manejo de áreas lentas y en la precisión del algoritmo de scraping. Las versiones anteriores (1.29, 1.28, etc.) han ido añadiendo soporte para nuevos tipos de dispositivos y optimizando el rendimiento. El proyecto está activo y bien mantenido.

Existe una versión portable de ddrescue en el sentido de que el código fuente se puede compilar en cualquier sistema Unix-like. Para Windows, no hay un ejecutable nativo, pero se puede instalar a través de Cygwin (un entorno que emula Linux en Windows) o mediante WSL (Windows Subsystem for Linux).

También existe DDRescue-GUI, una interfaz gráfica para ddrescue que simplifica su uso en Windows y macOS, aunque el motor subyacente sigue siendo el ddrescue de GNU.

Entre las funcionalidades extra, cabe destacar que ddrescue incluye una herramienta complementaria llamada ddrescuelog que permite manipular archivos de mapa: convertir formatos, comparar rescates, hacer operaciones lógicas (AND, OR, XOR) entre mapas de diferentes copias, y generar estadísticas detalladas del progreso. También permite generar mapas a partir de listas de sectores buenos y malos, lo que es útil para integrar ddrescue con otros flujos de trabajo forenses.

Limitaciones importantes

  • ❌ No funciona directamente en Windows; requiere entornos de emulación como Cygwin o WSL.
  • ❌ No puede recuperar datos de discos con daños físicos graves (cabezales rotos, platos rayados); en esos casos se necesita un servicio profesional.
  • ❌ La línea de comandos puede resultar intimidante para usuarios sin experiencia en Linux.

Alternativa recomendada

Si necesitas una herramienta con interfaz gráfica para Windows y no te sientes cómodo con la línea de comandos, puedes probar DMDE (DM Disk Editor and Data Recovery). Este programa tiene una versión gratuita que permite recuperar archivos de discos dañados con una interfaz más amigable, aunque con ciertas limitaciones en la cantidad de datos que se pueden recuperar en la versión gratuita.

DMDE tiene como principal ventaja que es nativo de Windows y no requiere instalar entornos de emulación. Puede trabajar con discos dañados, reconstruir sistemas de archivos corruptos y recuperar particiones perdidas. La desventaja es que no tiene el algoritmo de rescate por fases de ddrescue; ante un sector defectuoso, puede comportarse de forma menos eficiente.

Para la mayoría de los usuarios domésticos con discos ligeramente dañados, DMDE o Recuva pueden ser suficientes. Para discos en proceso de fallo activo (que hacen clics, se cuelgan, o tienen muchos sectores defectuosos), ddrescue sigue siendo la herramienta más fiable y recomendada por los profesionales de la recuperación de datos.

Sección FAQ

¿ddrescue es gratis o de pago?

ddrescue es completamente gratuito y de código abierto bajo la licencia GPLv2 o posterior. No tiene versiones de pago ni funciones bloqueadas. Puedes usarlo libremente para cualquier propósito, personal o comercial, sin costo alguno.

¿Funciona en Windows 10, Windows 11 y en discos externos USB?

ddrescue no es nativo de Windows, pero se puede ejecutar a través de Cygwin o WSL (Windows Subsystem for Linux). Una vez instalado el entorno Linux, ddrescue funciona con cualquier disco que el sistema reconozca, incluyendo discos duros externos USB, pendrives, tarjetas SD y SSD. Si prefieres una interfaz gráfica, existe DDRescue-GUI que empaqueta ddrescue para Windows.

¿Qué diferencia a ddrescue de dd (el comando estándar de Unix)?

La diferencia principal es cómo manejan los errores. dd se detiene al encontrar un sector defectuoso y puede causar daños adicionales al disco si se fuerza a continuar. ddrescue fue diseñado específicamente para discos dañados: salta los errores, prioriza las zonas buenas, y utiliza un archivo de mapa para reanudar rescates interrumpidos. Además, ddrescue no trunca el archivo de salida, lo que permite llenar los huecos en ejecuciones sucesivas.

¿Puedo usar ddrescue para recuperar fotos de una tarjeta SD de cámara?

Sí, absolutamente. ddrescue funciona con cualquier dispositivo de bloque, incluyendo tarjetas SD, CompactFlash, memorias USB y discos duros. El proceso es el mismo: creas una imagen de la tarjeta SD completa (o de la partición que contiene las fotos) y luego montas esa imagen en otro ordenador para extraer los archivos. Si la tarjeta está muy dañada, puedes usar la opción -R para leer en sentido inverso o -r para reintentar sectores difíciles.

¿Qué hago si ddrescue tarda horas sin avanzar o se queda atascado?

Si ddrescue se queda atascado en un sector durante mucho tiempo (más de 5-10 minutos sin leer datos nuevos), puede deberse a que el disco está reintentando la lectura internamente. Prueba a interrumpir el proceso con Ctrl+C (ddrescue guardará el progreso en el mapa) y luego reinícialo con la opción -O (reopen on error) o -d (direct disc access) para evitar la caché del kernel.

Si el problema persiste, el disco puede tener daños físicos graves; en ese caso, reduce el tamaño del clúster (-c) a 16 o 32 sectores y reintenta. Si sigue sin avanzar, considera que el sector puede ser irrecuperable y usa --pause-on-error=0 para que ddrescue lo salte rápidamente.