La version en ligne de commande de unison peut être configurée au travers d’options passées en ligne ou d’un fichier de configuration.
Installation
L’installation de Unison sous Linux Ubuntu est des plus classiques:
sudo apt-get install -y unison
Pour installer la version de Unison avec interface graphique, tapez la commande ci-dessous:
sudo apt-get install -y unison-gtk
Unison pour une recopie locale
Dans cette première partie, nous allons recopier nos données en localement. Ce sera l’opportunité de tester quelques unes des nombreuses options du programme;
Copie d’un fichier
Pour débuter l’étude de l’utilisation de Unison, nous allons voir comment copier un fichier “test.txt” placé dans le répertoire “/home/ubuntu/source” vers le répertoire “/home/ubuntu/destination”.
mkdir /home/ubuntu/source
mkdir /home/ubuntu/destination
touch /home/ubuntu/source/test.txt
La commande de recopie du fichier sera:
Unison /home/ubuntu/source/test.txt /home/ubuntu/destination/test.txt
Cette commande ne présente pas de grandes surprises. Par contre, l’affichage qui va en résulter mérite d’être étudié avec attention. Unison va procéder à quelques tests puis vous signaler que l’analyse des dossiers “/home/ubuntu/source” et “/home/ubuntu/destination” peux être très long – surtout si ces dossiers contiennent beaucoup de fichiers. Tapez sur la touche “entrée” pour lancer le traitement.
[php]Contacting server…Connected [//ubuntu-laptop//home/ubuntu/source/test.txt -> //ubuntu-laptop//home/ubuntu/destination/test.txt]
Looking for changes
Warning: No archive files were found for these roots, whose canonical names are:
/home/ubuntu/source/test.txt
/home/ubuntu/destination/test.txt
This can happen either
because this is the first time you have synchronized these roots,
or because you have upgraded Unison to a new version with a different
archive format.
Update detection may take a while on this run if the replicas are
large.
Unison will assume that the ‘last synchronized state’ of both replicas
was completely empty. This means that any files that are different
will be reported as conflicts, and any files that exist only on one
replica will be judged as new and propagated to the other replica.
If the two replicas are identical, then no changes will be reported.
If you see this message repeatedly, it may be because one of your machines
is getting its address from DHCP, which is causing its host name to change
between synchronizations. See the documentation for the UNISONLOCALHOSTNAME
environment variable for advice on how to correct this.
Donations to the Unison project are gratefully accepted:
http://www.cis.upenn.edu/~bcpierce/unison
Press return to continue.[<spc>] Reconciling changes[/php]
Ce message sera répété pour chaque fichier candidat à une sauvegarde c’est à dire:
- un fichier ou un répertoire, nouveau ou modifié dans “source”,
- un fichier ou un répertoire, nouveau ou modifié dans “destination”.
source/test.txt… destinati…
file —-> / [f]
Dès que vous aurez répondu à toutes les questions, Unison va vous proposer de procéder à la sauvegarde à proprement parler. Tapez “y” pour continuer.
Proceed with propagating updates? [] y
La sauvegarde est en mode multitâche ce qui signifie que plusieurs fichiers pourront être copiés en même temps. La copie de”test.txt” commence à la ligne [BGN] et se termine à la ligne [END].
Propagating updates
UNISON 2.27.57 started propagating changes at 18:03:19 on 09 Dec 2009
[BGN] Copying from /home/ubuntu/source/test.txt to /home/ubuntu/destination/test.txt
[END] Copying
UNISON 2.27.57 finished propagating changes at 18:03:20 on 09 Dec 2009
Quand la sauvegarde est terminée, un rapport de sauvegarde est affiché. Dans le cadre de l’exemple ci-dessus, tout c’est bien passé! Un fichier a été copié.
Saving synchronizer state
Synchronization complete (1 item transferred, 0 skipped, 0 failures)
Pour valider le travail d’optimisation de la copie réalisé par Unison, relançons la sauvegarde immédiatement. Le message final est explicite: “Il n’y a rien à faire: aucun fichier n’a été modifié depuis la dernière sauvegarde”.
Unison /home/ubuntu/source/test.txt /home/ubuntu/destination/test.txt
Contacting server…
Connected [//ubuntu-laptop//home/ubuntu/destination/test.txt -> //ubuntu-laptop//home/ubuntu/source/test.txt]
Looking for changes
Reconciling changes
Nothing to do: replicas have not changed since last sync.
Pour informations, les journaux de copie sont stockées par défaut dans le fichier “unison.log” placé dans le répertoire ” ~/.Unison/” de l’utilisateur courant.
Copie d’un répertoire
Pour recopier l’intégralité du dossier “/home/ubuntu/source” dans le dossier “/home/ubuntu/destination”, il faudra taper la commande ci-dessous:
Unison /home/ubuntu/source/ /home/ubuntu/destination/
Tous les fichiers et les sous répertoires de “source” seront pris en compte.
Copie de plusieurs répertoires
Pour recopier le contenu de plusieurs répertoires, il est plus rapide que créer un fichier de configuration. Ce fichier est placé dans le répertoire de l’utilisateur courant ” ~/.Unison/”.
Créez un fichier de texte nommé “unison-test.prf”. Ajoutez des lignes sur le modèle ci-dessous.
root = /home/ubuntu/destination
root = /home/ubuntu
On y retrouve le dossier de destination et la racine du répertoire utilisateur.
Vous souhaitiez sauvegarde le dossier “source” du répertoire utilisateur “/home/ubuntu”. Il faut donc ajouter la ligne suivante:
path = source
En lançant la commande suivante, l’intégralité de “/home/ubuntu/source” sera copié dans “/home/ubuntu/destination”.
Unison unison-test.prf
Vous trouverez donc dans “destination” un sous-dossier nommé “source”.
Si vous souhaitiez sauvegarder également le dossier “/home/ubuntu/Music”, il aurait fallu ajouter à “unison-test.prf” la ligne suivante:
path = Music
Filtrer les fichiers et les sous-dossiers à sauvegarder.
Jusqu’à présent, la commande Unison a copié l’intégralité des éléments présents dans les répertoires spécifiés, pourvu qu’ils aient été modifiés. Il est toutefois possible d’appliquer des filtres pour ne recopier que certains éléments. Le filtrage peut être réalisé par nom ou par dossier. Par, exemple, si vous ne souhaitez par copier les fichiers “*.bin” ou “test*.*” et “toto.tst”, ajoutez la ligne suivante au profil “unison-test.prf”.
# fichiers à ignorer
ignore = Name {*.bin, toto.tst, test*.*}
De la même façon, si vous souhaitez ignorer tous les dossiers dont le nom est de la forme “subdir*”, ajoutez la ligne ci-dessous:
# répertoires à ignore
ignore = Path {subdir*}
Automatiser la sauvegarde
Afin de rendre la sauvegarde le plus transparent, vous allez toujours appliquer deux options. Le premier consiste à éliminer les alertes avant analyse et la confirmation avant recopie des données.
Pour réaliser ceci, il vous suffira de lancer Unison avec l’option batch”.
Unison unison-test.prf -batch
Une question ne sera posée à moins qu’il n’y ait un problème de conflit entre la version d’un fichier présent dans “source” et la version du même fichier présent dans “destination”. Dans ce cas, vous devrez choisir qu’elle est la copie à conserver.
Il est également possible de supprimer
Copie automatique et silencieuse l’affichage de la progression de la sauvegarde en ajoutant l’option “silent”.
Unison unison-test.prf -batch -silent
Si vous avez un doute concernant les actions réalisées durant la sauvegarde, il est toujours possible de se référer au journal d’exécution dans “~/.Unison/unison.log”.
Nous verrons demain comment gérer les historiques de version et les conflits de version …