UnisonLa 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 :

Unison en actionUnison 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 xxdiff 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