sexta-feira, 7 de fevereiro de 2014

Copiando e clonando dados no linux com "dd"

Uma excelente ferramenta no linux (e que já é nativa do sistema) para copiar dados ou clona-los é o comando dd. De simples cópias de arquivos à clonagem exata de HDs, tudo fica simples e preciso com uma unica linha de comando:

Por exemplo, para copiar exatamente um arquivo bit a bit:
dd if=/home/usuario/teste.sh of=/home/usuario/copiateste.sh
Sempre começamos com o "dd" seguido de "if=origemdacopia" e depois de um espaço "of=destinodacopia".
Mas isso não é limitado a copia de arquivos simples, podemos por exemplo gravar uma imagem de sistema em um pendrive:
sudo dd if=linux.img of=/dev/sdd bs=1M
Ou ainda clonar completamente um HD:
sudo dd if=/dev/sda of=/dev/sdb
Observação: No caso da clonagem de HD o disco destino geralmente tem de ter um tamanho igual ou maior ao disco de origem.

 O unico problema é que como os arquivos geralmente são grandes, leva-se vários minutos ou mesmo horas (no caso dos HDs gigantes). Mas até o dd terminar o processo ou este ser interrompido por eventuais erros, não aparece nenhuma informação sobre o progresso da tarefa.

Uma solução interessante é baixar um script que além de clonar com o dd, também exibe informações sobre o progresso e tempo da tarefa.

Para isso, primeiro baixe o script com o comando:
wget http://shellscripts.org/dl/projects/d/ddprogress/version_2/dd.sh
Depois de permissão para execução a ele:
 chmod +x dd.sh
Então é só usar o script no lugar do dd, exemplo
sudo ./dd.sh if=/dev/sda of=/dev/sdb
Essas ferramentas são uma mão na roda para a manutenção.

Links com mais informações e ferramentes para o dd:
http://sergioprado.org/monitorando-o-progresso-comando-dd/
http://iniciolinux.blogspot.com.br/2011/03/usando-o-comando-dd.html
http://www.douglaspasqua.com/2009/12/17/criando-uma-imagem-do-seu-hd-usando-dd/
http://www.vivaolinux.com.br/dica/Clone-seu-HD-compactando-e-visualizando-a-copia-em-tempo-real-com-o-comando-dd