HD novo

  • Migrando seus dados pra um disco novo

    Essa dúvida surgiu no grupo de Ubuntu do Telegram (https://t.me/ulboficial) e ao invés de responder lá eu preferi escrever um artigo sobre isso.

    O método que uso, principalmente em laptops novos, é basicamente o mesmo desde... acho que aprendi a fazer isso por volta dos anos 2000.  Era um capítulo do venerado livro "Unix Power Tools", a bíblia dos scripts pra sysadmins.

    Livro Unix Power Tools
    Livro Unix Power Tools

    Eu primeiramente insiro o HD novo e particiono.  Não vou usar o exemplo de LVM, que é mais simples, mas o mais cabeludo que é quando se cria todas as partições que vai usar.  Então digamos que eu adicione um novo HD que aparecerá para mim como /dev/sdb (pra facilitar).  Supondo que o particionamento seja o seguinte:

    • /dev/sdb1: /boot
    • /dev/sdb5: /
    • /dev/sdb6: /home

    O passo seguinte, após formatar as partições no formato desejado (eu geralmente uso XFS), é montar essas partições em um local onde possa copiar os dados.  Eu normalmente uso o /mnt pra essa finalidade.

    root@goosfraba ~# mount /dev/sdb5 /mnt
    root@goosfraba ~# mount /dev/sdb1 /mnt/boot
    root@goosfraba ~# mount /dev/sdb6 /mnt/home
    

    Uma vez com tudo montado é fazer cópia de um lado pro outro evitando copiar o /mnt, que já está em uso com o disco novo, e diretórios como /proc, /dev ou /sys, que são criados durante o boot.  E pra isso eu uso o comando tar.

    root@goosfraba ~# tar cvf - --exclude=./proc --exclude=./sys --exclude=./dev --exclude=./mnt -C / . | tar xf -C /mnt

    Com isso o disco já está todo pronto em /mnt.  Resta corrigir o boot.  Pra isso eu uso chroot pra acessar o disco novo a partir de /mnt e montando tanto /proc quanto /dev pro grub localizar o disco corretamente.

    root@goosfraba ~# mkdir /mnt/{proc, dev}
    root@goosfraba ~# mount --bind /proc /mnt/proc
    root@goosfraba ~# mount --bind /dev /mnt/dev
    root@goosfraba ~# chroot /mnt
    root@chroot ~$ grub-install /dev/sdb 
    

    Assumindo que vá remover o primeiro disco, /dev/sda, e sdb será o novo sda, nada mais é preciso.  Agora caso vá ficar com sdb como disco principal, então é preciso modificar as entradas do /etc/fstab pra conter os dados corretos do novo disco.

    Ao terminar e antes de rebootar, tenha com você o disco de instalação em mãos pra utilizar o modo de recuperação em caso de algum problema (e não precisar ficar colocando o disco antigo).