[[unison]]
Piste: » unison
Unison
Unison est un logiciel de synchronisation ; à la différence de rsync celui-ci réalise une synchronisation bidirectionnelle.
Rsync est davantage destiné à réaliser des sauvegardes de routine. A noter que rsync peut prendre le rôle d'unison et vice-versa.
Mais chacun a ses avantages et ses inconvénients.
Unison reste l'outil idéal pour maintenir de façon identique le contenu de plusieurs répertoires différents, répertoires qui peuvent évoluer différemment entre chaque établissement d'une synchronisation.
Unison est multi-plateforme et peut fonctionner à travers ssh rsh ou les sockets.
Avec lui vous pourrez réaliser des synchronisations entre des répertoires sous Windows, Mac et Linux.
Il existe deux façons d'utiliser Unison :
- soit par ligne de commande grâce à la commande
unison - soit par le biais de l'interface graphique avec unison-gtk
Synchronisation
Si un fichier est créé, si il est supprimé ou si il à été modifié dans l'un des deux répertoires, la modification sera appliquée sur l'autre.
Installez les paquets unison unison-gtk
Unison en mode facile (interface graphique)
Vous trouverez une icône dans Applications → accessoires → Unison
Lors du premier lancement, il crée un profil. Le premier élément est de lui indiquer les deux répertoires destinés à la synchronisation.
Notion de profil
Le profil est un ensemble de données et d'options qui sont enregistrées suivant nos désirs. Ensuite, à chaque appel, unison applique ce profil.
- Concrètement, au premier lancement il demande un premier répertoire sur la machine où est installé unison.
Puis un autre répertoire.
- Soit local (idéal pour clé usb, disque dur externe ...)
Cet assistant a crée un profil.
Unison établit une liste entre le répertoire 1 (celui de gauche sur le tableau) et le répertoire 2 (celui de droite)
En fonction de ce qu'il trouve comme changements entre les 2 répertoires il proposera de faire une action.
L'icône Go, applique ces changements.
Limite d'Unison avec l'interface graphique
Il semblerait que ce projet n'évolue plus en mode graphique, parmi les regrets on peut noter l'absence de traduction en français et la mauvaise gestion des profils. En effet, il n'est pas possible de modifier les profils une fois créés.
Unison en ligne de commande
Les commandes sont assez simples :
unison
Cette commande lance unison avec les données du profil default
unison profil2
Lance unison avec les données du fichier profil2.prf se trouvant dans .unison
Peaufiner les profils
Pour modifier le profil principal, il suffit d'éditer le profil default.prf (qui se trouve dans /.unison)
On commence par indiquer les différents chemins root=/home/moncompte/cheminquiseraanalyseenpremier/
root=/chemindelautrecheminasynchroniser/
Si on désire faire une synchronisation plus fine, on peut rentrer des sous répertoires. Par ex: je désire synchroniser mon répertoire documents ainsi que mon répertoire podcasts avec mon lecteur mp3.
#j'indique uniquement le répertoire parent root=/home/login/ #le chemin du périphérique (à condition que ce soit toujours le même) root=/media/keyaudio #puis les sous répertoires path=documents path=musique/podcasts
en faisant cela, il ne synchronisera que les répertoires documents et musique/podcasts
On peut rajouter une liste de répertoire à ignorer avec la commande ignore une liste de type de fichier à inclure ou exclure (avec path ou ignore puis *.mp3)
- backup=/chemin</note>
permet de faire une sauvegarde des échanges dans un autre répertoire, rajouter la commande backup=name * par défaut, unison fait 2 sauvegardes
- auto
elle permet de valider les propositions présentées
- path
- ignore
- mountpoint
pour les medias amovibles
- log
permet d'enregistrer un fichier log, qui trace les transferts
- batch
automatise toutes les synchronisations sans même une seule confirmation
- silent
Les options peuvent être utilisées soit dans le terminal en tant qu'option
unison -option
Soit dans les profils, en tapant option = true ou option = valeur
Synchroniser les clefs USB
Problèmes de droit
Dans le cas ou vous désirez établir une synchronisation avec une clé usb, un disque dur externe, une carte SD ... Bref avec tout périphérique en FAT ou FAT32. Vous risquerez d'être embêté.
En effet, ces systèmes de fichier ne gère pas les droits et les notions de propriétaires.
Par défaut, Ubuntu donne des droits root temporaire lors du montage du périphérique.
Il existe plusieurs moyen d'éviter ce problème : - reformater le périphérique USB (en ext2 ou 3 par exemple). Mais elle ne sera pas reconnaissable par les autres systèmes d'exploitation, ni par vos appareils embarqués (appareil photo, PDA etc ...)
- monter le périphérique manuellement en indiquant le propriétaire
mount -o uid=1000 ...
Et cela à chaque fois que l'on désire l'utiliser
- modifier le fichier fstab Par défaut il n'y a rien d'indiqué concernant les montages des périphériques usb. Il suffit de rentrer une ligne de type: /dev/sda1 /mnt/removable vfat user,rw,noauto 0 0
mais avec le point suivant, quitte à modifier le fichier fstab autant le faire bien.
Editer votre fichier qui se trouve dans /home/votrelogin/.unison et qui porte le nom suivant NomDeVotreProfil.prf Rajouter la ligne d'option suivante à la fin:
perms = 0
Différencier plusieurs périphériques USB
Imaginer que vous ayez plusieurs périphérique USB, comme une clé USB, un disque dur externe, un lecteur de carte USB ... Bref, votre disque dur externe prendre ainsi comme point de montage, soit sda1, sdb1 etc ... En fonction de qui se branche en premier ! Pour éviter cela il faut utiliser l'UUID. (plus de renseignement sur uuid_et_label ou sur comment renommer un disque)
Pour connaître le numéro UUID de votre périphérique usb taper dans un terminal :
ls -l /dev/disk/by-uuid/
Puis créer un point de montage fixe (ex:disque_synchronisation):
sudo su
mkdir /media/disque_synchronisation
Puis éditer le fichier /etc/fstab et indiquer lui un point de montage fixe (ex:disque_synchronisation)
UUID=uuid_du_disque /media/disque_synchronisation vfat user,rw,exec,noauto,iocharset=utf8,codepage=850 0 0
et voilà plus de soucis !
Une variante est possible avec le label de votre periphérique usb. Dans fstab, a la place de UUID=lecodeUUID écrivez LABEL=nomdulabel
La sécurité avec l'USB
Le risque avec les médias amovibles, c'est qu'ils peuvent être retirés avant la fin de la synchronisation. Pour éviter ce problème, il existe une option qui permet de revenir à l'état précédent en cas d'accident de ce genre. Il s'agit de la commande mountpoint il s'agit d'une option à unison, elle est suivit du signe = et du chemin, ex :
unison profil -mountpoint = /media/disque_synchronisation
Cette option existe depuis la version 2.17 d'unison. Autrement dit, le paquet venant d'Uubuntu est trop ancien (texte écrit lorsque 7.10 était stable) Si vous voulez l'installer par vous même cliquer ici Sinon vous trouverez des paquets tout fait sur getdeb
Lancer automatiquement unison lors du branchement du périphérique
udev
La solution la plus logique serait d'utiliser udev qui gère nos périphérique usb Plus de renseignement sur la page « exécuter_certains_programmes_selon_certains_événements » de la page udev.
Mais pour ma part, je n'ai jamais réussi à le faire fonctionner avec unison. Pour lancer un script a partir d'udev il faut créer une règle, en créant un fichier (en sudo) /etc/udev/rules.d/10-local.rules Pour ma part [Non neutre] un script avec cp fonctionne, mais pas avec unison
Script sur la clé USB
Il faut autoriser le lancement des scripts en allant dans Système → Préférence → Périphériques et médias amovibles onglet Stockage, puis cocher « Lancer automatiquement des programmes sur les nouveaux périphériques et médias ». Ensuite placer un simple script sur votre périphérique USB, la synchronisation s'exécutera lors de l'insertion de la clé USB.
Synchroniser des dossiers distants
La synchronisation entre plusieurs dossiers distant est très facile avec union, il suffit de comprendre qu'il faut un unison par machine, contrairement au cas "local".
Requis :
- Un unison par machine (Linux, Mac ou Windows)
- Un service d'échange actif (ssh, rsh, sockets)
- La même version d'unison sur toutes les machines
Le fait d'avoir un unison par machine ne veux pas dire tous les lancer en même temps ;) il suffit d'en configurer un qui s'occupera de dialoguer avec l'autre, Il n'y a pas vraiment de notion client/serveur.
Synchroniser à travers ssh
La méthode est simple, installer unison par machine : apt://unison Pour ubuntu http://alan.petitepomme.net/unison/index.html Pour windows
Je rappel qu'il faut avoir la même version, et c'est le point délicat, en effet entre deux Ubuntu, pas de problèmes, par contre, lorsque vous utiliser plusieurs OS alors cela se complique.
Pour simplifier, au 08/2008 la version stable et commune est la 2.27.57 elle est stable et à jour. Malheureusement Ubuntu n'a dans ses dépots officiels uniquement la version 2.13, pour régler le problème de gentils contributeurs maintienne la 2.27.57 dans les dépots backports, il suffit donc de l'ajouter à son source.list et de réinstaller unison.
Pour ne pas vous laisser dans la nature comme ca, je vous propose mon profil (réalisable aussi avec l'interface graphique).
#j'indique le premier répertoire à synchro root = /home/nom/Documents #j'indique le chemin du dossier distant root = ssh://simtris@192.168.0.10/Docs # Options pour bosster Windows fastcheck = true # Options du journal log = true logfile = /home/simtris/.unison/logunison #zap les permissions perms = 0 #synchro des dates times = true