Synchronisation des fichiers entre plusieurs machines : Unison

De Wiki du LAMA (UMR5127)

Unison permet de synchroniser des fichiers entre deux machines. Avec PLMBox, c'est l'un des moyens recommandé pour synchroniser vos documents entre le serveur et votre ordinateur portable (ou votre ordinateur fixe s'il n'utilise pas OpenAFS), et ainsi bénéficier d'une sauvegarde.

Sommaire

Versions et compatibilité

Pour le moment il y a deux serveurs possibles pour faire de la synchronisation avec unison : le serveur du lama et le serveur unison

  • www.lama.univ-savoie.fr / 193.48.123.134
  • unison.local.univ-savoie.fr / 192.168.144.7

Pour les nouveaux utilisateurs d'unison, il est recommandé d'utiliser le serveur unison.local.univ-savoie.fr; La documentation ci-dessous reste valable en modifiant le nom du serveur dans la configuration.


Par défaut, Unison refusera de synchroniser si les versions clientes et serveur ne sont pas les mêmes.

Actuellement, les versions installées sur le serveur www.lama.univ-savoie.fr sont :

  • 2.40
  • 2.32
  • 2.27


Sur le serveur unison.local.univ-savoie.fr

  • 2.40

Installation

Sous Linux

Testé avec Debian 8 Jessie.

Si la machine a été installée par les techniciens du laboratoire, Unison est normalement déjà installé. Sinon, sous Debian / Ubuntu / Mint, installer le paquet "unison-gtk" : # apt-get install unison-gtk

Cliquer sur "Ajouter" pour créer un profil, et renseigner les informations demandées :

  • "Profile name" : un nom de profil arbitraire, par exemple "Lama"
  • "Description" : si vous le souhaitez, tapez une description
  • "Synchronization kind" : "Using SSH"
  • "Host" : lama.univ-savoie.fr
  • "User" : votre nom d'utilisateur sur le serveur (dans mon cas, "ymass")
  • Décocher la case "Enable compression" puis cliquer sur suivant
  • "Local directory" : le répertoire local que vous voulez synchroniser avec le serveur
  • "Remote directory" : le répertoire sur le serveur que vous souhaitez synchroniser, par exemple "/home/ymass/Documents" (sans les guillemets)
  • Cliquer sur "Suivant"
  • Décocher la case "Synchronization involving a FAT partition", puis cliquer sur "Suivant et finalement "Appliquer"
  • Cliquer sur le nom du profil puis sur "Ouvrir"
  • Une pop-up s'affiche la première fois pour vous demander si vous souhaitez vous connecter avec le serveur, confirmer.
  • Taper le mot de passe de votre compte sur le serveur, et patienter le temps qu'Unison compare les répertoires local et distant.
  • Une autre pop-up s'affiche pour vous prévenir que c'est la première synchronisation, cliquer sur "Valider"

Windows

Testé avec Windows 7 64 bits.

Attention : cette méthode enregistre votre mot de passe du serveur en clair sur votre poste

Installer GTK+ pour Windows :

Télécharger Unison à l'adresse http://unison-binaries.inria.fr/, en choisissant la version stable la plus haute parmi les version 2.40.x.

  • Extraire l'archive .zip : clic droit -> "Extraire tout...", puis valider en cliquant sur le bouton "Extraire"

Lancer le logiciel en double cliquant sur l'exécutable dont le nom se termine par "GTK" :

  • Cliquer sur "Ajouter" pour créer un profil, et renseigner les informations demandées :
  • "Profile name" : un nom de profil arbitraire, par exemple "Lama"
  • "Description" : si vous le souhaitez, tapez une description
  • "Synchronization kind" : "Using SSH"
  • "Host" : lama.univ-savoie.fr
  • "User" : votre nom d'utilisateur sur le serveur (dans mon cas, "ymass")
  • Décocher la case "Enable compression"
  • "Local directory" : le répertoire local que vous voulez synchroniser avec le serveur, par exemple "C:\Users\toto\Documents\"
  • "Remote directory" : le répertoire sur le serveur que vous souhaitez synchroniser, par exemple "/home/ymass/Documents" (sans les guillemets)
  • Fermer Unison

Télécharger l'utilitaire plink.exe (un des composants du célèbre Putty) depuis http://the.earth.li/~sgtatham/putty/latest/x86/plink.exe

  • Le placer dans le même dossier que l'exécutable Unison
  • Dans l'ex menu "Démarrer" chercher le programme "cmd" et le lancer
  • Lancer une première connexion SSH au serveur afin d'accepter le certificat, en utilisant la commande suivante : chemin_répertoire_Unison\plink.exe nom_utilisateur_serveur@lama.univ-savoie.fr -ssh
  • Accepter la clé en tapant "y" puis la touche "Entrée", puis annuler la commande avec le raccourci "Ctrl+C"
  • Fermer la fenêtre d'invite de commande.

Éditer le fichier .prf contenant les paramètres du profil Unison que nous venons de créer, situé dans le répertoire .unison, à la racine de votre répertoire personnel.

  • Faire un clic droit dessus et aller dans "Ouvrir avec..."
  • Cliquer sur la flèche à droite de "Autres programmes" et choisir "Bloc-Notes", puis valider avec le bouton "OK"
  • Ajouter la ligne : sshcmd = plink-ssh-command.bat

Toujours dans le Bloc-notes, créer ce .bat en allant dans "Fichier" -> Nouveau"

  • Y placer la ligne suivante : @plink.exe num_utilisateur_serveur@lama.univ-savoie.fr -ssh -pw mot_de_passe_serveur "unison -server -contactquietly"
  • Enregistrer ce fichier dans le répertoire contenant l'exécutable d'Unison, en lui donnant pour nom "plink-ssh-command.bat"

Finalement, relancer Unison, en double cliquant sur l'exécutable dont le nom se termine par "GTK" :

  • Cliquer sur le nom du profil puis sur "Ouvrir"
  • Une pop-up s'affiche pour vous prévenir que c'est la première synchronisation, cliquer sur "Valider"
  • Patienter le temps qu'Unison compare les répertoires local et distant.


Il est ensuite fortement conseillé de lire le paragraphe ci-dessous de configuration "avancée" : cela vous permettra par exemple de ne pas synchroniser les fichiers temporaires créés lors des compilations LaTeX, de ne pas mettre vos photos de vacances sur le serveur, etc...

Mac OSX

Testé avec OSX 10.8.5

Télécharger le logiciel à l'adresse http://unison-binaries.inria.fr/ :

  • Choisir la version :
    • Au moins pour OSX 10.8 et 10.10, choisir la version 2.40.61 (la version 2.40.69 plante à la connexion au serveur).
  • Installer l'application comme d'habitude, en la faisant glisser dans le répertoire Applications.
  • Au lancement de l'application, Unison vous demande si vous souhaitez installer l'utilitaire en ligne de commande : ce n'est pas nécessaire.
  • Cliquer sur le bouton "New" pour créer un profil, puis renseigner les informations demandées :
    • "Profile name" : un nom de profil arbitraire, par exemple "Lama"
    • "First root", "File" : le chemin du répertoire local que vous voulez synchroniser avec le serveur, par exemple "/Users/yvan/Documents/Recherche" (sans les guillemets)
    • "Second root" :
      • Laisser cochée la case "Remote"
      • "User" : votre nom d'utilisateur sur le serveur (dans mon cas, "ymass")
      • "Host" : lama.univ-savoie.fr
      • "File" : le chemin du répertoire sur le serveur que vous souhaitez synchroniser, par exemple "/home/ymass/Documents" (sans les guillemets)
    • Cliquer sur le bouton "Save" en haut de la fenêtre, puis sur le bouton "Open".
  • Une pop-up s'affiche la première fois pour vous demander si vous souhaitez vous connecter avec le serveur, confirmer.
  • Taper le mot de passe de votre compte sur le serveur, et patienter le temps qu'Unison compare les répertoires local et distant.

Il est ensuite fortement conseillé de lire le paragraphe ci-dessous de configuration "plus fine" : cela vous permettra par exemple de ne pas synchroniser les fichiers temporaires créés lors des compilations LaTeX, de ne pas mettre vos photos de vacances sur le serveur, etc...

Configuration "plus fine"

Unison utilise un fichier de configuration "XXX.prf" (XXX est le nom que vous donnez au profile), qui est créé quand on utilise l'interface graphique. Toutefois, de nombreuses options très utiles doivent être ajoutées à la main dans le fichier.

Celui-ci se trouve dans le répertoire ".unison" à la racine du dossier personnel sous Linux et Windows et dans "Library/Application Support/Unison" sur OSX.

En voici une configuration recommandée type au LAMA (il faut la modifier en fonction de vos besoins en particulier les "roots", le nom du serveur (attention alors au username/passwd)) :

 # répertoire sur le client, ici tout le répertoire utilisateur de "username" (pour un poste Linux)
 root = /home/username/ 
 # répertoire sur le serveur du lama (idem ici tout)
 root = ssh://username@www.lama.univ-savoie.fr//home/raffalli/ 
 
 follow = Path WWW # on veut suivre le raccourci WWW pour synchroniser aussi sa page web perso
 maxthreads = 1    # évite de trop charger le serveur
 rsrc = false      # utile si vous travaillez avec des machines OS X et d'autres qui ne le sont pas
 
 # si vous ne voulez pas synchroniser tous les dossiers dans les racines spécifiées ci dessus
 # vous pouvez spécifier ceux que vous voulez synchroniser :
 path=Bibliographie
 path=Rapports
 path=Articles
 
 # Si vous voulez ignorer certains fichiers :
 # Ceci peut se faire, en partie, depuis l'interface graphique d'Unison, dans le menu "Ignore"
 ignore = Path .unison # ignore un fichier depuis la racine
 ignore = Name core    # ignore tous les fichiers qui s'appellent core
 ignore = Name *.log   # ignore tous les fichiers qui ont l'extension .log
 
 # Remarque importante :
 # La version d'Unison doit être la même sur les 2 machines : si besoin, on peut 
 # utiliser une ligne de ce type pour préciser la version à utiliser sur le serveur
 # servercmd=/usr/local/bin/unison-2.27

Pour une configuration plus élaborée (comme par exemple l'utilisation de plusieurs fichiers de configuration différents), consultez la documentation officielle (http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html).

Pour éviter de taper le mot de passe à chaque synchronisation aller voire SshAvecAfs.

Outils personnels