samedi 22 avril 2006
Unison : La synchronisation de répertoires facile
Par JJL, samedi 22 avril 2006 à 18:56 :: kubuntu
La problématique est assez commune, un PC principal et un portable (Bananec) qui voyage régulièrement (et encore plus maintenant). L'idée étant de synchroniser les fichiers entre les disques des deux machines de manière sure et surtout sans se prendre le chou[1].
J'avais fait quelques recherches il y a quelques mois et mon choix s'était arrété sur Unison qui fait tout ce que je veux :
- synchronisation bi-directionnelle
- sureté de fonctionnement
- avec une belle et simple interface graphique
- cryptage des données[2]
- pas besoin de privilèges
- et bien sur libre (GPL)
Cerise sur le gateau, il est dispo dans les dépôts universe
Préparation
Pour l'installer, utilisez adept ou la ligne de commande :
sudo apt-get install unison-gtk
Ce doit être fait sur les deux machines[3]
Il vous faut aussi les clients et serveurs ssh sur chaque machine configurés pour ne pas avoir à entrer un mot de passe. Voir par exemple chez NiKo pour la procédure.
Premier démarage
Vous lancez la commande unison-gtk qui va vous créer le profil default en vous demandant :
- le répertoire local à répliquer
- le répertoire distant (dans mon exemple, en ssh sur la machine Bananec)
Unison va alors vérifier chaque fichier et vous proposer de faire les réplications nécessaires. Par exemple dans cette capture d'écran, Bananec possède un fichier portable qui n'est pas sur l'hote local (et inversement pour le fichier desktop) Il ne vous reste qu'a cliquer sur Go pour effectuer l'opération. Et voila !
En cas de conflit
Maintenant, peux se présenter un problème. Imaginez que vous modifiez un fichier sur les deux ordinateurs en même temps. Lors de la prochaine synchro, Unison ne va pas savoir quelle version conserver. C'est un conflit.
Dans ce cas la, nous allons essayer de fusionner (merge) les deux fichiers. Pour faire cela de manière graphique, il vous faut installer xxdiff disponible lui aussi dans les dépots[4]
Ajoutez la ligne magique suivante dans votre fichier ~/.unison/default.prf :
merge = Name * -> xxdiff CURRENT1 CURRENT2 --merge --merged-filename NEW --show-merged-pane --exit-with-merge-status --decision
Ainsi lors d'un conflit entre deux fichiers vous obtiendrez une fenêtre vous permettant de le résoudre en choissisant quelles lignes conserver
Edit : Sous KDE, je recommande kdiff3 qui est beaucoup plus joli/simple. La ligne deviens alors :
merge = Name * -> kdiff3 CURRENT1 CURRENT2 -o NEW
Conclusion
Simple, facile et rapide, je vous recommande chaudement Unison. Il peux aussi faire bien plus que ce petit apercu, je vous encourage donc à aller voir la documentation.
Notes
[1] c'est à dire sans développer, même de simples scripts rsync
[2] nécessaire en cas de synchro à travers le net, et sans avoir à mettre en place un tunnel ssh
[3] vous pouvez aussi n'installer que la version en ligne de commande : unison
[4] meld est plus joli, mais je n'ai pas réussit à lui faire créer un 3ème fichier résultat du merge
2 commentaires :: un trackback :: Tags: