Unison: La synchronisation de dossiers pour réseau à petits débits (2/4)

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 …

A propos Olivier Olejniczak

Cofondateur de SynerGeek.fr. Passionné d'informatique, je m'intéresse plus particulièrement aux technologies de virtualisation et de stockage. J'apprécie la liberté et la quasi-absence de frontières à mon imagination qu'offre l'OpenSource et Linux. Professionnellement, je travaille exclusivement avec les outils Microsoft. Les pieds bien sur terre et ancrés dans le quotidien de l'entreprise, j'aime faire partager mes découvertes et contribuer à un meilleur usage des technologies. Vous aussi, rejoignez-nous sur Synergeek et partagez votre expérience!

Je vous propose également...

Signature HTML dans Mail Mac OS X Mavericks

Les méthodes changent entre les différentes version d’OS Apple pour intégrer une signature html dans …

Comment accélérer démarrage de Windows 7 ou 8

Voici un tutoriel en vidéo pour apprendre comment accélérer le boot de Windows 7. La même démarche peut-être utilisée pour Vista ou Windows 8. Ce tuto est réservé à des utilisateurs avertis. Il est toujours bon de se faire une petite image disque avant ces manip'.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.