O que exatamente o comando dd faz?

8

Há alguns dias, fiquei encantado ao descobrir que não é tão difícil gravar uma imagem ISO em um USB sem a ajuda de um programa de terceiros explicitamente projetado para isso. Mas o comando (ou programa) que facilita isso - dd - me intriga.

Segundo a Wikipedia, ele foi projetado para copiar e converter dados brutos, mas sinceramente acho essa definição muito ambígua e vaga. Entendo que ele permite transformar um dado em outro, mas o que acontece se o arquivo de saída especificado for muito pequeno para ser transformado no arquivo de entrada especificado?

dd if=giant_file of=tiny_file

Além disso, quando eu crio um USB inicializável com um arquivo de imagem, o USB obtém um tipo de isofs do sistema de arquivos , mas se eu gravar um arquivo ou executável na unidade, ele manterá seu tipo regular de sistema de arquivos.

Qualquer esclarecimento sobre o que o comando dd realmente faz ou como ele funciona em um nível inferior seria muito apreciado. Obrigado!

ICoffeeConsumer
fonte

Respostas:

8

ddfaz uma cópia byte a byte da origem para o destino, com uma conversão opcional especificada pelo convargumento. Ele executa lê e escreve como especificado pelo *bse *flagopções, com o intervalo definido pelos count, skipe seekopções.

o que acontece se o arquivo de saída especificado for muito pequeno para ser transformado no arquivo de entrada especificado?

Se offor muito pequeno para conter if, os dados serão truncados para caber. Observe que se offor um arquivo comum, ele será substituído.

Ignacio Vazquez-Abrams
fonte
1
ofé sobrescrito mesmo que não seja um arquivo - é uma maneira muito boa de (acidentalmente?) destruir uma partição / unidade! É por isso que é muito importante duplicar e talvez triplicar o destino, se for uma unidade / partição, para garantir que você tenha a correta.
Bob
1
Tecnicamente, ele grava no objeto em vez de substituí-lo.
Ignacio Vazquez-Abrams
Obrigado pela resposta. E se você não incluir nenhum argumento, mas fizer algo como dd if=executable of=archive.tar, assumindo que ambos sejam do mesmo tamanho. O arquivo será transformado perfeitamente no executável?
ICoffeeConsumer
1
Ele fará uma cópia de byte por byte de executableaté archive.tar512 bytes por vez. Não transformará o binário em um arquivo morto.
Ignacio Vazquez-Abrams