Recuperar datos en Linux usando ddrescue

Recuperar Datos En Linux Usando Ddrescue



El ddrescue es una herramienta que se utiliza para recuperar datos de un archivo o un dispositivo de bloque, como un disco duro, SSD, discos RAM, CD, DVD y dispositivos de almacenamiento USB. Copia datos de un dispositivo de bloque a otro, dejando los bloques de datos corruptos y moviendo solo los buenos. El ddrescue es una potente herramienta de recuperación que está completamente automatizada porque no requiere ninguna interferencia durante la operación de recuperación. Además, se puede detener y reanudar en cualquier momento gracias al archivo de mapa ddrescue . Otras características clave de ddrescue se enumeran a continuación:
  • No sobrescribe los datos recuperados pero llena los vacíos en caso de recuperación iterativa. Sin embargo, se puede truncar si se le indica a la herramienta que lo haga explícitamente.
  • Recupere datos en un solo archivo desde múltiples archivos o bloques.
  • Admite múltiples tipos de interfaces de dispositivos, como unidades SATA, ATA, SCSI, MFM, disquetes y tarjetas SD.

En esta guía, exploraré esta herramienta de recuperación de datos increíblemente útil. También discutiré su proceso de instalación y cómo usarlo para recuperar un dispositivo de bloque o una partición.

Nota: Estoy usando la distribución de Linux (Ubuntu 22.04) para las instrucciones de esta guía. El proceso de instalación de la utilidad ddrescue puede diferir, pero las instrucciones serán las mismas en todas las distribuciones de Linux.







Instalación de ddrescue

Para instalar ddrescue en Linux, especialmente ubuntu y sus sabores o Basado en Debian distribuciones, use:



sudo apto instalar gddrescue

Para instalarlo en REHL , sombrero , y CentOS , primero habilite el CÁLIDO (Paquetes adicionales para Enterprise Linux).



sudo mmm instalar liberación cálida

El comando anterior es para versiones más recientes de la distribución respectiva.





Luego ejecute el siguiente comando para instalar ddrescue:

sudo mmm instalar ddrescate

Para distribuciones de Linux basadas en Arch como Arch-Linux y Manjaro , use el comando que se proporciona a continuación para instalar la utilidad de recuperación ddrescue.



sudo pacman -S ddrescate

Como estoy usando Ubuntu 22.04, usaré el administrador de paquetes APT para instalarlo.

Comprender los conceptos básicos

Antes de utilizar la herramienta ddrescue para recuperar datos, recomendaría a los usuarios nuevos en el proceso de recuperación que comprendan algunas convenciones de nomenclatura de Linux.

Linux reconoce bloques (dispositivos) como archivos y los coloca en el /desarrollador directorio. Para enumerar los archivos en el directorio /dev, utilice el ls /desarrollador dominio.

El unidades de disco duro (bloques de almacenamiento) se representan con Dakota del Sur seguido de alfabetos; en el caso de múltiples dispositivos de almacenamiento, los archivos se representarán como /dev/sd a, /dev/sd b, etcétera.

Si el dispositivo de almacenamiento tiene particiones , luego estarán representados por un número con el nombre del archivo de la unidad respectiva, como /dev/sda 1 , /dev/sda 2 , etcétera.

Para enumerar todos los bloques y otros dispositivos conectados al sistema, utilice el bloque de lista lsblk dominio:

lsblk

El comando ddrescue puede recuperar el bloque completo (que contiene MBR y particiones) o también una partición. Por otro lado, si necesita recuperar sólo archivos específicos de una partición específica, entonces es mejor recuperar la partición en lugar de todo el bloque.

Consideraciones importantes

Antes de utilizar la utilidad ddrescue, se deben considerar algunos puntos clave:

  • No intentes recuperar un bloque montado, el bloque ni siquiera debería estar en modo de solo lectura.
  • No intente reparar un bloque con errores de E/S.
  • El sistema puede cambiar los nombres de los dispositivos de entrada y salida al reiniciar. Asegúrese de que los nombres de los dispositivos sean correctos antes de iniciar el proceso de copia.
  • Si está utilizando un bloque separado como dispositivo de salida, se sobrescribirán todos los datos del dispositivo.

Usando ddrescue

Después de instalar la utilidad ddrescue y comprender las convenciones de nomenclatura, el siguiente paso es identificar el disco defectuoso y recuperarlo utilizando la herramienta ddrescue.

Recuperando el bloque corrupto

El primer ejemplo abarcará el proceso de recuperación de todo el bloque. Primero, enumere los bloques usando el lsblk dominio:

lsblk -O NOMBRE, TAMAÑO, TIPOFS

El -O El indicador se utiliza para especificar qué tipo de información (campos) debe generar el comando. He mencionado el NOMBRE , TAMAÑO , y tipofs o tipo de sistema de archivos.

Ahora puede identificar el bloque de destino, la partición y la ubicación para guardar el archivo de imagen rescatado.

Otra cosa importante a tener en cuenta es que en Linux, el nombre del bloque se asigna dinámicamente en el arranque y después del reinicio, los nombres de los bloques pueden cambiar. Por lo tanto, tenga cuidado al anotar los nombres de los bloques.

Ahora, use la siguiente sintaxis para rescatar el bloque como un archivo de imagen con un archivo de registro en el directorio raíz.

sudo ddrescate -d -rX / desarrollador / [ bloquear ] [ camino / nombre ] .img [ nombre_archivo_registro ] .registro

Nota: Reemplazar [bloquear] , [ruta/nombre] del archivo de imagen, y [nombre_archivo de registro] con los nombres preferidos en consecuencia.

En este ejemplo, estoy recuperando el /dev/sda en el directorio raíz con el nombre del archivo de imagen recuperación.img . El archivo de registro, también conocido como archivo de mapa, es esencial si desea reanudar la recuperación en cualquier momento.

sudo ddrescate -d -r2 / desarrollador / recuperación sda2.img recuperación.log

En el comando anterior se utilizan dos indicadores importantes.

d -indirecto Se utiliza para indicarle a la herramienta que acceda directamente al disco ignorando el caché del kernel.
RX –reintentos-pases Se utiliza para indicarle a la herramienta que vuelva a intentar el sector defectuoso X número de veces.

Al ejecutar el comando anterior, notará que aparecen dos archivos en el explorador de archivos con los nombres recuperación.img y recuperación.log .

El tiempo de recuperación depende del tamaño del bloque de entrada y del daño. Si está recuperando un bloque grande, le recomiendo tener un archivo de registro porque puede llevar varias horas o incluso días completar el proceso.

El resultado del comando anterior se proporciona a continuación:

En la imagen de salida, IPO es la posición de entrada del archivo de entrada desde donde se inicia la copia y el úlceras es la posición de salida en el archivo de salida donde se escriben los datos.

El no probado es el tamaño del bloque no está pendiente de ser probado. El rescatada indica el tamaño del bloque recuperado con éxito. El pct rescatado indica la recuperación exitosa de los datos en porcentaje. Los términos, no recortado , no desechado , mal sector , y malas zonas se explican por sí solos. sin embargo, el errores de lectura El término indica los intentos de lectura fallidos en números.

El tiempo de ejecución muestra el tiempo que tardó la herramienta en completar el proceso, mientras que el tiempo restante es el tiempo que queda para completar el proceso de recuperación. El resultado anterior muestra el tiempo restante 0 porque el proceso ha finalizado; lea el resultado en la siguiente imagen de un proceso inacabado.

Veamos qué obtenemos en el archivo de registro; para abrir el archivo de registro generado, utilice el vim recovery.log dominio.

El estado actual es + lo que significa que el proceso ha terminado, mientras que el pos_actual es la posición en el bloque.

En la siguiente tabla se proporciona una lista de los estados actuales:

? Proceso de copiar
* Guarnición
/ Desguace
Reintentando
F Llenando los bloques especificados
GRAMO Generando el archivo de registro
+ El proceso ha terminado

Debajo, el archivo de registro tiene indicaciones de estado de los bloques rescatados previamente en forma de caracteres que se enumeran a continuación:

? El bloque no está probado.
* El bloque fallido no recortado
/ El bloque fallido no desechado
El bloque fallido del sector defectuoso
+ bloque terminado

Restaurar el archivo de imagen en un nuevo bloque

Una vez que haya terminado con el proceso de recuperación y tenga el archivo de imagen. Es posible que ahora quieras que se mueva a la nueva unidad desde una unidad dañada. Para mover el archivo de imagen a un nuevo bloque, primero, conecte ese bloque al sistema y luego identifique el nombre del bloque usando el lsblk dominio.

Supongamos que es /dev/sdb , use el siguiente comando para copiar la imagen a un nuevo bloque.

sudo ddrescate -F recuperación.img / desarrollador / archivo de registro sdb.log

El -F El indicador se utiliza para sobrescribir el nuevo bloque si hay algún dato. Tenga en cuenta que el nombre del archivo de registro debe ser diferente para mantenerlo separado del archivo de registro almacenado previamente.

La operación anterior también se puede realizar utilizando el dd , otro poderoso comando utilizado para copiar los archivos.

sudo dd si =recuperación.img de = / desarrollador / sdb

Antes de realizar una restauración, tenga en cuenta que el nuevo bloque debe ser lo suficientemente grande como para conservar todo el bloque recuperado; por ejemplo, si el bloque de recuperación es de 5 GB, el nuevo bloque debe ser superior a 5 GB.

Si el archivo de imagen recuperado presenta muchos errores, entonces se pueden reparar usando el fsck comando en Linux hasta cierto punto. Mientras estás en Windows, puedes hacer uso de la CHKDSK o SFC comandos para hacer esto. Sin embargo, la recuperación depende de la cantidad de errores que generó el archivo dañado.

Ahora, el proceso de recuperación y restauración ha finalizado. Otra cosa importante a tener en cuenta es que puedes recuperar un bloque dañado directamente en otro bloque, en lugar de crear un archivo de imagen y luego copiarlo al nuevo bloque. Bueno, en la siguiente sección cubro este proceso en detalle.

Recuperar bloque a otro bloque

Para recuperar un bloque directamente a un nuevo bloque, primero conecte el bloque al sistema y use nuevamente lsblk comando para identificar el nombre del bloque. Los nombres de bloque incorrectos pueden arruinar todo el proceso y perder datos.

Después de identificar el bloque de origen y el bloque de destino, use el siguiente comando para recuperar el bloque:

sudo ddrescate -d -F -r2 / desarrollador / [ fuente ] / desarrollador / [ destino ] copia de seguridad.log

Asumamos /dev/sdb es el bloque de destino, por lo que para copiar el /dev/sda directorio al nuevo uso del bloque:

sudo ddrescate -d -F -r2 / desarrollador / sda / desarrollador / sdb backup.log

Nuevamente, consulte las consideraciones críticas mencionadas en las secciones anteriores antes de intentar este proceso.

Recuperar datos específicos de los archivos de imagen recuperados

En muchos casos, el propósito de la recuperación de datos es encontrar archivos específicos de unidades dañadas. Para acceder al archivo específico, necesita montar el archivo de imagen. En Linux, el archivo de imagen recuperado se puede explorar utilizando el montar dominio.

Antes de montar el archivo de imagen, cree una carpeta o directorio en el que desee extraer el contenido del archivo de imagen.

mkdir Montaje de recuperación

A continuación, monte el archivo de imagen usando:

sudo montar -O recuperación de bucle.img ~ / Montaje de recuperación

El indicador -o indica las opciones, mientras que la opción de bucle se usa para tratar el archivo de imagen como un dispositivo de bloque.

Ahora tiene acceso al contenido del archivo de imagen, como se muestra en la siguiente captura de pantalla.

Para desmontar el bloque, utilice el desmontar dominio.

sudo desmontar ~ / Montaje de recuperación

Características avanzadas

Para iniciar la recuperación desde un punto específico, utilice el -i bandera o –posición-de-entrada . Debe estar en bytes, por defecto es 0 bytes. Esto es importante para reanudar la copia desde un punto específico. Por ejemplo, si desea comenzar el proceso de copia desde el punto de 10 GB, utilice el siguiente comando.

sudo ddrescate -i10GiB / desarrollador / sda archivo de imagen.img archivo de registro.log

Para definir el tamaño máximo del dispositivo de entrada, el -s Se utilizará la bandera. El -s significa tamaño y también se puede utilizar como -tamaño en bytes. Si la herramienta no reconoce el tamaño del archivo de entrada, utilice esta opción para especificarlo.

sudo ddrescate -s10GiB / desarrollador / sda archivo de imagen.img archivo de registro.log

El -preguntar La opción puede ser bastante útil, ya que solicita confirmación de los bloques de entrada y salida antes de comenzar el proceso de copia. Como se mencionó anteriormente, el sistema asigna dinámicamente nombres a los bloques y estos cambian al reiniciar. Entonces, en ese caso, esta opción puede resultar útil.

sudo ddrescate --preguntar / desarrollador / sda archivo de imagen.img archivo de registro.log

Además, a continuación se menciona una lista de algunas otras opciones:

-R -contrarrestar Para invertir la dirección de copia
-q -bastante Para suprimir todos los mensajes de salida
-en -verboso Para elaborar, todos los mensajes de salida.
-pag –preasignar Para preasignar almacenamiento para el archivo de salida
-PAG –vista previa de datos Las líneas de visualización de los últimos datos leídos por defecto son 3 líneas

Cómo funciona ddrescue

El ddrescue utiliza un potente algoritmo de recuperación que se divide en cuatro fases:

1. Copiar

2. Recorte

3. Raspado

4. Reintentar

La ejecución del algoritmo ddrescue se muestra en la siguiente imagen.

Conclusión

El ddrescate es una poderosa herramienta de recuperación que se utiliza para recuperar datos de una unidad dañada o defectuosa a otra unidad copiando los datos. Se puede instalar sin esfuerzo en cualquier distribución de Linux con la ayuda del administrador de paquetes predeterminado. Tenga en cuenta la consideración importante antes de utilizar esta herramienta mencionada en esta guía. El proceso de copiar datos es simple: desmonte la unidad y use el comando ddrescue con el nombre de la unidad de origen y el nombre de la unidad de destino. No olvide utilizar el archivo de registro, ya que resulta muy útil para reanudar el proceso de recuperación.