dd
100%

Dispositivos · Lección 7

dd

Aprende cómo `dd` copia flujos de bloques y cómo evitar errores destructivos de entrada, salida y tamaño.

dd copia datos de un flujo de entrada a uno de salida y aplica los tamaños de bloque y las conversiones solicitados. No comprende los sistemas de archivos, los límites de las particiones ni si un destino contiene datos valiosos. Esto lo hace útil para imágenes y dispositivos sin procesar, e inmediatamente destructivo cuando el destino es incorrecto.

Entrada, salida y tamaño de bloque

Una orden tiene esta forma general:

$ dd if=input.img of=output.img bs=4M status=progress
  • if= selecciona la entrada; sin él, dd lee la entrada estándar.
  • of= selecciona la salida; sin él, dd escribe en la salida estándar.
  • bs= establece el tamaño de los bloques de entrada y salida para una copia ordinaria.
  • status=progress solicita a GNU dd que comunique periódicamente el progreso de la transferencia.

dd copia bloques, no necesariamente un byte cada vez. Un bs mayor puede reducir la sobrecarga de las llamadas al sistema, pero el valor óptimo depende de los dispositivos, la alineación, la caché y la carga de trabajo. No cambia los datos lógicos copiados.

¿Qué operando selecciona el destino en el que escribe dd?

Limitar la copia

count= limita el número de bloques de entrada procesados. Para un archivo de entrada normal:

$ dd if=source.img of=prefix.img bs=1M count=2 status=progress

Esto solicita dos bloques de entrada de hasta 1 MiB cada uno, por lo que copia como máximo 2 MiB. Las lecturas cortas pueden complicar la multiplicación sencilla en flujos como las tuberías; GNU dd ofrece iflag=fullblock cuando se necesitan bloques de entrada completos. Distingue las unidades binarias y la sintaxis de los sufijos conforme a la implementación local.

Para un archivo normal, ¿qué cantidad máxima solicita bs=1M count=2?

Escribir una imagen en un dispositivo de bloques

Una restauración sin procesar puede tener este aspecto:

$ sudo dd if=backup.img of=/dev/sdX bs=4M status=progress conv=fsync

/dev/sdX es deliberadamente un marcador de posición, no una orden que se deba copiar. Antes de sustituirlo:

  1. Conserva una copia de seguridad probada de todos los datos valiosos.
  2. Identifica el destino por modelo, número de serie, tamaño, transporte y enlace persistente mediante lsblk, udevadm o herramientas equivalentes.
  3. Confirma que ninguna partición del destino esté montada, se utilice como intercambio, forme parte de RAID o LVM, o esté abierta por otro servicio.
  4. Vuelve a comprobar el dispositivo después de cualquier desconexión, reinicio o cambio de topología.
  5. Asegúrate de que la imagen quepa y de que realmente pretendas escribir en todo el dispositivo.

El dispositivo de salida se sobrescribe desde el principio. Invertir if y of, seleccionar el disco del sistema o utilizar un disco completo cuando se pretendía usar una partición puede destruir datos sin pedir confirmación.

¿Cuál es la razón más importante para verificar el modelo, el número de serie, el tamaño y el uso activo antes de escribir en un dispositivo sin procesar?

Crear una imagen coherente

Leer un dispositivo de bloques activo mientras cambia su sistema de archivos puede producir una imagen internamente incoherente. Prefiere un sistema de archivos desmontado, una instantánea coherente con la aplicación o un flujo documentado de inmovilización e instantáneas. Las bases de datos y las máquinas virtuales pueden exigir sus propios procedimientos de pausa.

Una imagen sin procesar copia bloques, incluidos los metadatos del sistema de archivos y las regiones sin usar, por lo que puede ser mucho mayor que una copia de seguridad basada en archivos y puede reproducir identificadores que deban cambiarse antes de montar un clon junto al original.

¿Por qué puede ser poco fiable crear una imagen de un sistema de archivos montado que está cambiando?

Finalización y verificación

Que la orden termine sin un error de E/S no demuestra que se eligieran la fuente y el destino pretendidos ni que la imagen sea utilizable. Registra las identidades y los tamaños exactos, asegúrate de que la salida almacenada en búfer haya llegado al soporte, compara una lectura posterior limitada adecuadamente o hashes criptográficos y prueba la recuperación conforme al plan de copias de seguridad.

No anuncies pasadas de sobrescritura con dd como un borrado seguro garantizado para SSD, capas de traducción flash, almacenamiento de aprovisionamiento fino, instantáneas o sectores reasignados. Utiliza la sanitización compatible con el dispositivo y la plataforma junto con una política explícita de destrucción de datos.

¿Qué no demuestra por sí solo un estado de salida cero de dd?

Lección completada

Has completado dd

Ahora puedes razonar sobre dd como una herramienta de copia de bloques sin conocimiento de la intención.

  • Distingue if, of, bs y count.

  • Verifica la identidad persistente del destino y todos sus consumidores activos.

  • Crea imágenes a partir de un estado de almacenamiento coherente.

  • Vacía los búferes, verifica y prueba la recuperación después de una copia.

  • Trata toda salida a un dispositivo sin procesar como potencialmente destructiva.

Guarda tu progreso

Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.

Crear una cuenta gratuita
Volver a Dispositivos