Copiar HD via rede usando dd e nc

Publicado por Dorival Junior em 25/08/2010

[ Hits: 22.966 ]

 


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

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

IPtables - Bloqueando o MSN

Instalação do Hamachi no Linux em 3 passos

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

Bloqueio de Ultrasurf usando apenas Iptables

Leitura recomendada

Forçar resolução de tela no GNU/Linux

Imprimindo documentos em PDF bloqueado

VirtualBox - Reduzindo tamanho de discos rígidos virtuais

Horários diferentes? A culpa é do "UTC"

Instalando o Google Earth no Debian Etch

  

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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts