Copiar HD via rede usando dd e nc

Publicado por Dorival Junior em 25/08/2010

[ Hits: 19.211 ]

 


Copiar HD via rede usando dd e nc



A algum tempo me deparei com um problema típico: fazer a instalação idêntica de um sistema Linux (na época era um Slackware) em um laboratório com mais de 30 computadores. Como é sabido pelos que atuam na área, a clonagem usando o Ghost nem sempre funciona bem.

A solução viável então seria a utilização do comando "dd", porém ele sozinho ainda não seria viável. Imagine tirar mais de 30 HDs um a um das máquinas destino e colocá-los na máquina origem, dar o boot e executar o DD para copiar... Seria um trabalho muito cansativo e sinceramente não tão eficiente.

A solução que utilizei foi a seguinte:

1) Instalar o sistema e configurá-lo em apenas uma máquina (denominada origem).

2) Na máquina origem, após instalado e configurado o sistema, dar boot com um LiveCD Debian (para que o sistema não inicie do HD da própria máquina).

3) Na máquina destino também dar boot com um LiveCD Debian.

Obs.: Neste momento ambas as máquinas (origem e destino) inicializaram utilizando um Debian LiveCD (sistema independente do HD das máquinas).

4) Conecte uma máquina à outra utilizando um cabo CROSSOVER. É imprescindível esta forma de conexão, pois a possibilidade colisão pode-se dizer que é nula, uma vez que o tráfego será direto de uma placa a outra, sem intermediários e direção oposta de dados trafegando. A utilização de switch não foi satisfatória(obtive erro de cópia em 25% das máquinas).

5) No destino execute os seguintes comandos:

sudo su
# ifconfig eth0 10.0.0.2 netmask 255.255.255.0
# nc -l -p 9000 | dd of=/dev/hda


Obs.: Após o último comando, o prompt deverá ficar piscando sem nenhuma informação, aguardando o envio dos dados. Mantenha esta máquina inativa, até o término completo da operação. Só será exibida alguma mensagem ao término do processamento. A única característica de presença de funcionamento é o LED de indicação de leitura/escrita do HD funcionando freneticamente.

6) Na origem execute os seguintes comandos:

sudo su
# ifconfig eth0 10.0.0.1 netmask 255.255.255.0
# dd if=/dev/hda | nc 10.0.0.2 9000


Assim como na máquina destino, após o último comando, o prompt deverá ficar piscando sem nenhuma informação. Observe o LED de indicação de leitura/escrita do HD em funcionamento.

7) Após o término da operação, será exibido uma mensagem do comando dd indicando a quantidade de dados copiados e o prompt normal aparecerá novamente na tela de ambas as máquinas (origem e destino).

Neste momento a cópia está completa, bastando dar o boot normal na máquina destino e testar o sistema copiado.

Como no meu caso eram várias máquinas destino, o que fiz em seguida foi:

a) selecionar a nova máquina de destino
b) executar os passos 3, 4, 5 e 6

Esta solução possibilita mais agilidade e eficiência no procedimento uma vez que não é necessário abrir nenhuma máquina, sendo apenas necessário o manuseio de cabo, ligando-o às máquinas desejadas (origem e destino).

Finalizo dizendo que nada é perfeito. Fazendo a cópia desta forma, obtive erro em 2% das máquinas, o que melhorou muito em comparação ao uso do ghost.

Descrição dos comandos utilizados nos passos 5 e 6:
  • sudo su -> mudança para usuário root no liveCD
  • ifconfig -> configuração da placa de rede (no exemplo deve estar na mesma subrede)
  • dd -> comando para cópia idêntica (bit a bit) de um arquivo ou partição. No caso utilizei para a cópia do HD inteiro.
  • nc -> (netcat) comando que realiza leitura/escrita através de conexões de rede.

A última linha nos passos 5 e 6, é uma combinação dos comandos "dd" e "nc", que fazem a copia de origem e destino, considerando que ambos estão em pontos de rede diferentes.

Obrigado, até a próxima.

Outras dicas deste autor

IPtables - Bloqueando o MSN

Bloqueio de Ultrasurf usando apenas Iptables

Utilização de SSH com par de chaves criptográficas

Solução para alteração de senha pelo próprio usuário no Samba

Instalação do Hamachi no Linux em 3 passos

Leitura recomendada

SSD e "elevator" - dica de desempenho para netbooks e virtual machines

Como copiar e colar em um terminal sem interface gráfica no Linux (TTY)

Mint Menu no Ubuntu 10.04

Mudar senha no modo de recuperação

Estação meteorológica com Linux

  

Comentários
[1] Comentário enviado por lucasrca em 25/08/2010 - 20:24h

Uma dica: pra ver o andamento do dd, faça o seguinte:

1) abra um outro terminal

2) digite: watch -n 60 --kill -USR1 $(pgrep dd)

OBS: signal USR1 não vai matar o processo (pausa), e o 'watch' a cada 60 segundos vai mostrar a saída.

Caso não haja o pgrep (acontece...), dá um ps e pega o id do processo dd rodando e substitui pela linha $(pgrep dd)

Espero ter ajudado.



[2] Comentário enviado por dorivaljunior em 25/08/2010 - 22:23h

Ótimo cara, gostei muito da dica, vou incorporá-la no procedimento, pois o usuário fica meio "no ar" a respeito do andamento! Valeu até mais!

[3] Comentário enviado por rogeriojlle em 26/08/2010 - 13:35h

cara isso dá infinitas possibilidades, minha sugestão é de mesclar isso com o link abaixo: (criar da primeira vez uma imagem compactada da origem)

http://www.vivaolinux.com.br/dica/Clonando-particoes-HDs-com-o-dd

[4] Comentário enviado por dorivaljunior em 26/08/2010 - 13:47h

Olá amigo, realmente dá muitas possibilidades! Pode-se pegar alguma coisa do link que você mencionou ! Ótima contribuição, valeu!

[5] Comentário enviado por bitetti em 07/01/2011 - 08:40h

Muito bom, e foi bem útil. Eu já estava sem esperanças de clonar HDs por rede.

Instalei o MobaSSH_Server numa maquina com ruwindows e comecei a clonar o servidor da empresa ^^

[6] Comentário enviado por alerocha19 em 03/10/2012 - 20:28h

Pessoal,

Passaram para mim o programa: Clonezilla que também faz clonagem de hd inteiro. Show de bola, rápido, acabou com o Partimage.

O partimage para clonar um HD com uma partição vale a pena, mas com duas pelo amor de Deus. Já tentamos várias vezes, além de demorar horas e horas para criar a imagem, o partimage não conseguiu restaurar a imagem de um computador com 2 ou mais partições.

Agora, o Clonezilla, levou só 10 minutos para fazer a imagem e restaurou perfeitamente em cerca de 10 minutos.

É show de bola.

Eu usei uma máquina com ubuntu como servidor, e escolhei a opção de samba no Clonezilla, e um cabo crossover para ligar as duas máquinas.

Passos:

1) Instalei o samba na máquina ubuntu;
2) Adicionei um usuario no samba: sudo smbpasswd -a nome_do_usario_já_existente_no_ubuntu
depois ativei o usuário: sudo smbpasswd -e usuario_já_adicionado
3) Escolhi a opção samba no Clonezilla

Só alegria!


Referências de sites que busquei:
http://www.qfoi.com.br/index.php/artigos/44-clonezilla-como-clonar-discos-e-particoes
http://www.oficinadanet.com.br/artigo/450/configurando_o_samba_no_ubuntu
http://under-linux.org/f100/smbadduser-e-smbpasswd-54899/


[7] Comentário enviado por dorivaljunior em 04/10/2012 - 08:33h

Olá alerocha19, muito bom, podemos ver que as possibilidades são muitas! Vou testar a sua solução na próxima oportunidade. Valeu a contribuição!!!!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts