Impossible de trouver une documentation complète sur Internet, alors voilà ma contribution. Comment migrer une machine Debian d’un disque existant, (interne ide) vers un disque externe (usb), en copiant toutes les données, puis en installer tout ce quiva bien pour le boot, puis inverser les disques.
Article mis à jour en Décembre 2012, pour prendre en compte le passage à Grub2.
J’ai du faire cette migration pour cause de secteurs défectueux sur un disque IBM du linutop, puis par la suite migration vers SSD sur Linutop4
– monter le nouveau disque en USB, le brancher, il arrive sur /dev/sdb
– le disque actuel est sur /dev/sda (vérifier tout cela avec la commande fdisk -l qui list les interfaces et disques présents sur la machine)
– utiliser fdisk -l pour visualiser la configuration des partitions du disque d’origine.
Le mieux c’est d’utiliser gparted pour créer la structure de disque propre, c’est à dire une primaire (1), avec le flag en « boot », qui ne commence pas sur le secteur 1, mais un peu plus loin, sinon Grub2 ne pourra pas s’installer sur la MBR. Puis à la fin du disque je fais une partition étendue avec dedans une partition swap.
on obtient :
Device Boot Start End Blocks Id System
/dev/sda1 * 113 7037 55613440 83 Linux
/dev/sda2 7037 7298 2098072 5 Extended
/dev/sda5 7037 7298 2097048 83 Linux
formater la partition principale (ext3)
mkfs.ext3 /dev/sdb1
formater la partition de swap
mkswap /dev/sdb5
creer et monter un point d’entrée pour le nouveau disque
mkdir /nouveau-dd
mount /dev/sdb1 /nouveau-dd/
Recréer les répertoires spéciaux sur le nouveau disque
mkdir /nouveau-dd/dev
mkdir /nouveau-dd/dev/pts
mkdir /nouveau-dd/proc
Mettre tous les services à l’arrêt (mysql, proftpd, samba, apache2 etc etc..)
Copier les fichiers depuis la racine, en ne copiant que le filesystem en cours (donc ne copie pas /nouveau-dd)
cp -ax / /nouveau-dd
suivre l’état de la copie avec une autre session terminal, via df et watch qui affiche la chose toutes les 30 secs.
watch -n 30 df -h
Attention c’est assez lent… il faut compter plusieurs heures en fonction du matériel. Sinon on peut « déplacer » par avance les gros dossiers users et lancer la copie système après pour éviter un arrêt trop long.
ok maintenant faire une installation de MBR et Grub sur le nouveau disque
on éteint, on échange les disques, et c’est parti !
Cette partie est un peu plus complexe avec Grub2, car il y a des UUID de partitions à purger, sinon on ne pourra pas booter.
grub-install –root-directory=/nouveau-dd /dev/sdb
Ensuite sur le nouveau disque il faut editer le fichier de config de Grub2, qui se trouve dans /boot/grub/grub.cfg et rechercher
root=UUID=ab123456…
par root=/dev/sda1
On échange les disques, on reboot. Le premier redémarrage devrait se faire, mais tout de suite on lance un update-grub pour mettre à jour la config, et récréer les UUID correctement.
Bon courage !!