GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar dd en Linux sin destruir tu disco

Este artículo es un extracto del capítulo 4 de Linux en acción, publicado por Manning.

Ya sea que intente rescatar datos de una unidad de almacenamiento moribunda, hacer una copia de seguridad de los archivos en un almacenamiento remoto o hacer una copia perfecta de una partición activa en otro lugar, necesitará saber cómo copiar unidades y sistemas de archivos de manera segura y confiable. Afortunadamente, dd es una herramienta de copia de imágenes simple y poderosa que ha existido, bueno, prácticamente desde siempre. Y en todo ese tiempo, no ha aparecido nada que funcione mejor.

Hacer copias perfectas de unidades y particiones

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

Hay todo tipo de cosas que puedes hacer con dd si investigas lo suficiente, pero donde brilla es en la forma en que te permite jugar con las particiones. Por supuesto, puede usar tar o incluso scp para replicar sistemas de archivos completos copiando los archivos de una computadora y luego pegándolos tal cual en la parte superior de una nueva instalación de Linux en otra computadora. Pero, debido a que esos archivos del sistema de archivos no son imágenes completas, requerirán un sistema operativo host en ejecución en ambos extremos para servir como base.

Usando dd , por otro lado, puede hacer imágenes perfectas byte por byte de, bueno, casi cualquier cosa digital. Pero antes de que comiences a lanzar particiones de un extremo a otro de la tierra, debo mencionar que hay algo de verdad en esa vieja broma de administración de Unix:"dd significa destructor de discos ." Si escribe aunque sea un carácter incorrecto en un dd comando, puede eliminar instantánea y permanentemente un disco completo de datos valiosos. Y sí, la ortografía cuenta.

Recuerde: Antes de presionar la tecla Intro para invocar dd , ¡haz una pausa y piensa con mucho cuidado!

Operaciones básicas de dd

Ahora que ha sido debidamente advertido, comenzaremos con algo sencillo. Suponga que desea crear una imagen exacta de un disco completo de datos que ha sido designado como /dev/ sda . Ha conectado una unidad vacía (lo ideal es que tenga la misma capacidad que su /dev/ sda sistema). La sintaxis es simple:if= define la unidad de origen y of= define el archivo o la ubicación donde desea que se guarden sus datos:

# dd if=/dev/sda of=/dev/sdb

El siguiente ejemplo creará un archivo .img del /dev/ sda unidad y guárdelo en el directorio de inicio de su cuenta de usuario:

# dd if=/dev/sda of=/home/username/sdadisk.img

Esos comandos crearon imágenes de unidades completas. También puede concentrarse en una sola partición de una unidad. El siguiente ejemplo hace eso y también usa bs para establecer el número de bytes a copiar de una sola vez (4.096, en este caso). Jugando con las bs El valor puede tener un impacto en la velocidad general de un dd operación, aunque la configuración ideal dependerá de su perfil de hardware y otras consideraciones.

# dd if=/dev/sda2 of=/home/username/partition2.img bs=4096

La restauración es simple:efectivamente, invierte los valores de if y of . En este caso, if= toma la imagen que desea restaurar y of= toma la unidad de destino en la que desea escribir la imagen:

# dd if=sdadisk.img of=/dev/sdb

También puede realizar las operaciones de creación y copia en un solo comando. Este ejemplo, por ejemplo, creará una imagen comprimida de una unidad remota usando SSH y guardará el archivo resultante en su máquina local:

# ssh [email protected] "dd if=/dev/sda | gzip -1 -" | dd of=backup.gz

Siempre debe probar sus archivos para confirmar que funcionan. Si es una unidad de arranque que ha creado, péguela en una computadora y vea si se inicia como se esperaba. Si se trata de una partición de datos normal, móntela para asegurarse de que los archivos existan y se pueda acceder a ellos correctamente.

Limpiar discos con dd

Hace años, tenía un amigo que era responsable de la seguridad en las embajadas de su gobierno en el extranjero. Una vez me dijo que cada embajada bajo su supervisión contaba con un martillo oficial emitido por el gobierno. ¿Por qué? En caso de que la instalación estuviera alguna vez en riesgo de ser invadida por hostiles, el martillo se usaría para destruir todos sus discos duros.

¿Que es eso? ¿Por qué no simplemente eliminar los datos? Estás bromeando, ¿verdad? Todo el mundo sabe que eliminar archivos que contienen datos confidenciales de los dispositivos de almacenamiento en realidad no elimina los datos. Con suficiente tiempo y motivación, casi cualquier cosa se puede recuperar de prácticamente cualquier medio digital, con la posible excepción de los que se han martillado bien y correctamente.

Sin embargo, puede usar dd para que sea mucho más difícil para los malos acceder a sus datos antiguos. Este comando pasará algún tiempo escribiendo millones y millones de ceros en cada rincón y grieta del /dev/sda1 partición:

# dd if=/dev/zero of=/dev/sda1

Pero se pone mejor. Usando /dev/ urandom archivo como su fuente, puede escribir sobre un disco con caracteres aleatorios:

# dd if=/dev/urandom of=/dev/sda1

Monitoreo de operaciones dd

Dado que el archivado de discos o particiones puede llevar mucho tiempo, es posible que desee agregar un monitor de progreso a su comando. Instale Pipe Viewer (sudo apt install pv en Ubuntu) e insértelo en dd . Con pv , ese último comando podría verse así:

# dd if=/dev/urandom | pv | dd of=/dev/sda1
4,14MB 0:00:05 [ 98kB/s] [      <=>                  ]

¿Posponer las copias de seguridad y la administración de discos? Con dd, no te quedan demasiadas excusas. Realmente no es difícil, pero ten cuidado. ¡Buena suerte!


Linux
  1. Cómo usar BusyBox en Linux

  2. Cómo uso cron en Linux

  3. Cómo usar el comando Su en Linux

  4. Cómo usar OpenSSH para conectarse a su servidor Linux

  5. Cómo usar fdisk para particionar un disco en Linux

Cómo usar el comando Disown en Linux

Cómo usar el comando SS de Linux

Cómo usar el comando nohup de Linux

Cómo usar prácticamente tu terminal Linux (parte 2)

Cómo usar TeamViewer en Ubuntu 20.04 Linux sin instalación

Cómo instalar y usar Docker en su sistema Linux