Synchronisation via Unison

Qui n’a jamais perdu des fichiers faute de sauvegardes ? Faire des sauvegardes directement sur le même disque dur de la machine n’est pas non plus la meilleure idée.

Heureusement des outils comme Unison existent ! Unison à la différence de du célèbre RSync permet la synchronisation de répertoires de façon bidirectionnelle.

La procédure suivante demande une seconde machine sur laquelle copier les fichiers. Le transit des données se fera via une connexion SSH.

Récupération de la liste des paquets.
aptitude update

Installation du paquet.
aptitude install unison

Création du répertoire pour le stockage des journaux d’évènements.
mkdir -p /var/log/unison

Création du répertoire contenant les fichiers de configurations des synchronisations. Dossier à créer à la racine du répertoire personnel (ici « /root », sinon dans « /home/nom_utilisateur »).
mkdir -p /root/.unison

Création d’un fichier de configuration à placer dans le répertoire précédemment créé. A noter que l’extension est « .prf ».
[generic]### Racines ###

# Premier répertoire racine accessible en local.
root = /home/

# Second répertoire racine accessible via SSH.
root = ssh://root@1.1.1.1//home/

### Chemins à synchroniser ###

path = rep1/
path = rep2/

### Options ###

# La directive ‘silent’ active le fonctionnement totalement auto-
# matique, sans aucun message console.
silent = true

# La directive ‘fastcheck’ active la création d’un fichier conte-
# nant des "pseudo inodes numériques" des fichiers, évitant l’
# analyse complète du contenu des fichiers à synchroniser.
fastcheck = true

# La directive ‘times’ active la synchronisation des date de mo-
# dification de fichier.
times = true

# La directive ‘owner’ active la synchronisation de l’utilisateur
# propriétaire.
#owner = true

# La directive ‘group’ active la synchronisation du groupe pro-
# priétaire.
#group = true

# La directive ‘log’ active la journalisation.
log = true

# La directive ‘logfile’ définit l’emplacement du chemin complet
# du fichier de journalisation.
logfile = /var/log/unison/home.log
[/generic]

Appel à synchronisation via notre script. Il est possible que le client SSH demande une confirme lors de la connexion pour savoir s’il peut ajouter l’empreinte SSH de la machine distante, si tel est le cas répondez oui. Si vous avez une « passphrase », elle vous sera demandé aussi. Si vous avez besoin de savoir comment créer une clé SSH pour ce genre de pratique, rendez-vous ici : Génération d’une clé privée et publique SSH.
unison nom_du_script.prf