Synchronisation de fichiers bidirectionnelle avec Unison

Logo Unison

Lorsque vous gérez plusieurs serveurs ou même plusieurs postes de travail qui doivent travailler avec des fichiers communs, deux choix s’offrent à vous : centraliser tous les fichiers à un emplacement unique ou fournir les mêmes fichiers à tous les postes. Pour tout un tas de raisons c’est la deuxième solutions que je mets en place le plus souvent, notamment en raison de sa grande tolérance aux pannes.

Logo Unison

S’il existe un grand nombre d’outils, quel que soit le système d’exploitation, qui permettent de transférer des fichiers d’une machine à l’autre à sens unique, il y en a beaucoup moins qui permettent de faire ces transferts dans les deux sens. Aujourd’hui j’ai décidé de vous parler d’un utilitaire « petit mais costaud » qui se lance en ligne de commande (ou même en mode graphique) sur vos machines Linux ou bien dans une fenêtre GTK sur vos machines Windows ou Mac OS, j’ai nommé Unison.

separateur

A quoi sert Unison ?

Comme vous l’avez peut-être compris, il s’agit d’un utilitaire qui permet de réaliser la synchronisation de deux dossiers sur deux machines distantes et ce de façon bidirectionnelle, c’est à dire que la mise à jour se fait dans les deux sens, donc il ne s’agit pas d’une « simple » copie récursive.

Les applications sont nombreuses, en voici deux exemples

  • Grand public (mais un peu geek quand même) : vous possédez 2 ordinateurs et un nas ? ou bien simplement vous souhaitez avoir les mêmes fichiers sur votre laptop et votre desktop ? Unison se charge de les synchroniser pour vous ;
  • Professionnel (ou carrément geek) : si vous reprenez mon exemple de mise en place de deux serveurs web en parallèle, vous aurez besoin de synchroniser vos machines pour que toute les modifications sur un système soient répercutées sur les autres.

separateur

Utiliser Unison sous Linux

Comme je l’ai indiqué plus haut, Unison est disponible avant tout pour les systèmes Linux, tout est donc prévu pour qu’il soit configurable et utilisable en quelques lignes seulement. Commencez par installer la dernière distribution de l’application, selon votre système d’exploitation

apt-get update
apt-get install unison
Installer Unison sous Debian / Ubuntu
yum install unison
Installer Unison sous RHEL / CentOS
cd /usr/ports/net/unison/ 
make install clean
Installer Unison sous FreeBSD

de mon côté je n’utilise l’application que sous Ubuntu, je n’ai jamais rencontré aucun problème d’installation.

Utiliser unison pour synchroniser deux dossiers locaux

Ca peut toujours être utile et c’est l’utilisation la plus simple d’Unison : il est possible de synchroniser deux répertoires d’un même ordinateur simplement en tapant la commande :

unison /chemin/dossier1/ /chemin/dossier2/
Synchroniser deux dossiers locaux avec Unison

Le programme pourra vous poser quelques questions (par exemple quel fichier conserver en cas de conflit), ce qui convient pour une utilisation ponctuelle mais pas si vous voulez planifier la tâche, ce à quoi nous reviendrons plus tard.

Utiliser Unison pour synchroniser des dossiers sur 2 ordinateurs différents

Ca n’est pas plus compliqué que pour la synchronisation de répertoires locaux, il suffit de taper le chemin pour accéder au dossier distant en ssh dans la ligne de commande :

unison /chemin/dossier/local ssh://user@192.168.0.1//dossier/distant/
Synchronisation de dossier distant avec Unison

Comme précédemment, l’application est susceptible de vous interroger pendant le traitement, notamment pour vous demander le mot de passe de votre utilisateur ssh, nous allons voir comment contourner cela dans un instant, je voulais juste vous signaler qu’il est possible de demander à Unison de tester s’il est capable de synchroniser vers le répertoire distant en ajoutant l’option -testServer à la ligne de commande :

unison -testServer /chemin/dossier/local ssh://user@192.168.0.1//dossier/distant/
Tester la connectivité vers un dossier distant

Automatiser la synchronisation grâce aux profils

Il est possible de créer un ou plusieurs profils pour automatiser le fonctionnement d’Unison, ainsi en lançant la commande

unison

vous lancerez le traitement tel que prévu dans le fichier de profil default.prf. Si vous souhaitez utiliser un deuxième profil appelé profil2.prf il vous suffira de taper

unison profil2

Pour commencer, commencez par créer le répertoire dans lequel Unison va trouver ses fichiers de profils, chaque utilisateur possède ses propres profils :

mkdir ~/.unison

Puis créez (dans ce répertoire bien sûr) un fichier nommé default.prf et editez le pour indiquer vos préférences. Voici un exemple de fichier prêt à l’emploi

# En premier le chemin du dossier local à synchroniser
root = /home/www
# Ensuite le chemin du dossier distant 
root = ssh://user@192.168.0.1//home/www

# Options du journal
log = true
logfile = /home/log/logunison

# Synchroniser selon les dates de fichier
prefer=newer
times = true

# Utiliser le mode silencieux
silent=true

# Ignorer les permissions
perms = 0
Fichier default.prf pour Unison

Vous trouverez une description plus détaillée des (nombreuses) options disponibles sur cette page.

Il ne reste plus qu’à résoudre le problème de la connexion ssh sans mot de passe qui est résolu en suivant ce tutoriel et vous pouvez maintenant synchroniser un dossier de votre ordinateur avec un ordinateur distant sans aucune intervention.

Utiliser Unison sous Windows

C’est possible, pas franchement une partie de plaisir pour l’installation mais au bout du compte ça fonctionne quand même.

Avant de commencer il vous faut :

L’installation d’OpenSSH ne pose pas de problème, ni la décompression de GTK+. Généralement c’est quand on veut ajouter GTK+ au path de Windows que c’est plus compliqué ; je vous laisse le faire comme des grands. Si vous êtes aussi patients que moi vous pouvez toujours créer un dossier c:\gtk et mettre dedans votre environnement, puis poser l’exécutable d’Unison dans le dossier c:\gtk\bin. Normalement tout fonctionne de cette façon.

Lancez maintenant Unison en mode graphique (pour ma version il s’agit du fichier Unison-2.27.157 Gtk+.exe) et commencez par créer un nouveau profil en cliquant sur le bouton « Create profile ». Vous donnerez un nom votre profil dans le popup prévu à cet effet, pour le test j’ai créé « 192.168.0.1 ».

Profils Unison

Ensuite, et c’est super intuitif, il faut double cliquer sur le profil que vous venez de créer pour accéder au choix de votre dossier source. Sur la fenêtre qui s’affiche, cliquez sur « Browse » pour sélectionner le dossier de votre choix.

unison dossier local

Validez ces deux fenêtres pour passer au paramétrage du dossier distant, vous devrez indiquer le chemin d’accès au dossier, l’url du serveur ainsi que le nom d’utilisateur s’il ne correspond pas à votre login courant sous Windows.

Unison dossier distant

Validez à nouveau et saisissez votre mot de passe dans la fenêtre de commandes DOS qui s’affiche. Patientez le temps de la connexion et vous aurez enfin accès à la liste des fichiers à synchroniser. Il ne vous reste plus qu’à choisir votre sens de synchronisation et à lancer le traitement.

Fichiers à synchroniser

La prochaine fois vous n’aurez qu’à double-cliquer sur le nom  de votre profil pour lancer la synchronisation.

Si vous souhaitez éditer vos profils à la main, sachez qu’ils se trouvent dans le dossier .unison du dossier correspondant à votre utilisateur sous Windows.

separateur

 La synchronisation de fichiers n’a maintenant plus de secrets pour vous, vous pouvez créer une tâche planifiée pour sauvegarder vos documents ou synchroniser votre travail entre vos ordinateurs sans avoir à y réfléchir. Est-ce que vous même vous utilisez ce type de synchronisation ? Je ne doute pas de l’excellence d’Unison, mais certains d’entre vous utilisent peut-être d’autres outils (certainement avec une interface mieux travaillée)… La semaine prochaine je vous présenterai un outil de backup, mais en attendant n’hésitez pas à nous parler de vos outils ou de votre configuration d’Unison.

 



Source : Logo sous licence Creative Commons

Une réponse

  1. […] Découvrez Unison, utilitaire gratuit qui permet la synchronisation de fichiers entre deux ordinateurs, à travers ce tutoriel illustré sur Responsive Mind.  […]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *