Synchroniser deux machines Linux avec Unison

Un article de LaPageDuJour.

Aller Ă  : Navigation, Rechercher

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.