Le pedimos a Gemini, la inteligencia artificial de Google que nos explique cómo solucionar problemas de ddrescue en linux
Explicanos detalladamente cómo solucionar problemas de ddrescue en linuxUsar GNU ddrescue suele ser un acto de desesperación o de extrema precaución. Cuando esta herramienta falla o se comporta de forma errática, el estrés aumenta porque sentimos que estamos perdiendo la última oportunidad de salvar nuestros datos.
Aquí tienes una guía detallada para diagnosticar y solucionar los problemas más comunes que surgen durante un rescate.
1. El proceso parece "congelado" o es extremadamente lento
Es el problema más común. El disco encuentra una zona dañada y ddrescue se queda minutos intentando leer un solo bloque.
La Causa: Estás siendo demasiado agresivo con los reintentos (-r) o el "raspado" (scraping) desde el principio.
La Solución: Detén el proceso (Ctrl + C) y reinícialo usando el mismo archivo de mapa, pero con la bandera -n (no-scrape):
Bash
sudo ddrescue -f -n /dev/sdb /dev/sdc rescate.map
Esto le dice a ddrescue que "salte" las zonas difíciles y se concentre en lo que es fácil de leer. Una vez que tengas el 90% rescatado, entonces sí puedes intentar las zonas lentas.
2. Error: "Output file exists and is not a regular file"
Este error ocurre cuando intentas escribir directamente a un disco físico (ej. de /dev/sdb a /dev/sdc) sin darle permiso explícito.
La Causa: ddrescue protege el destino por defecto para evitar que sobrescribas un disco por error.
La Solución: Añade la bandera -f (force) para autorizar la escritura en un dispositivo de bloques:
Bash
sudo ddrescue -f /dev/sdb /dev/sdc rescate.map
3. El disco se desconecta intermitentemente
Muchos discos dañados "mueren" electrónicamente cuando se calientan o encuentran un error crítico, desapareciendo del sistema (/dev/sdb deja de existir).
La Causa: Fallo de firmware o problemas de alimentación (especialmente en adaptadores USB).
La Solución:
Conexión Directa: Si usas un adaptador USB, quítalo y conecta el disco directamente a un puerto SATA de la placa base. El USB es pésimo gestionando errores de I/O.
Ciclo de reintento automático: Usa un pequeño script de bash o simplemente relanza el comando. Como tienes el rescate.map, ddrescue sabrá qué le falta por copiar aunque el disco se haya desconectado.
Baja la velocidad: Usa -c 1 para reducir el tamaño del clúster de copia, lo que estresa menos el cabezal.
4. El archivo de mapa (Mapfile) está corrupto o se perdió
Si pierdes el archivo .map, ddrescue no sabrá qué sectores ha copiado y cuáles no, obligándote a empezar de cero (lo cual estresa el disco innecesariamente).
La Causa: El PC de rescate se apagó mal o escribiste el mapa en una ubicación volátil (como /tmp).
La Solución:
Regenerar el mapa (Parcialmente): Si el destino es una imagen .img, puedes intentar usar la opción --generate-mode, aunque es compleja y no siempre perfecta.
Prevención: Guarda siempre el mapfile en un tercer disco (una memoria USB aparte), nunca en el disco que estás intentando rescatar ni en el de destino.
5. Demasiados errores de lectura (Bad Sectors everywhere)
Si ves que la tasa de errores sube como la espuma y la velocidad cae a 0 B/s:
La Causa: El cabezal del disco está tocando el plato o hay un fallo físico grave.
La Solución: No fuerces la lectura secuencial. Prueba a leer el disco hacia atrás con la bandera -R:
Bash
sudo ddrescue -f -R /dev/sdb /dev/sdc rescate.map
A veces el daño está al principio del disco y leer desde el final permite salvar archivos que de otro modo se perderían.
Tabla de banderas (flags) de rescate
ddrescue es una herramienta de software. Si el motor del disco no gira o los cabezales están destruidos físicamente (el famoso "clic-clic-clic"), ningún comando de Linux podrá salvarlo. En esos casos, la única solución es una empresa de recuperación en cámara limpia. Pero si el disco aún es detectado por el BIOS, ddrescue es tu mejor soldado.
¿Te gustaría que te explicara cómo montar la imagen que has rescatado para intentar recuperar carpetas específicas usando Photorec o TestDisk?