Synchronisation Linux – Windows avec Unison 2.40

Publié le 12 janvier 2011 par Rumbaya

Debian 5.07 Lenny – Windows Server 2008

Unison est un outil de synchronisation multi-plateforme très puissant, que j’utilise avec bonheur depuis plusieurs années. Il permet des synchronisations bi-directionnelles entre 2 jeux de données qui peuvent être locaux ou distants (support de SSH), et il fonctionne sur différents UNIX (Linux, Solaris, Mac OS X,..) et Windows. Il n’avait jusqu’ici qu’un seul gros défaut, l’absence de support de l’encodage UTF-8, ce qui posait problème avec nos chers caractères accentués dans les noms de fichiers et de répertoires. C’est maintenant résolu avec la dernière version 2.40.61, encore en beta mais raisonnablement stable (quelques plantages constatés avec un binaire 32 bits sous Windows Server 2008 64 bits).

Mise en oeuvre d’une synchronisation basique Windows – Linux via SSH


Unison dispose d’une foultitude d’options, ce petit mémo ne remplacera pas la lecture des 70 pages du manuel!

Il est important que les 2 machines à synchroniser disposent de la même version d’Unison. Pour Windows j’ai utilisé Cygwin 1.7.7, qui permet d’installer Unison 2.40.61 et OpenSSH. Pour la machine Linux (Debian Stable AMD64) les paquets Debian sont trop anciens, il a fallu compiler. Les sources sont en Objective Caml, il faut donc installer le compilateur qui va bien, le manuel recommande une version supérieure ou égale à 3.11.2. Pas de bol, sous Debian Lenny c’est la version 3.10.2, j’ai donc compilé les sources sur une autre machine en Debian Testing :

# Installation du compilateur OCaml
aptitude install ocaml ocaml-native-compilers
# Récupération des sources 
wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/unison-2.40.61/unison-2.40.61.tar.gz
tar -xvzf unison-2.40.61.tar.gz
cd unison-2.40.61
# Compilation sans l'interface Gtk (ignorer les erreurs etags)
make ./mkProjectInfo
make UISTYLE=text

Voilà, on a maintenant un binaire unison qu’il n’y a plus qu’à copier dans /usr/bin sur la machine cible. Si ça peut intéresser, voici le binaire compilé en 64 bits : unison_2.40.61_amd64.

Unison étant installé sur les 2 machines on peut lancer la synchronisation à partir de la machine Windows :

unison D:\donnees ssh://francois@serveurdebian.onsenfout.com//home/francois/donnees -auto -perms 0

Unison s’exécutera en mode interactif. Pour une exécution batch il faudra mettre en place une authentification SSH par certificat et ajouter -batch à la ligne de commande :

unison D:\donnees ssh://francois@serveurdebian.onsenfout.com//home/francois/donnees -auto -perms 0 -batch

Liens

Home page Unison
Liens vers des binaires Unison et ici aussi.
Astuces pour la compilation
La saga Unison et UTF-8