Table of Contents

Comando dd

O comando dd é muito interessante e muito útil em algumas situações. Com ele podemos criar arquivos vazios para usar, como pseudo-filesystem, arquivos como determinados tamanhos, fazer backup da MBR e até mesmo criar imagens iso.

O comando dd tem a seguinte sintaxe:

# dd [opções] of=origem if=destino bs=tamanho_do_bloco count=numero_de_interações

Criando um arquivo de 1 e 10 MB respectivamente:

# dd if=/dev/zero of=/tmp/um bs=1024 count=1000
1000+0 registros de entrada
1000+0 registros de saída
1024000 bytes (1,0 MB) copiados, 0,0022918 s, 447 MB/s
# dd if=/dev/zero of=/tmp/dez bs=10 count=1M
1048576+0 registros de entrada
1048576+0 registros de saída
10485760 bytes (10 MB) copiados, 0,905146 s, 11,6 MB/s
# du -h /tmp/{um,dez}
1000K	/tmp/um
10M	/tmp/dez

Clonando HD

Criar a imagem do HD de origem e armazená-lo no HD externo:

# dd if=/dev/sda conv=sync,noerror bs=64K > /mnt/sda.img 

Para recuperar a imagem:

# dd if=/mnt/sda.img of=/dev/sda conv=sync,noerror bs=64k

Criando arquivos

Arquivo de 1MB:

$ dd if=/dev/zero of=test.img bs=1024 count=0 seek=1024

De 10MB:

$ dd if=/dev/zero of=test.img bs=1024 count=0 seek=$[1024*10]

ou

# dd if=/dev/zero of=file1 bs=10485760 count=1

De 100MB:

$ dd if=/dev/zero of=test.img bs=1024 count=0 seek=$[1024*100]

De 1GB:

$ dd if=/dev/zero of=1g.img bs=1 count=0 seek=1G

Criando chaves criptografadas

$ dd if=/dev/random bs=1 count=5 2> /dev/null | xxd -ps
$ dd if=/dev/random bs=1 count=8 2> /dev/null | xxd -ps
$ dd if=/dev/random bs=1 count=13 2> /dev/null | xxd -ps
$ dd if=/dev/random bs=1 count=16 2> /dev/null | xxd -ps
$ dd if=/dev/random bs=1 count=19 2> /dev/null | xxd -ps
$ dd if=/dev/random bs=1 count=29 2> /dev/null | xxd -ps
$ dd if=/dev/random bs=1 count=32 2> /dev/null | xxd -ps

Outros exemplo

Backup da MBR (Primeiros 512 bytes do disco)

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

Criando imagem .iso do CD-ROM

# dd if=/dev/sr0 of=GustVbox.iso

Usando o diretório /dev/random, /dev/null e /dev/zero

# dd if=/dev/random of=random bs=4096 count=1
# dd if=/dev/null of=null bs=4096 count=1
# dd if=/dev/zero of=zero bs=4096 count=1
# du -h {random,null,zero}
4,0K	random
0	null
4,0K	zero

Referências: