O comando dd é uma ferramenta de linha de comando presente, nativamente, nos sistemas Linux. Seu objetivo principal é converter e copiar arquivos. Por outro lado, existem diversas opções que dão outras possibilidades interessantes para esse comando; bem como: criar imagens de discos rígidos (HDD), arquivos de swap, recuperação de dados, formatação de mídias de armazenamento e outras.
Comando dd
Ferramenta GNU que faz parte do pacote coreutils, o comando dd (“data duplicator”) é usado para copiar e converter dados. Entretanto, pode ser usado para outras situações; por isso é considerado um poderoso utilitário de baixo nível do Linux. Entre as diversas possibilidades, destaco:
Muito além do kernel – conheça todos os elementos que formam a estrutura do sistema Linux
• Fazer backup e restauração de todo o disco rígido ou partição;
• Fazer backup da MBR (Master Boot Record);
• Copiar e converter formato de fita magnética, entre outros formatos como: ASCII e EBCDIC. Também pode converter letras minúsculas para maiúsculas (e vice-versa), por exemplo;
• Criar arquivos para fazer imagens de inicialização. Pendrive bootável, por exemplo;
• Criar arquivos com tamanho pré fixado;
• Recuperar dados de um disco defeituoso para uma imagem ou outra mídia de armazenamento;
• Fazer alguns testes simples sobre a velocidade do disco ou CPU;
Por ser uma ferramenta muito poderosa, somente o usuário root (ou sudo) pode executar este comando. Além disso, é preciso ter muito cuidado ao usá-lo; pois com um uso inapropriado poderá causar perda de dados importantes. Assim, em outras casos, a ferramenta dd, poderá ser considerada como “destruidora de dados” #ficadica
Estrutura
Onde, ‘if’ significa o arquivo de entrada e o ‘of’ o arquivo de saída.
Um exemplo de uso seria o seguinte comando:
Onde, é feita uma cópia do conteúdo da partição /dev/sda para a partição /dev/sdb.
Contudo, o foco desse artigo é mostrar as diversas maneiras para se usar o comando dd!
20 comandos Linux que você talvez não conheça
Saiba como aprender 20 comandos Linux em apenas alguns minutos
Mas, antes…
A ferramenta fdisk é de suma importância para saber como está montada as partições do disco que possivelmente você irá manipular com o comando dd. Para exibir informações de disco e suas partições, como root (ou sudo), execute:
Algo similar a isso, você verá:
Nesse exemplo, o disco está disponível no dispositivo /dev/sda. E diversas partições, nesse disco, estão montadas; bem como: sda1, sda2 e consecutivamente. Caso tenha mais discos, ou pendrive, na máquina, será exibido outros dispositivos; tais como: /dev/sdb /dev/sdf.
Os comandos mostrados a seguir são muito poderosos e manipulam dados importantes. Portanto, caso não tenha certeza do que está fazendo, recomendo usar um ambiente virtual (Virtualbox, por exemplo) para testar cada comando. Caso contrário, você poderá perder todos os seus dados. E, sempre realize cópias de segurança !! 😉
1- Backup de todo o disco rígido para uma outra unidade
Onde,
– ‘if=/dev/sda‘ representa o disco de origem a ser copiado;
– ‘of=/dev/sdb‘ representa o disco de destino que vai receber a cópia;
– ‘bs=4096’ representa o tamanho do bloco (número de bytes a serem lidos/gravados de cada vez).
– conv=noerror,sync representa o parâmetro de conversão. A opção ‘noerror’ permite que a ferramenta continue copiando os dados mesmo que encontre erros. E a opção ‘sync’ permite usar operações de Entrada/Saída sincronizadas.
O comando acima irá copiar todos os dados do disco /dev/sda para /dev/sdb. Como o comando dd é de baixo nível, disponível como utilitário do kernel Linux, ele “não sabe” nada sobre o sistema de arquivos ou partições; ele “apenas copiará tudo” de /dev/sda para /dev/sdb. Assim, esse processo é conhecido como clonagem de disco, pois preserva os mesmos dados e partições do disco de origem.
2- Criação de uma imagem do disco
Onde,
– ‘if=/dev/sda‘ representa o disco de origem a ser copiado;
– ‘of=/tmp/sda disk.img‘ representa o aquivo de imagem, salvo na pasta /tmp, que receberá a cópia do disco de origem.
Outra opção interessante, é fazer backup de um disco diretamente para um arquivo de imagem. É vantajoso caso não tenha outro disco disponível, de igual tamanho, para receber a cópia dos dados (como no exemplo anterior). Além disso, é mais rápido do que copiar os dados diretamente para o outro disco. Inclusive, tendo a imagem do disco, a restauração dos dados fica muito mais fácil.
Conheça algumas maneiras para restaurar seu sistema Linux em caso de falhas
Outra forma, é comprimir os dados na imagem:
Para restaurar esses dados, contidos na imagem, execute:
Já para dados comprimidos, execute:
3- Fazer backup da MBR (Master Boot Record)
A MBR é o setor de inicialização que guarda o carregador de inicialização do computador, por exemplo o GRUB. Se a MBR corromper, não será possível inicializar o Linux. A partição MBR contém 512 bytes de informação da estrutura organizacional do disco:
– 446 bytes -> Bootstrap;
– 64 bytes -> Partiont Table e;
– 2 bytes -> Signature
Para fazer o backup, execute no terminal o comando (como root):
Onde,
– if=/dev/sda representa o disco de origem;
– of=/tmp/backup-sda.mbr representa a pasta de destino e arquivo de destino;
– bs=512 e count=1 representam o tamanho do disco de origem a ser copiado (512 Bytes – tamanho da MBR) e quantidade de blocos a ser copiado.
Finalizando, copie o arquivo /tmp/backup-sda.mbr para um pendrive; por exemplo 😉
Por fim, para restaurar a MBR, execute:
4- Criar pendrive bootável
Uma maneira alternativa para criação de pendrive bootavel, é usar o dd. Basicamente, ele converte e copia um arquivo. Nesse caso, ele fará isso com uma imagem (.iso ou .img) para dentro do pendrive. Basta executar o comando:
Dê preferência por um pendrive vazio ou sem dados importantes, pois esse processo irá apagar todo o conteúdo do dispositivo!
Onde,
– if=/home/ricardo/imagem_iso_ou_img representa o caminho completo do arquivo de imagem ISO ou IMG;
– of=/dev/sdb representa o dispositivo de destino, no caso o pendrive;
– bs=4M representa o tamanho de cada bloco a ser copiado (4 Mbytes).
O comando dd converterá a imagem ISO, da sua distribuição Linux, para o formato de disco; salvando seus dados no dispositivo de destino, no caso o pendrive.
5- Criar arquivos com tamanho pré fixado
Por exemplo, para criar um arquivo de tamanho, fixo desejado, de 10MB (por exemplo), execute:
Onde,
– if=/dev/zero representa o dispositivo de valores nulos;
– of=arquivo representa o arquivo de destino a ser gerado;
– bs=10485760 representa o tamanho do bloco a ser criado. No caso ‘10485760’ bytes representam 10 MB (10*1024*1024).
– count=1 representa o número de iterações a serem realizadas. No caso uma iteração com tamanho de bloco ‘10485760’ = 10 MB.
Assim, este comando cria um arquivo “vazio” de 10MB. Isso é útil para criar arquivos de qualquer tamanho, usados para testes de desempenho de leitura/escrita em disco; por exemplo.
6- Apagar dados definitivamente de um disco rígido
Você pode precisar limpar o disco rígido para eliminar erros de partição, instalações mal sucedidas ou por privacidade. Existem duas opções possíveis com o comando dd.
Primeira, preencher os setores do disco com valores zeros (pode demorar um pouco, já que é feito byte a byte de valor 0):
Ou, para garantir que nenhum dado poderá ser recuperado, você deve preencher os setores do disco com dados aleatórios ao invés de zeros (isso vai levar ainda mais do que o primeiro exemplo):
7- Recuperar dados de um disco defeituoso para uma imagem ou outra mídia de armazenamento
No caso de uma falha grave no hardware do HDD, recomendo você fazer uma cópia de todos os dados possíveis (que ainda estão íntegros) para uma outra unidade de armazenamento (HDD externo ou pendrive). A ferramenta dd pode fazer isso sem complicações – ela efetua cópias de baixo nível, copiando byte a byte a informação, da origem ao destino.
Para suprimir os erros ignoráveis no momento da transferência dos dados, execute:
Em vez de copiar para outro disco, diretamente, você pode gerar um arquivo de imagem. Basta executar:
Por fim, caso esteja com problemas no seu disco, recomendo que veja aqui como tentar solucionar problemas encontrados em um disco rígido usando o Linux.
8- Converter letras minúsculas para maiúsculas ou vice-versa
Com o comando dd você pode converter todo o conteúdo de texto de determinado arquivo de minúsculas para maiúsculas ou vice-versa.
Minúsculas para maiúsculas:
Maiúsculas para minúsculas para m:
8- Teste simples de sobrecarga de memória e CPU
O comando acima irá gerar, virtualmente, blocos com valores zeros (if=/dev/zero) com tamanho de 500 MB (bs=500M) durante uma iteração (repetição) (count=1); sem persistir os dados (of=/dev/null).
Isso é útil para medir apenas a memória e a velocidade do barramento. Além disso, de certo modo, implicitamente, realizará “benchmarks” para saber o quão rápido seu sistema operacional pode alocar grandes pedaços de memória. No entanto, atente-se para o tamanho usado; pois seu computador poderá travar se não tiver 500 MB de RAM disponível.
9- Adicionar uma área de swap sem precisar criar uma nova partição
No Linux é comum usar uma partição de um disco rígido para ‘swap’. No entanto, desde do kernel 2.6, os arquivos de swap são tão rápidos quanto as partições de swap. Assim, você precisa pode usar o comando dd para criar o arquivo de swap. E, posteriormente, usar a ferramenta mkswap para configurar uma nova área de swap no Linux.
Sistema de arquivos Btrfs não suporta arquivos de swap.
O comando anterior irá criar um arquivo de swap com tamanho de 512MB.
Onde,
– if=/dev/zero representa os dados de origem (vazios) para criar o arquivo de swap.
– of=/swap2 representa o arquivo de swap.
– bs=1024 representa o tamanho dos blocos a serem criados.
– count=524288 representa o número de iterações que o bloco de tamanho 1024 será realizado (1024 * 524288 = 512MB).
Os passos seguintes servem para continuar o processo de criação da área de swap:
Aplicar permissões de root
Tornar arquivo de swap
Ativar área de swap
Por fim, atualizar o fstab para evitar que, quando o computador for reiniciado, as configurações não sejam perdidas:
Adicionar no final do arquivo:
Mais informações AQUI
Muito bom! Obrigado
Boas dicas. Obrigado.