Aprendiendo algunos conceptos básicos de Linux: el comando DD, para copiar y convertir datos de archivos a bajo nivel. |ESP-ENG|

in blurtech •  2 years ago 

239.-Guias-y-tutoriales-de-Linux-DD.jpg

dddd es un comando de la familia de los Sistemas Operativos Unix que permite copiar y convertir datos de archivos a bajo nivel.

Es de mucha importancia aclarar que en sistemas operativos Unix, cualquier dispositivo es manejado como un archivo. Por lo tanto el comando dd, puede ser utilizado en diversos dispositivos y volúmenes (particiones), más allá de los archivos propiamente dicho.

Si se ha especificado el tamaño de bloques para la transferencia (lectura/escritura), mediante el parámetro bs, y no se ha indicado alguna conversión salvo noerror, notrunc o sync, se procede a la lectura de a un bloque por vez del origen y la escritura del mismo en destino.

El tamaño del bloque a escribir es el mismo que el de la de entrada, salvo cuando se indica la conversión sync, que en cuyo caso se procede a rellenar con ceros el bloque de destino. Si no se utiliza sync, el último bloque a escribirse puede tener un tamaño menor.

Por otro lado, en caso de que no se haya especificado un tamaño de bloque, dd utiliza 512 bytes como tamaño por defecto.

terminal-comandos

Es generalmente usado para realizar operaciones avanzadas sobre dispositivos o archivos, como pueden ser:

  • Transferencias de datos específicos.
  • Copias de seguridad de la información en crudo (raw data).
  • Conversión de algunas codificaciones soportadas y/o caracteres predefinidos.

Es muy importante tener claro cual sera el disco duro de origen y cual el de destino, algo que averiguamos fácilmente con el comando:

sudo fdisk –l

La sintaxis más básica, sería ésta:

sudo dd if=[origen] of=[destino]

Por lo que si quisiéramos clonar un disco duro tipo IDE:

sudo dd if=/dev/hda of=/dev/hdb bs=1M

para discos SATA:
sudo dd if=/dev/sda of=/dev/sdb bs=1M

Con bs=1M, estamos diciendo que tanto la lectura como la escritura se haga en bloques de 1 megabyte (menos, sería más lento pero más seguro, y con más nos arriesgamos a perder datos por el camino).

Hay que tener en cuenta que de esta forma grabarás el disco “tal cual”, MBR, tabla de particiones, espacio vacío, etc., por lo que sólo podrás grabar en un disco del mismo o mayor tamaño.

Vamos a ver algunos ejemplos prácticos y opciones de este comando:

sudo dd if=/dev/hda1 of=/dev/hdb bs=1M

Grabaríamos sólo la primera partición del disco de origen en el de destino.

sudo dd if=/dev/hda of=/dev/hdb1 bs=1M
unix_reborn_by_the_man_who_writes

Grabaríamos el disco completo en la primera partición del disco de destino.

sudo dd if=/dev/hda of=/home/hda.bin

Crear una imagen del disco duro, puede ser bin o iso (a partir de ahora utilizaré nuestro home como ejemplo). Como root:

sudo dd if=/dev/hda | gzip > /home/hda.bin.gz

Crearíamos con el anterior comando una imagen del disco comprimida, (podemos utilizar gzip, bzip o bzip2.)

Crea una imagen de un CD:

sudo dd if=/dev/cdrom of=/home/imagendeCD.iso

Para montar la imagen del CD:

mount -o loop imagedeCD.iso /mnt/home

Copiar el Master Boot Record:

sudo dd if=/dev/hda of=mbr count=1 bs=512

Para restaurar el MBR:

sudo dd if=mbr of=/dev/hda

Copiar el Volume Boot Sector (VBS):

sudo dd if=/dev/hda of=/home/sector_arranque_hda count=1 bs=512

Para restaurar el VBS:

sudo dd if=/home/sector_arranque_hda of=/dev/hda

Algunas curiosidades:

Recuperar un DVD rayado:

sudo dd if=/dev/cdrom of=/home/dvd_recuperado.iso conv=noerror,sync

Esto no recupera todo el DVD, en este caso, sólo los sectores legibles. Sirve también para discos duros defectuosos.

La opción noerror sirve para obviar los errores de lectura en cualquier situación. Otro ejemplo sería:

sudo dd conv=noerror if=/dev/hda of=~/home/imagen_disco_con_errores.iso

Grabaríamos con ello una imagen del disco duro en nuestro home saltándonos los errores del disco (muy útil para discos que se están muriendo).

Limpia nuestro MBR y la tabla de particiones:

sudo dd if=/dev/zero of=/dev/hda bs=512 count=1

Limpia el MBR pero no toca la tabla de particiones (muy útil para borrar el GRUB sin perder datos en las particiones):

sudo dd if=/dev/zero of=/dev/hda bs=446 count=1

Crea un archivo vacío de 1 Mb, una opción muy interesante como ahora veremos:

sudo dd if=/dev/zero of=archivo_nuevo_vacio bs=1024 count=1024

Crear un archivo swap de 2Gb así de fácil:

sudo dd if=/dev/zero of=/swapspace bs=4k count=2048M
sudo mkswap /swapspace
sudo swapon /swapspace

Al borde de la paranoia… Convierte todas las letras en mayúsculas:

dd if=miarchivo of=miarchivo conv=ucase

Cambia en todo el disco, la palabra Puigcorbe por Slqh, ( puedes cambiar rápidamente tu nombre a todos los archivos del disco):

sudo dd if=/dev/sda | sed ‘s/Puigcorbe/Slqh/g’ | dd of=/dev/sda

Llena el disco con caracteres aleatorios cinco veces. No va a quedar ni rastro de información en el disco :

for n in {1..5}; do dd if=/dev/urandom of=/dev/hda bs=8b conv=notrunc; done

separador-tux-tux.png

dddd is a command from the Unix family of Operating Systems that allows you to copy and convert file data at a low level.

It is very important to clarify that in Unix operating systems, any device is managed as a file. Therefore, the dd command can be used on various devices and volumes (partitions), beyond the files themselves.

If the size of blocks for the transfer (read/write) has been specified, using the bs parameter, and no conversion has been indicated except for noerror, notrunc or sync, it proceeds to read one block at a time from the source and the deed of the same at destination.

The size of the block to be written is the same as that of the input, except when the sync conversion is indicated, in which case the destination block is filled with zeros. If sync is not used, the last block to be written may have a smaller size.

On the other hand, in case no block size is specified, dd uses 512 bytes as the default size.

Terminal-commands.

It is generally used to perform advanced operations on devices or files, such as:

Specific Data Transfers.
Backup copies of raw information (raw data).
Conversion of some supported encodings and/or predefined characters.

It is very important to be clear which will be the source hard drive and which will be the destination hard drive, something that we can easily find out with the command:

sudo fdisk –l

The most basic syntax would be this:

sudo dd if=[source] of=[destination]

So if we wanted to clone an IDE type hard drive:

sudo dd if=/dev/hda of=/dev/hdb bs=1M

for SATA drives:
sudo dd if=/dev/sda of=/dev/sdb bs=1M

With bs=1M, we are saying that both reading and writing should be done in 1 megabyte blocks (less would be slower but more secure, and with more we risk losing data along the way).

Keep in mind that in this way you will record the disk "as is", MBR, partition table, empty space, etc., so you can only record on a disk of the same or larger size.

Let's see some practical examples and options of this command:

sudo dd if=/dev/hda1 of=/dev/hdb bs=1M

We would write only the first partition of the source disk to the destination disk.

sudo dd if=/dev/hda of=/dev/hdb1 bs=1M
unix_reborn_by_the_man_who_writes

We would write the entire disk to the first partition of the destination disk.

sudo dd if=/dev/hda of=/home/hda.bin

Create an image of the hard drive, it can be bin or iso (from now on I will use our home as an example). As root:

sudo dd if=/dev/hda | gzip > /home/hda.bin.gz

We would create with the previous command a compressed disk image, (we can use gzip, bzip or bzip2.)

Create an image of a CD:

sudo dd if=/dev/cdrom of=/home/CDimage.iso

To mount the CD image:

mount -o loop imagedeCD.iso /mnt/home

Copy the Master Boot Record:

sudo dd if=/dev/hda of=mbr count=1 bs=512

To restore the MBR:

sudo dd if=mbr of=/dev/hda

Copy the Volume Boot Sector (VBS):

sudo dd if=/dev/hda of=/home/hda_boot_sector count=1 bs=512

To restore the VBS:

sudo dd if=/home/hda_boot_sector of=/dev/hda

Some curiosities:

Recover a scratched DVD:

sudo dd if=/dev/cdrom of=/home/dvd_recovered.iso conv=noerror,sync

This does not recover the entire DVD, in this case, only the readable sectors. It also works for faulty hard drives.

The noerror option is used to ignore read errors in any situation. Another example would be:

sudo dd conv=noerror if=/dev/hda of=~/home/disk_image_with_errors.iso

With this, we would record an image of the hard disk in our home, skipping the disk errors (very useful for disks that are dying).

Clean our MBR and partition table:

sudo dd if=/dev/zero of=/dev/hda bs=512 count=1

Clean the MBR but don't touch the partition table (very useful to erase GRUB without losing data on the partitions):

sudo dd if=/dev/zero of=/dev/hda bs=446 count=1

Create an empty 1 Mb file, a very interesting option as we will now see:

sudo dd if=/dev/zero of=new_empty_file bs=1024 count=1024

Creating a 2Gb swap file is that easy:

sudo dd if=/dev/zero of=/swapspace bs=4k count=2048M
sudo mkswap /swapspace
sudo swapon /swapspace

On the verge of paranoia... Convert all letters to uppercase:

dd if=myfile of=myfile conv=ucase

Change the whole disk, the word Puigcorbe by Slqh, (you can quickly change your name to all the files on the disk):

sudo dd if=/dev/sda | sed ‘s/Puigcorbe/Slqh/g’ | dd of=/dev/sda

Fill the disk with random characters five times. Not a trace of information will remain on the disk:

for n in {1..5}; do dd if=/dev/urandom of=/dev/hda bs=8b conv=notrunc; donate

immagine.png

banner-propiedad-imagenes.png



Posted from https://blurtlatam.intinte.org

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE BLURT!
Sort Order:  

Please vote for my witness!!!!! Help me stay top 20!!!!!!
You can do this by logging into your wallet with your active key!
🗳️ https://blurtwallet.com/~witnesses?highlight=outofthematrix

  ·  2 years ago  ·   (edited)

Thank you for voting and supporting my content @outofthematrix.


Posted from https://blurtlatam.intinte.org

witness.jpg