sábado, 13 de setembro de 2008

Clonando HD com Linux

Serei breve, mas espero que ajude em situações chatas de clonagem de HD.
No windows tem-se Ghost, tem também para Linux e todo esse blábláblá..
Mas vamos ao que interessa, se você precisa fazer poucas clonagens e não está afim de ler enormes tutoriais sobre ferramentas mais complicadas, ou se só possui um terminal, pois bem, vamos de Shell mesmo..

Fiz isso usando Ubuntu 8.04, para copiar uma instalação dele para outras maquinas, diferentes versões e distribuições possivelmente se comporte de forma pouco diferente.

Primeiro, ligue os dois HDs (cuidado para deixar Master / Slave se usando ATA) a ser instalado e dê boot pelo live cd do Ubuntu. Use o particionador de sua preferência, mas creio que usando o Ubuntu, irá usar o GParted :-)
Deixe particionado seguindo as estruturas do HD que vai ser copiado. Ou seja, se no HD "original" tiver uma partição primária ext3, uma extendida composta por uma lógica ext3 e uma swap; deixe seu HD "novo" configurado da mesma maneira para facilitar a cópia, mas creio que se quiser usar ext2, reserFS na nova não terá problemas, apenas têm que ficar atento nos próximos passos.
Coloque a flag "boot" na partição onde ficará o SO (e deve ser partição primária).

Uma observação, os HDs não precisam ser do mesmo tamanho! Só use o bom senso, se tiver mais dados no original do que caberia no novo não perca tempo tentando copiar né =P

Feito o particionamento, monte as partições do HD de origem e as partições equivalentes no HD destino (não monte a SWAP xD). Pode montar usando o navegador de arquivos, ou, caso necessario pelo terminal:
mount -t [tipo] [origem] [ponto de montagem]
onde [tipo] provavelmente seja ext3,
[origem] algo como
/dev/sda1/
[ponto de montagem] crie alguma pasta e coloque seu caminho aqui

Feita a montagem das partições, vamos a cópia:
Abra um terminal como superusuario, "sudo su",
vamos fazer uma cópia que mantenha as permissões e dados dos arquivos do HD original, para isso um "cp -a" resolve
cp -a [origem]/* [destino]
exemplo:
rm -rf /media/disk-1/*
cp -a /media/disk/* /media/disk-1/
neste exemplo, o comando rm foi feito para certificar de limpar a partição destino antes da copia, após isso serão copiados todos os dados da partição montada em /media/disk e gravados na partição montada /media/disk-1.
Faça a cópia de outras partições se necessário.

Reinicie a maquina com apenas o HD destino, bootando pelo live cd (cuidado com os jampers de master slave se não usar Sata!).
Monte a partição raiz do HD destino, e edite o fstab, use o Vim ou o Gedit :)
ex: vim /media/disk/etc/fstab

Troque /media/disk pelo local onde foi montada a partição =P
Edite de acordo com seu particionamento atual, deixando os locais como "/dev/sda1" por exemplo, ao invés do código de endereço do HD, pois já que não se trata do mesmo HD, usar este endereço causará falha. Caso necessario, entre como superusuário num terminal e use fdisk -l, que lhe listará as partições do HD.

Pronto, a clonagem está quase terminada, falta apenas reinstalar o gerenciador de boot grub, portanto ainda não desligue a máquina e nem desmonte a partição, pois do jeito que está, quando tentar bootar por este HD o grub vai apresentar falha.

mount /dev /media/disk/dev --bind
mount /sys /media/disk/sys --bind
mount /proc /media/disk/proc --bind
chroot /media/disk/
grep -v rootfs /proc/mounts > /etc/mtab

grub-install /dev/sda
##Clonagem completa e bootavel##

obs: troque /media/disk pelo ponto de montagem (só para lembrar né)
troque sda por outro dispositivo caso necessario, talvez sdb, sdc, veja no fdisk -l para garantir.

Tome muito cuidado com clonagens para não destruir os dados do HD original. Apesar de ser um procedimento seguro, por falta de atenção pode-se perder os dados, aconselho um backup do que realmente for importante.
Este modo de cópia evita ter que refazer a instalação do sistema todo de novo, além de configurações. O tempo varia de acordo com a quantia de dados a ser transrida, obvio né? xD
Testando, levei cerca de meia hora para copiar os dados dos HDs e mais alguns minutos para instalar o grub [considere que ficar reiniciando por live cd leva mais tempo =/]
Considero este apenas um procedimento alternativo ao uso do comando dd
dd if=[origem] of=[destino]
pois o comando dd realiza cópia bit a bit, copiando inclusive bits que vazios, clonando até a parte não usada do HD, o que leva muuuito mais tempo que um simples cp.