Busqueda sobre Linux y software libre

Noticias sobre linux y software libre - Google 

Cómo hacer un script de rescate usando ddrescue por si sospechas que tu disco de origen tiene daños físicos que G4L no puede saltar en G4L en linux

 Le preguntamos a Gemini, la inteligencia artificial de Google, nos explique cómo hacer un script de rescate usando ddrescue por si sospechas que tu disco de origen tiene daños físicos que G4L no puede saltar en G4L en linux

Explicanos detalladamente cómo hacer un script de rescate usando ddrescue por si sospechas que tu disco de origen tiene daños físicos que G4L no puede saltar en G4L en linux

Cuando tienes un disco con daño físico severo (sectores defectuosos o ruidos mecánicos), herramientas de clonación basadas en archivos (como G4L, Clonezilla o cp) a menudo fallan. Se bloquean intentando leer un sector dañado, se congelan y la operación entera aborta.

Aquí es donde entra GNU ddrescue (no confundir con dd_rescue). ddrescue está diseñado explícitamente para hardware defectuoso: lee los sectores sanos primero a máxima velocidad y luego, de forma inteligente, intenta recuperar los sectores dañados en múltiples pasadas, saltándose los errores en lugar de colgarse.

A continuación, te detallo cómo crear un script de rescate robusto usando ddrescue.

1. El Concepto Clave: El Archivo de Mapa (Mapfile)

La magia de ddrescue reside en el mapfile (antiguamente llamado logfile). Este archivo de texto registra exactamente qué sectores ya se han copiado con éxito y cuáles dieron error.

Esto permite interrumpir el script en cualquier momento, apagar el equipo (para evitar que el disco dañado se sobrecaliente) y, al volver a ejecutar el mismo comando, ddrescue retomará el trabajo exactamente donde lo dejó, sin tener que volver a copiar los bloques sanos.

2. Preparación del Entorno

Debes ejecutar este procedimiento desde un entorno Live USB (como SystemRescueCD, Ubuntu Live, o el entorno base de G4L si te permite salir a la terminal). Nunca intentes clonar el disco desde el cual has arrancado el sistema.

Identifica tus discos:

Bash


sudo lsblk

Supongamos que /dev/sda es el disco dañado (origen).

Supongamos que /dev/sdb es el disco nuevo/sano (destino). Debe ser de tamaño igual o mayor al original.

Instala ddrescue (si no está en tu Live CD):

Bash


sudo apt update && sudo apt install gddrescue -y # En Ubuntu/Debian

sudo dnf install ddrescue -y # En Fedora/RHEL


1.Fase 1: Extraer lo sano lo más rápido posible:

La Fase Rápida (Sin reintentos).

El objetivo aquí es rescatar la mayor cantidad de datos posible antes de que el disco muera por completo, saltando inmediatamente cualquier error.

Bash

sudo ddrescue -n -d /dev/sda /dev/sdb /root/rescate.map

-n (no-scrape): Evita la fase de "rascado" (no intenta recuperar bloques defectuosos). Si encuentra un error, lo marca en el mapa y salta al siguiente bloque.

-d (direct): Usa acceso directo al disco, ignorando la caché del kernel de Linux. Es vital para discos moribundos.

/dev/sda: Disco origen (dañado).

/dev/sdb: Disco destino. (Nota: Todo en /dev/sdb será borrado).

/root/rescate.map: El archivo de mapa. Cuidalo con tu vida.

2.Fase 2: Intentar leer los sectores difíciles (3 pasadas):

La Fase de Recuperación.


Una vez que has asegurado el 90-95% de los datos sanos, usamos el mismo comando y el mismo mapa, pero activamos los reintentos para luchar por los bloques problemáticos.

Bash

sudo ddrescue -r 3 -d /dev/sda /dev/sdb /root/rescate.map

-r 3 (retries): Intenta leer cada sector defectuoso hasta 3 veces antes de rendirse definitivamente.

Nota que volvemos a usar exactamente el mismo archivo rescate.map. ddrescue leerá este archivo, verá qué bloques fallaron en la Fase 1, y se dirigirá exclusivamente a ellos.3.

Fase 2 Alternativa: Invertir la dirección de lectura:

Si la Fase 2 es muy lenta.


Si el disco tiene un daño físico severo al principio del plato (por ejemplo, el cabezal aterriza siempre en el mismo sector malo y se atasca), puedes indicarle a ddrescue que intente leer el disco de atrás hacia adelante.

Bash

sudo ddrescue -R -r 3 -d /dev/sda /dev/sdb /root/rescate.map

-R (reverse): Lee los sectores desde el final del disco hacia el principio. A menudo, esto desatasca cabezales mecánicos que se bloquean en lectura secuencial normal.

3. Automatizando el Proceso: El Script Bash

Si deseas dejar esto automatizado para no tener que ejecutar los comandos manualmente (por ejemplo, si vas a dejar la máquina trabajando toda la noche), puedes empaquetarlo en un sencillo script.

Crea el archivo:

Bash


sudo nano /root/script_rescate.sh

Pega el siguiente código, modificando las variables ORIGEN y DESTINO según tu caso:

Bash

#!/bin/bash

# ========================================================
# Script de Rescate con GNU ddrescue
# ========================================================


ORIGEN="/dev/sda"
DESTINO="/dev/sdb"
MAPFILE="/root/rescate.map"


echo "======================================================"
echo "INICIANDO RESCATE CON DDRESCUE"
echo "Origen: $ORIGEN"
echo "Destino: $DESTINO"
echo "======================================================"
echo "¡ADVERTENCIA! Todo en $DESTINO será destruido."
read -p "Presiona ENTER para continuar o Ctrl+C para abortar..."


echo "------------------------------------------------------"
echo "[FASE 1] Extrayendo datos sanos rápidamente..."
echo "------------------------------------------------------"
ddrescue -n -d $ORIGEN $DESTINO $MAPFILE


echo "------------------------------------------------------"
echo "[FASE 2] Recuperación profunda de sectores dañados..."
echo "------------------------------------------------------"
ddrescue -d -r 3 $ORIGEN $DESTINO $MAPFILE


echo "======================================================"
echo "RESCATE FINALIZADO"
echo "======================================================"


Hazlo ejecutable y lánzalo:
 
Bash

sudo chmod +x /root/script_rescate.sh

sudo /root/script_rescate.sh


4. Notas Críticas Post-Rescate

El destino será idéntico al origen: Si /dev/sdb (el destino) es más grande que /dev/sda (el origen), el espacio sobrante quedará "no asignado". Podrás expandir la partición después usando herramientas como gparted.

Comprobación del sistema de archivos: Tras la clonación, el sistema de archivos en el disco destino estará en estado "sucio" (dirty), especialmente si hubo sectores que no se pudieron recuperar. Debes ejecutar un fsck en las particiones del disco destino antes de intentar montar o arrancar desde él.

Bash

# Ejemplo para revisar la partición principal de Linux


sudo fsck -f -y /dev/sdb1

¿Quieres saber cómo usar ddrescue para crear una imagen en lugar de clonar de disco a disco?

Ads by CJ - Linux Foundation

Share This