ubuntu-fr

Communauté francophone des utilisateurs d'Ubuntu

[[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 ...)
  • Soit distant (SSH, RSH et Socket)

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.

Astuce : Unison-gtk enregistre les profils dans /home/moncompte/.unison sous forme de fichier .prf fichiers qui sont éditables

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

la commande mountpoint = /mnt/etc est fortement conseillé pour les médias amovibles elle permet d'éviter une suppression successives de fichier en cas de démontage trop rapide du support amovible

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)

Parmi les options intéressantes :

  • 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.

Si à l'utilisation vous avez encore des retours de problème de permissions sur les fichiers, il peut être utile d'éditer le profil que vous utilisez pour les synchro avec votre support amovible en fat32.

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.

FIXME 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

Voir aussi


unison.txt · Dernière modification: LEurope/Berlin 27/08/2008, à 01:10 par magicvince
Le contenu de ce wiki est sous double licence : CC BY-SA et GNU FDL