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>
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 input
e 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.,
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.