Descripción general
dd se conoce comúnmente como la abreviatura de 'disk dump' o 'data duplicator' y funciona leyendo y escribiendo datos en unidades de bloque. Lee datos del archivo de entrada (if) y los copia al archivo de salida (of), y durante este proceso se pueden aplicar varias opciones de conversión (conv) y tamaño de bloque (bs).
Funciones principales
- Creación y restauración de imágenes de disco/partición
- Creación de medios de arranque
- Redimensionamiento de archivos y inicialización de contenido
- Conversión de datos (por ejemplo, conversión de mayúsculas/minúsculas)
Opciones principales
El comando dd permite una manipulación de datos sofisticada a través de varias opciones. La especificación de los archivos de entrada (if) y salida (of) es particularmente importante, y el tamaño del bloque (bs) y el número de bloques a copiar (count) controlan el alcance de la operación.
Especificación de entrada/salida
Tamaño y número de bloques
Conversión y estado
Comando generado:
Combina los comandos.
Descripción:
`dd` Ejecutando el comando.
Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.
Ejemplos de uso
El comando dd es potente, pero su uso incorrecto puede provocar una pérdida de datos grave. Los siguientes ejemplos muestran usos comunes, pero al aplicarlos a discos del sistema real, asegúrese de realizar una copia de seguridad y proceder con precaución.
Crear un archivo dummy de 100 MB
dd if=/dev/zero of=dummy.img bs=1M count=100
Lee 100 bloques de 1 MB de /dev/zero y crea el archivo 'dummy.img'.
Copia de seguridad de una partición de disco (requiere precaución)
dd if=/dev/sda1 of=sda1_backup.img bs=4M status=progress
Copia el contenido completo de la partición /dev/sda1 al archivo 'sda1_backup.img'. 'status=progress' muestra el progreso. **Verifique la ruta del dispositivo de destino con mucho cuidado.**
Sobrescribir el contenido de un archivo con ceros (borrado seguro)
dd if=/dev/zero of=myfile.txt bs=1M count=1 conv=notrunc
Sobrescribe el contenido del archivo existente 'myfile.txt' con ceros. 'conv=notrunc' mantiene el tamaño del archivo.
Crear una unidad USB de arranque a partir de una imagen ISO (con extrema precaución)
dd if=ubuntu.iso of=/dev/sdb bs=4M status=progress conv=fsync
Copia el archivo 'ubuntu.iso' a la unidad USB '/dev/sdb' para hacerla arrancable. **Asegúrese de verificar la ruta del dispositivo especificada en 'of'. Una especificación incorrecta puede dañar el disco del sistema.** 'conv=fsync' asegura que todos los datos se escriban completamente en el disco.
Copiar una parte específica de un archivo
dd if=input.txt of=output.txt bs=1 count=100 skip=50 seek=0
Lee 100 bytes a partir del byte 51 del archivo 'input.txt' y los copia al principio del archivo 'output.txt'. (Dado que bs=1, skip/seek son en bytes)
Consejos y precauciones
El comando dd es muy potente, por lo que se requiere especial precaución al usarlo. En particular, especificar un dispositivo o archivo incorrecto en las opciones `if` y `of` puede dañar los datos del sistema.
Precauciones clave
- **Verificar el destino**: Verifique varias veces las rutas especificadas en `if` y `of`. Los archivos de dispositivo como `/dev/sda` pueden ser particularmente críticos.
- **Progreso**: Utilice la opción `status=progress` para verificar el progreso de la operación en tiempo real. Es útil para operaciones de gran tamaño.
- **Tamaño del bloque**: La opción `bs` afecta significativamente al rendimiento. Generalmente, 1M, 4M, 8M son eficientes.
- **Riesgo de pérdida de datos**: `dd` puede sobrescribir datos sin previo aviso, por lo que al usarlo en discos o particiones con datos importantes, asegúrese de realizar una copia de seguridad primero.
Uso con el comando pv
El comando `dd` en sí mismo tiene una visualización de progreso limitada. Al usarlo junto con el comando `pv` (Pipe Viewer), puede verificar un progreso más detallado, velocidad de transferencia y tiempo estimado de finalización. Si `pv` no está instalado, primero debe instalarlo. (por ejemplo, `sudo apt install pv` o `sudo yum install pv`) **Ejemplo de uso:** `dd if=/dev/sda | pv -pteb | dd of=/dev/sdb`