Il nous arrive assez fréquemment de devoir déplacer des configurations entières, d'un serveur physique à un autre, d'une VM à une autre, ou tout simplement de vouloir faire un backup.

L'une des solutions très efficace consiste à entièrement répliquer un environnement via un simple rsync.

Disclaimer : Cette solution est très utile lorsque vous gérer des environnements hétérogène, si vous gérer un ensemble de serveur plus homogène, il y a d'autres solutions, je vous conseille des outils tels que : puppet / chef / vagrant

Comment procéder pour synchroniser les données de deux serveurs linux :

Nous utilisons souvent les services d'OVH (http://www.ovh.ca) qui propose un mode rescue qui permet de monter le disque dur de notre nouvelle machine pour aller synchroniser tout ce qui nous sera utile.

Donc pour ce cas, je viens de prendre un nouveau serveur, installer une debian 6 (via l'outil d'installation), et redémarré en mode rescue.

La première chose à faire est de monter le disque :

rescue:~# mount /dev/sda1 /mnt/newserverroot/

Ensuite, je fais un gros rsync de l'intégralité du serveur source vers le nouveau serveur. J'exclus les dossiers "de fonctionnement", mes backups et le fichier de configuration réseau.

rsync -aAXv [email protected]:/* /mnt/newserverroot/ --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,*backup*,/etc/network/interfaces}

Disclaimer : Attention si vous utiliser cette technique à la consistance des fichiers que vous synchronisez. Par exemple si vous utilisez des bases de données MySQL, la copie du fichier "/var/lib/mysql/ibdata1" par exemple, ne va pas poser de problème, par contre rien ne garanti que le fichier copié est dans un état exploitable. Pour s'en assurer, il convient de stopper tous les services susceptibles d'écrire sur le disque pendant la synchronisation. (Pour réduire le temps de coupure, vous pouvez faire un premier rsync, couper les services et relancer les même rsync, ainsi seuls les fichiers modifiés seront resynchronisés).

Remise en place de Grub

Bien sur lors de ce genre de manipulation, il n'est pas rare de devoir remettre en place grub :

mount /dev/sda1 /mnt

mount --bind /dev /mnt/dev && mount --bind /dev/pts /mnt/dev/pts && mount --bind /proc /mnt/proc && mount --bind /sys /mnt/sys

chroot /mnt

grub-install /dev/sda

grub-install --recheck /dev/sda

update-grub

Enfin, on quitte le chroot :

exit

et on démonte :

umount /mnt/sys && umount /mnt/proc && umount /mnt/dev/pts && umount /mnt/dev && umount /mnt