Clonar um dispositivo de armazenamento pode garantir que você leve, de um local a outro, uma cópia exata de um drive importante para você.
Se o objetivo é criar uma cópia de segurança (ou backup), pode ser interessante acrescentar o uso de compactação, para obter uma melhor optimização do espaço disponível.
Neste post, vou mostrar como realizar o procedimento, de maneira ágil, com o uso do comando dd, no Linux.
Se você clicar na tag dd, vai ver uma série de outros posts, relatando vários outros usos possíveis para o comando — o que comprova o fato de que é uma daquelas ferramentas exemplo de flexibilidade do universo UNIX/Linux.
Para realizar um teste, você pode usar 2 flash drives (ou pendrives), com a mesma capacidade — simultaneamente conectados, cada qual a uma entrada USB.
O comando dd irá apagar todo o conteúdo do drive ou arquivo de destino. Considere-se avisado.
O comando dd tem basicamente 2 parâmetros importantes, aqui:
- if — input file ou nome do arquivo original.
- of — output file ou nome do arquivo de destino.
Sabendo, disto é fácil fornecer o drive original e o drive de destino (ou “futuro” clone) na linha de comando.
Se você tem um drive em /dev/sdc e deseja clonar o seu conteúdo em /dev/sdd, o comando vai ficar assim:
dd if=/dev/sdc of=/dev/sdd bs=64K conv=noerror,sync
Segue a explicação para os outros 2 parâmetros usados:
bs=64K
— estabelece o tamanho de cada bloco e dados em 64 Kb. Você pode usar outros valores, mais altos e sempre múltiplos de 8, que podem dar mais agilidade ao procedimento — sem alterar a qualidade do resultado final.conv=noerror,sync
— o parâmetronoerror
não permite que o dd pare, em função de erros de leitura — ou seja, mesmo que o drive original contenha erros, ele será clonado. O parâmetrosync
adiciona ao drive de destino blocos com zeros, correspondentes ao espaço que continha erros no dispositivo original. Desta forma, ele mantém o offset de dados em plena sincronia.
Como clonar uma partição
Vocẽ pode clonar uma única partição do sistema em outro drive, indicando exatamente a localização da origem e do destino:
dd if=/dev/sdd1 of=/dev/sdd2 bs=64K conv=noerror,sync
Como enviar um clone via SSH
Neste caso, vale a pena acrescentar um método de compactação ao arquivo clone, antes de enviá-lo pela rede:
dd if=/dev/sdc0 conv=sync,noerror bs=128K | gzip -c | ssh username@servidor.com.br dd of=arquivoclone.gz
Como obter feedback do progresso do dd
Para obter um retorno visual do andamento do processo, use a opção ‘status’, da seguinte forma:
dd if=/dev/sdd1 of=/dev/sdd2 bs=64K conv=noerror,sync status=progress
[blog_subscription_form]
One reply on “Como clonar um disco no Linux”
Boa tarde, teria alguma maneira de clonar apenas a parte do disco que contem dados ao inves do disco inteiro? exemplo:
HD 1 TB (tamanho real) -> 200GB (sistema)
Teria como clonar somente os 200GB? sendo que esses 200GB estão dentro de uma partição de 1TB. Usando o DD?