How dd command works in Linux with examples

Dd is a very powerful and useful utility available on Unix and Unix-like operating systems. Como indicado em seu manual, seu propósito é converter e copiar arquivos. Em sistemas operacionais Unix e Unix-like Como Linux, quase tudo é tratado como um arquivo, até mesmo dispositivos de bloqueio: isso faz dd útil, entre outras coisas, para clonar discos ou Limpar dados. O utilitário

está disponível fora da caixa, mesmo na instalação mais mínima de todas as distribuições., Neste tutorial vamos ver como usá-lo e como podemos modificar o seu comportamento usando algumas das opções mais comumente usadas para tornar o seu trabalho de administração do sistema Linux mais fácil.,/td>

Nenhum software especial é necessário para seguir este tutorial, exceto dd Outros Familiaridade com a interface de linha de comando e redirecionamentos Convenções # – requer dado linux comandos para ser executada com privilégios de root, quer directamente como usuário root ou através do uso de sudo comando $ – requer dado linux comandos para ser executada como um usuário não privilegiado

uso Básico

A sintaxe básica de dd é muito simples., Por padrão, o programa lê de standard inpute escreve para standard output. Podemos, no entanto, especificar alternativas input e output arquivos utilizando, respectivamente, o if e of opções de linha de comando. Aqui dd difere da grande maioria dos comandos shell, uma vez que não usa o padrão --option ou -o sintaxe para opções.,

SUBSCREVER NEWSLETTER & RSS
Assinar para RSS e NEWSLETTER e receba as últimas versões do Linux notícias, empregos, aconselhamento de carreira e tutoriais.

vamos ver um exemplo de Utilização do dd. Um dos casos de uso mais típicos para o utilitário é o backup do registro de inicialização mestre: o primeiro setor em um legado MBR sistema particionado., The length of this sector is usually 512 bytes: it contains the stage 1 of the grub bootloader and the disk partition table. Suponha que queremos a cópia de segurançaMBR /dev/sda disco, tudo o que temos a fazer é invocar dd com a seguinte sintaxe:

$ sudo dd if=/dev/sda bs=512 count=1 of=mbr.img

Vamos analisar o comando acima. Em primeiro lugar, prefixamos a invocação dd real com o comando sudo, a fim de executar o comando com privilégios administrativos. Isto é necessário para acessar o dispositivo de bloqueio /dev/sda., Nós então invocamos dd especificando a fonte de entrada com a opção if e o arquivo de saída com of. Nós também usamos a tag bs e count opções para especificar respectivamente a quantidade de dados que deve ser lido de uma vez, ou o tamanho do bloco, e a quantidade total de blocos para ler. Neste caso, poderíamos ter omitido a opção bs, uma vez que 512 bytes é o tamanho padrão usado por dd., Se executar o comando acima, veremos que a mesma produz a seguinte saída:

1+0 records in1+0 records out512 bytes copied, 0.000657177 s, 779 kB/s

A saída acima nos mostra a quantidade de registros de leitura e escrita, a quantidade de dados copiados, a quantidade de tempo em que a tarefa foi concluída e a velocidade de transferência. Agora devemos ter um clone do setor MBR, armazenado no arquivo mbr.img. Obviamente o sufixo de arquivo não tem significado real no Linux, então o uso do “.img “one is completely arbitrary: you may want to use”.,dd ” para deixar o nome do ficheiro reflectir o comando que foi usado para criar o ficheiro.

no exemplo acima usamos a opção bs para definir tanto a quantidade de bytes que devem ser lidos e escritos de cada vez. Para definir separadamente os valores para as duas operações, podemos usar o ibs e obs opções, em vez disso, que definem, respectivamente, a quantidade de bytes de leitura e escrita no tempo.,

ignorar blocos ao ler e escrever

Existem casos em que podemos querer saltar uma certa quantidade de tamanhos de bloco ao ler ou escrever para um arquivo. Em tais casos, temos que usar as opções

eseek, respectivamente: elas são usadas para saltar os blocos de dados especificados, no início da entrada e no início da saída.,

Um exemplo de tal situação é quando nós queremos fazer backup/restaurar os dados ocultos entre o MBR e a primeira partição no disco, que começa normalmente no sector 2048, para o alinhamento razões. 2047 setores desta área, geralmente, contêm, em um legado MBR configuração de partições, o estágio 1.5 do gestor de arranque grub. Como podemos instruir o dd a clonar apenas esta área, sem incluir o MBR?, Tudo o que precisamos fazer é usar o skip opção:

$ sudo dd if=/dev/sda of=hidden-data-after-mbr count=2047 skip=1

neste caso, instruído dd para copiar 2047 blocos de 512 bytes do ” /dev/sda disco de partida a partir do segundo., Na situação oposta, quando queremos restaurar a clonagem de dados e gravá-lo de volta no mesmo disco zona, queremos usar a opção de buscar, que ignora o número especificado de blocos no início da saída:

$ sudo dd if=hidden-data-after-mbr of=/dev/sda seek=1

neste caso, instruído dd para copiar dados a partir de hidden-data-after-mbr e para escrevê-la no /dev/sda dispositivo de bloco a partir do segundo bloco.

comprimindo os dados lidos por dd

como já dissemos antes, uma das operações mais comuns realizadas com dd é a clonagem de discos., O comando dd produz um clone perfeito de um disco, uma vez que copia dispositivos de bloco byte por byte, então clonando um disco de 160 GB, produz um backup do mesmo tamanho exato. Ao clonar um disco para um arquivo, podemos, No entanto, canalizar os dados lidos por dd, embora utilitários de compressão como gzip, para otimizar o resultado e reduzir o tamanho final do arquivo., Digamos, por exemplo, queremos criar um clone de todo o /dev/sda dispositivo de bloco, podemos escrever:

$ sudo dd if=/dev/sda bs=1M | gzip -c -9 > sda.dd.gz

No exemplo acima nós instruído dd para ler o /dev/sda dispositivo, e nós também alterado o tamanho do bloco 1M, o que pode nos dar um melhor desempenho em tal situação. Nós, em seguida, encaminhado os dados, o processamento adicional com o gzip programa que nós invocada com o -c (abreviatura de --to-stdout) e -9 opção que instrui o programa para usar o máximo de compactação disponíveis., Finalmente, redirecionamos a saída para o ” sda.dd.ficheiro gz. A propósito, Se quiser saber mais sobre redirections pode ler o nosso artigo sobre o assunto.outro caso de uso dd, é a limpeza de um dispositivo. Existem muitas situações em que podemos precisar de realizar tal operação: podemos querer vender um disco, e ter certeza de que seu conteúdo anterior é completamente apagado por razões óbvias de privacidade, ou podemos querer limpar os dados antes de configurar a criptografia., No primeiro caso, seria o suficiente para substituir o disco com zeros:

$ sudo dd if=/dev/zero bs=1M of=/dev/sda

O comando acima instrui o dd para ler o /dev/zero dispositivo que fornece caracteres nulos e gravá-los para os dispositivos até que ele esteja completamente preenchida.

Antes de configurar uma camada de encriptação no nosso sistema, podemos querer encher o disco com dados aleatórios, em vez disso, para tornar os seus sectores que irão conter dados indistinguíveis dos vazios e evitar fugas de meta-dados., Neste caso, queremos que a leitura de dados a partir de /dev/random ou /dev/urandom dispositivos

$ sudo dd if=/dev/urandom bs=1M of=/dev/sda

os comandos irá necessitar de uma quantidade significativa de tempo para terminar, dependendo do tamanho e do tipo de dispositivo de bloco em questão e a fonte de dados aleatórios utilizados, /dev/random a ser mais lenta (bloqueia até que ele não reunir o número suficiente de ruído ambiental), mas voltando superior de qualidade de dados aleatórios de /dev/urandom.,

Converter dados

oconv opções de dd é usado para aplicar conversões de dados. As opções devem ser fornecidas com uma lista separada por vírgulas de símbolos como argumentos. Aqui alguns dos mais usados:

  • noerror – isto faz com que o dd continue mesmo depois de um erro de Leitura ser encontrado;
  • notrunc – esta opção instrui o dd a não truncar o ficheiro de saída;
  • sincronizar-esta opção tem sentido especialmente quando usada em conjunto com o noerror. Instrui o dd a preencher cada bloco de entrada com nulas.,

um caso típico no qual podemos querer executar dd juntamente com a opção conv=sync,noerror, é quando clonamos um disco que contém setores danificados. Em tal caso, o noerror opção irá fazer com que o dd continuar funcionando mesmo se um setor não pode ser lido com sucesso, e o sync opção irá fazer para que a quantidade de dados falha ao ler sua substituído por NULs de modo que o comprimento dos dados é preservada, mesmo se os dados reais são perdidos (desde que não seja possível lê-lo).,

conclusões

neste tutorial aprendemos a usar o comando dd muito poderoso. Vimos alguns dos casos típicos em que o programa é usado, como a clonagem de disco, e aprendemos a conhecer a sua sintaxe e as opções mais importantes que podemos usar para modificar o seu comportamento. Uma vez que dd é um utilitário muito poderoso, ele deve ser usado com extrema atenção: apenas trocando o alvo de entrada e saída, pode-se, em algumas situações, destruir completamente os dados em um disco.

Author: admin

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *