Entendendo o comando dd no Linux

2

alguém pode me explicar o que este comando faz:

dd if=/dev/zero of=10MBfile1 count=10000 bs=1024

que produz esta saída:

10000+0 records in
10000+0 records out
10240000 bytes (10 MB) copied, 0.146924 s, 69.7 MB/s

Eu não poderia fazer nenhum sentido, então alguém poderia me explicar o que está acontecendo e o que acontece. Obrigado.

    
por a22asin 11.11.2014 / 23:31

2 respostas

3
  • copia de / dev / zero, que é um arquivo especial que é um fluxo constante de zeros.
  • copia isso para um arquivo no disco, chamado '10MBfile1'
  • ele faz em blocos (pense em 'pedaços') de 1024 bytes,
  • e faz 10000 blocos, o que equivale a 10 MB.

Então, em resumo, ele cria um arquivo no disco de 10MB que é preenchido com nada além de zeros no disco.

Por exemplo:

dd if=/dev/zero of=blah count=10 bs=10

Cria um arquivo semelhante chamado 'blah ;, mas apenas 100 bytes de tamanho e ...

$hexdump blah
0000000 0000 0000 0000 0000 0000 0000 0000 0000
0000060 0000 0000                              

Mostra que está vazio.

    
por 11.11.2014 / 23:36
2

A página dd man, pelo menos no meu sistema Debian Linux atual, diz para a sinopse "copiar e converter um arquivo". Isso pode ser um pouco confuso.

O objetivo original de% p_de% era converter um arquivo do formato IBM EBCDIC em formato ASCII. Ele ainda faz isso se você especificar as opções corretas, mas a menos que você tenha um monte de arquivos de mainframes da IBM por aí, você não vai usá-lo assim muito.

dd simplesmente copia bytes brutos do arquivo de entrada ( dd ) para o arquivo de saída ( if= ) O número de bytes que copiará será of= times bs= .

O poder (potencialmente muito destrutivo) de count= é que ele não liga para os arquivos especificados: arquivos reais, partições de disco bruto ( dd ), o próprio dispositivo de disco bruto ( /dev/sda1 ), padrão entrada ou saída, uma unidade de fita, um dispositivo flash MTD, CMOS do seu sistema ( /dev/sda ), sua memória de vídeo gráfica ( /dev/nvram ), memória do kernel ( /dev/fb0 ), etc. >

Portanto, como a tabela de partição do disco rígido reside no bloco 0 do disco rígido e o bloco tem 512 bytes, isso fará backup da tabela de partição do disco rígido (e do primeiro estágio) em um arquivo:

/dev/kmem

Se você quiser restaurá-lo por algum motivo, basta inverter os parâmetros # dd if=/dev/sda of=sda.sector0.bin bs=512 count=1 e if= .

Se você não especificar of= , continuará até o final do dispositivo. Isto irá escrever zeros em todo o seu disco rígido:

count=

Portanto, tenha cuidado.

    
por 12.11.2014 / 00:11

Tags