Clonando discos, fazendo backup e criando imagens com o comando DD
O comando DD é um poderoso utilitário de linha de comando, fazendo parte da ferramenta do Coreutils. É utilizado para copiar, converter arquivos e criar imagens de disco. Com ele podemos criar imagens .ISO, .IMG, criar arquivos de SWAP, fazer backups de discos rígidos e outros.
A estrutura básica do comando é:
dd if={origem} of={destino} [opções]
Onde:
if = É o caminho de origem, de onde será copiado. Por exemplo /dev/sda, /dev/cdrom, etc.
of = É o caminho de destino, onde será gravado a cópia. Por exemplo, arquivo.iso, arquivo.img, /dev/sdb, etc.
[opções] = São parâmetros opcionais para acompanhamento de status ou formatação de saída do comando. Para saber mais parâmetros, é aconselhável dar uma lida no manual com o comando man dd
.
CRIANDO UMA IMAGEM DE DISCO
dd if=/dev/sda of=/home/usuario/ imagem.img bs=1024 status=progress
Onde:
if=/dev/sda = É o caminho de origem, o disco que será copiado.
of=/home/usuario/ = A pasta onde será colocada a imagem.
imagem.img = O arquivo de imagem.
bs=1024 = O tamanho do bloco (o número de bytes que serão copiados de cada vez).
status=progress = Mostra o progresso da cópia.
CLONANDO UM DISCO
dd if=/dev/sda of=/dev/sdb bs=4096 conv=noerror,sync
Onde:
if=/dev/sda = É o disco que será clonado.
of=/dev/sdb = O disco que receberá o clone.
bs=4096 = O Tamanho do bloco (o número de bytes que serão copiados de cada vez).
conv=noerror,sync = É o parâmetro de conversão. noerror permite continuar copiando mesmo se tiver erro e sync utiliza operações de entrada e saída sincronizadas.
Com esse comando, é possível fazer um backup de toda uma unidade para outro disco rígido.
CRIANDO UM ARQUIVO DE SWAP
dd if=/dev/zero of=/mnt/swap/memoria_swap bs=1024 count=1048576 status=progress
Onde:
if=/dev/zero = Um arquivo especial com caracteres null necessários para construir o arquivo.
of=/mnt/swap/memoria_swap = Cria o arquivo memoria_swap dentro da pasta /mnt/swap/ e grava nele o conteúdo de /dev/zero.
bs=1024 = O tamanho do bloco a ser gravado (o número de bytes que serão copiados de cada vez).
count=2097152 = A quantidade total de blocos gravados. Nesse exemplo, temos um arquivo de 2GB.
status=progress = Progresso da criação do arquivo.
CRIAR UM PENDRIVE BOOTÁVEL A PARTIR DE UMA IMAGEM .ISO
dd if=imagem_do_sistema.iso of=/dev/sdb bs=4M status=progress
Onde:
if=imagem_do_sistema.iso = É a imagem do sistema operacional que queremos gravar no pendrive.
of=/dev/sdb = O destino, no caso o pendrive.
bs=4M = O tamanho do bloco (o número de bytes que serão copiados de cada vez).
status=progress = Mostra o progresso da cópia.
CRIANDO A UMA IMAGEM .ISO A PARTIR DE UM CD OU DVD
dd if=/dev/cdrom of=imagem.iso bs=2048 status=progress
Onde:
if=/dev/cdrom = É o dispositivo de CD/DVD.
of=imagem.iso = É o arquivo de imagem a ser criado.
bs=2048 = O tamanho do bloco (o número de bytes que serão copiados de cada vez).
status=progress = Mostra o progresso da cópia.
APAGAR DADOS DE UM DISCO DE FORMA SEGURA
dd if=/dev/zero of=/dev/sda bs=1024
Onde:
if=/dev/zero = Um arquivo especial que preencherá a unidade com caracteres nulos.
of=/dev/sda = O disco que será apagado.
bs=1024 = O tamanho do bloco (o número de bytes que serão copiados de cada vez).
Observe que esse comando pode demorar um pouco, dependendo do tamanho da unidade a ser formatada. Outra opção também é em vez de utilizar if=/dev/zero, utilizar if=/dev/uramdom. Isso garantirá que todos os dados sejam apagados de forma que não possam ser recuperados.