Synchroniser deux machines Linux avec Unison
Un article de LaPageDuJour.
Sommaire |
[modifier] Introduction
Nous souhaitons partager une information au sein de deux serveurs. Ici, nous allons synchroniser le répertoire utilisateur, nous allons donc tout faire en tant que root. Si vous n'avez pas besoin de l'utilisateur root, utilisez un utilisateur normal, c'est moins risqué.
[modifier] Configuration de l'authentification SSH
[modifier] Création des clés
Vous voulez vous connecter d'une machine à l'autre sans avoir besoin de spécifier un mot de passe. Vous pouvez donc créer une clès SSH sans mot de passe de vérification :
ssh-keygen -t rsa -b 4096
Vous pouvez laisser le chemin par défaut et tapez [Entrée] lorsqu'un mot de passe vous ai demandé.
Ceci va créer une clé publique (qui permettra à la machine distante de vous reconnaître) et une clé privée (qui vous permettra de vous identifier.
[modifier] Envoi de la clé
Vous pouvez maintenant envoyer la clès publique à la machine distante pour qu'elle puisse vous reconnaître quand vous vous connecterez à celle ci.
cat .ssh/id_dsa.pub| ssh root@machine-distante "cat - >>.ssh/authorized_keys"
[modifier] Configuration de Unison
[modifier] Installation
Sur les deux machines, installez unison. Sur Debian, cela sera :
apt-get install unison -y
[modifier] Synchronisation
Faites d'abord un teste de synchronisation :
unison -owner -group ssh://root@machine-distante//home /home
Une fois que vous avez rêglé tous les "conflits", vous pouvez essayer la synchronisation automatique :
unison -auto -owner -group ssh://root@machine-distante//home /home
Si cela fonctionne, c'est bien
[modifier] Automatisation
Une méthode assez simple pour créer un système de sauvegarde continu est d'écrire un fichier où vous mettez vos sauvegarde.
/usr/local/bin/unison :
#!/bin/sh /usr/bin/unison -batch -auto -owner -group ssh://root@machine-distante//home /home
Puis vous allez vous charger d'automatiser son exécution sans que plusieurs processus d'Unison ne tournent en parallèle :
/etc/cron.d/unison :
*/10 * * * * root /sbin/start-stop-daemon --start -p /var/run/unison.pid -m -N 20 \ --exec /bin/sh /usr/local/bin/unison \ >>/var/log/unison.log 2>>/var/log/unison.log
[modifier] Bon Ă savoir
[modifier] Protocole de synchronisation
Le protocole de synchronisation des fichiers est basé sur rsync.
Et le système de listage des fichiers et de recherche des différences (sans ouvrir le contenu des fichiers) est plus performant que celui de rsync. N'ayez donc pas peur de quitter rsync pour unison.
[modifier] Synchronisation de plus d'un serveur
Vous pouvez synchroniser autant de serveurs que vous voulez avec Unison. Cependant, il vaut mieux considérer une configuration en étoile (toutes les machines se synchronisent par rapport à une machine). Cela limite les délais de propagation des modifications et permet que les conflits ne puissent se produire qu'en un endroit.
Cela dépend bien sur de votre configuration. Si vous avez deux sites distants reliés par une connexion à faible débit, il vaut mieux placer un serveurs sur chacun des sites et synchroniser les machines sur chacun des serveurs.
[modifier] drsync
Il existe une alternative qui est un wrapper de rsync, il s'agit de drsync. Cependant, aucune modification n'a été apportée à ce projet depuis 2002 (cela fait donc 6 ans). Le projet est figé et n'évoluera plus.