Replique seu sistema

From LinuxWiki

Uma dúvida bem comum acontece quando atualizamos o hd de uma estação ou servidor e precisamos replicar o sistema que já estava instalado no disco antigo para o novo. Este processo é na verdade bem simples, e consiste em

  1. Gerar um arquivo com o filesystem anterior
  2. Gravá-lo no disco novo
  3. Reinstalar o bootloader no novo disco


Conteúdo

Procedimento

Vamos supor que temos dois hds instalados, sendo /dev/hda o disco antigo e /dev/hdc o disco novo. O ideal é que este processo seja feito a partir de um live cd, para que não sejam copiados arquivos temporários e também garantir a integridade dos arquivos copiados.

Crie diretórios para montar os discos

mkdir /mnt/velho /mnt/novo

Monte todas as partições antigas e novas nos pontos correspondentes

Supondo duas partições no disco original, /dev/hda1 (/) e /dev/hda2 (/home), deve-se executar

mount /dev/hda1 /mnt/velho
mount /dev/hda2 /mnt/velho/home

Os mesmos passos devem ser seguidos no novo disco, supondo que este terá três partições, /dev/hdc1 (/), /dev/hdc2 (/home) e /dev/hdc3 (/var), faríamos

mount /dev/hdc1 /mnt/novo

É necessário criar os diretórios para os pontos de montagem adicionais, neste caso o /home e o /var

mkdir /mnt/novo/home /mnt/novo/var

E montar as partições

mount /dev/hdc2 /mnt/novo/home
mount /dev/hdc3 /mnt/novo/var

Copie os arquivos

Com os discos devidamente montados podemos proceder para a cópia dos arquivos. Para isso contaremos com a ajuda do tar

tar cp -C /mnt/velho . | tar xp -C /mnt/novo

Reinstale o bootloader

Agora, como último passo, devemos reinstalar o boot loader do disco original no disco novo, executando o instalador em ambiente chroot

Para o lilo, utilizamos

chroot /mnt/novo lilo -b /dev/hdc

A opção -b especifica que o boot sector deve ser gravado em /dev/hdc (provavelmente este disco será o /dev/hda no próximo boot). Assim não é necessário editar o lilo.conf

Com o grub, o comando fica

chroot /mnt/novo grub

E no console do grub

device (hd0) /dev/hdc
root (hd0,0)
setup (hd0)
quit

O primeiro comando especifica que (hd0) é o device /dev/hdc (no nosso exemplo, o disco novo), em seguida especificamos o root device (no caso, hdc1) e instalamos o grub nele

Após a instalação do bootloader, podemos desmontar todos as partições utilizadas e desligar o sistema

umount /dev/hda2
umount /dev/hda1
umount /dev/hdc3
umount /dev/hdc2
umount /dev/hdc1

Perceba que o umount foi feito na ordem inversa, pois como o /dev/hdc2 está montado num diretório de /dev/hdc1, não seria possível desmontar o /dev/hdc1 antes dele.

Variações

Backup do sistema todo num arquivo tar

Da mesma forma que utilizamos o tar num pipe para copiar os arquivos, é possível utilizá-lo para criar um backup completo do sistema, para isso, o comando seria

tar cfzp -C /mnt/velho backup.tgz . 

Ou, para um arquivo bzip2

tar cfjp -C /mnt/velho backup.tbz2 .

Replicação do sistema num micro em produção

É possível, apesar de não recomendado, efetuar o backup com o sistema original em produção, para isso, utilizamos a opção bind do comando mount.

mount -o bind / /mnt/velho
mount -o bind /home /mnt/velho/home

Utilizando o bind, evitamos que sistemas de arquivos temporários como o /dev sejam copiados para o disco novo, porém, não é possível garantir que arquivos alterados no momento da cópia serão copiados corretamente.

O restante do procedimento é o mesmo, ou seja, montar o hd novo em /mnt/novo e efetuar a cópia com o tar.

Mantendo as permissões do SELinux

O tar não suporta a gravação de permissões especiais em seus arquivos, assim, deve ser utilizado o utilitário star. O mesmo comando para cópia, com o star, seria

star -xattr -H=exustar -c -C /mnt/velho . | star -xattr -x -C /mnt/novo

Para backup do sistema em um arquivo, o comando fica

star -xattr -H=exustar -c -z -f backup.tgz -C /mnt/velho .

Existe um guia especial sobre permissões SELinux na documentação do Redhat Enterprise Linux, que pode ser encontrado em http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/selinux-guide/rhlcommon-chapter-0017.html, em especial a seção 5.1.4, "Make Backups or Archives That Retain Security Contexts"

Ferramentas pessoais