Uso de dd

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org/

Licencia de este documento: Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2022 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

Acerca de dd.

Es una herramienta para GNU/Linux cuyo propósito principal es convertir y copiar un archivo. El GNU/Linux los dispositivos que sirven para acceder hacia las particiones de una unidad de almacenamiento y otros dispositivos especiales —como /dev/zero o /dev/urandom— aparecen como archivos en el sistema de archivos sobre los cuales puede leer y escribir dd. Por tanto, puede ser utilizado para tareas como respaldar un sector de arranque maestro, una partición o una unidad de almacenamiento externo y obtener una cantidad fija de datos aleatorios. Puede realizar también la conversión de los sectores de una unidad de almacenamiento mientras se copia, incluyendo el orden de intercambio de bytes y convertir desde y hacia las codificaciones de texto ASCII y EBCDIC.

El programa dd —posible acrónimo de data description— viene instalado de modo predeterminado. Forma parte del paquete coreutils que es un componente obligatorio del sistema operativo.

Procedimientos

Sintaxis básica.

La sintaxis básica de dd es la siguiente:

dd if=[origen] of=[destino] bs=[tamaño de bloques] count=[número de bloques a copiar]

En esta sección practicará restaurar y respaldar el sector de arranque maestro y sus partes individuales. Surge la siguiente pregunta: ¿En qué ruta de guardarán los respaldos? Éstos serán creados en el directorio de trabajo actual o bien la ruta que defina con la opción of. Ejemplo:

dd if=/dev/sda of=/home/fulano/mbr.bin bs=512 count=1

En el ejemplo anterior se creará un archivo en la ruta /home/fulano/mbr.bin.

Otro ejemplo:

dd if=/dev/sda of=mbr.bin bs=512 count=1

En el ejemplo anterior se creará un archivo denominado mbr.bin en el directorio de trabajo actual.

Otro ejemplo:

dd if=/dev/sda of=/root/mbr.bin bs=512 count=1

En el ejemplo anterior se creará un archivo en la ruta /root/mbr.bin.

Una vez comprendido lo anterior, continué con los procedimientos.

Respaldo y restauración del sector de arranque maestro.

Los primeros 512 bytes del disco duro o unidad de almacenamiento utilizado para el sistema operativo, corresponde al sector de arranque maestro, donde:

Ejecute lo siguiente para realizar un respaldo del sector de arranque maestro:

dd if=/dev/sda of=/root/mbr.bin bs=512 count=1

Ejecute lo siguiente para restaurar el sector de arranque maestro:

dd if=/root/mbr.bin of=/dev/sda bs=512 count=1

Ejecute lo siguiente para respaldar exclusivamente el gestor de arranque:

dd if=/dev/sda of=gestor.bin bs=446 count=1

Ejecute lo siguiente para restaurar el gestor de arranque:

dd if=/root/gestor.bin of=/dev/sda bs=446 count=1

Ejecute lo siguiente para respaldar exclusivamente la tabla de particiones:

dd if=/dev/sda of=/root/tabla.bin skip=446 bs=1 count=64

Ejecute lo siguiente para restaurar exclusivamente la tabla de particiones:

dd if=/root/tabla.bin of=/dev/sda seek=446 bs=1 count=64

Cabe señalar que skip y seek hacen exactamente lo mismo.

Borrar el sector de arranque maestro.

Los siguientes tres ejemplos son sólo demostrativos. Por favor absténgase de ejecutarlos.

Lo siguiente sería lo que habría que ejecutar para borrar exclusivamente el gestor de arranque:

dd if=/dev/zero of=/dev/sda bs=446 count=1

Lo siguiente sería lo que habría que ejecutar para borrar exclusivamente la tabla de particiones, algo que nadie en su sano juicio haría sin tener un respaldo a la mano:

dd if=/dev/zero of=/dev/sda seek=446 bs=1 count=64

Lo siguiente sería lo que habría que ejecutar para borrar todo el sector de arranque completo, es decir el gestor de arranque, tabla de particiones y los dos bytes mágicos:

dd if=/dev/zero of=/dev/sda bs=512 count=1

Tenga cuidado al ejecutar los tres ejemplos anteriores. Si se equivoca se corre el riesgo de dañar de manera irreversible los datos del disco duro o unidad de almacenamiento utilizada.

Formato de bajo nivel.

Los siguientes son ejemplos hipotéticos con fines demostrativos. Absténgase de ejecutarlos.

Ejecute lo siguiente para dar un formato de bajo nivel y eliminar así toda la información de una hipotética unidad de almacenamiento que corresponde a /dev/sde, escribiendo 0 (ceros) en cada sector de ésta:

dd if=/dev/zero of=/dev/sde

Ejecute lo siguiente para dar formato de bajo nivel escribiendo números aleatorios en todos los sectores de una unidad de almacenamiento que corresponde a /dev/sde:

dd if=/dev/urandom of=/dev/sde

Es más eficiente la eliminación de datos si se utiliza el dispositivo de números aleatorios.