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
- Gerar um arquivo com o filesystem anterior
- Gravá-lo no disco novo
- 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"
