Comment installer Unison (synchronisation de fichiers bidirectionnelle) sur Linux
Garder les fichiers synchronisés sur plusieurs machines est une tâche courante pour les utilisateurs de Linux. Vous pouvez utiliser à la fois un ordinateur portable et un ordinateur de bureau, gérer un serveur domestique et un VPS, ou simplement avoir besoin d'une copie supplémentaire de vos fichiers importants.
Pour les sauvegardes simples, des outils comme rsync et scp fonctionnent bien, mais si vous apportez des modifications sur les deux systèmes, une synchronisation à sens unique n’est pas suffisante et vous risquez d’écraser des fichiers ou de perdre des mises à jour.
C'est là qu'Unison File Synchronizer est utile, qui est un outil de synchronisation bidirectionnelle qui compare les répertoires des deux côtés, détecte les changements et les met à jour afin que les deux emplacements restent toujours cohérents.
Ce guide vous expliquera les bases de l'utilisation de Unison File Synchronizer sur Linux.
À la fin, vous saurez comment :
- Installer Unison sur les distributions Linux populaires.
- Synchroniser les fichiers entre deux dossiers locaux.
- Synchronisez les répertoires entre des systèmes distants en utilisant SSH.
- Créez des profils pour faciliter les tâches de synchronisation récurrentes.
- Résolvez les problèmes courants tels que les incompatibilités de version et les conflits de fichiers.
Commençons…
Installer Unison sur Linux
Vous pouvez installer Unison soit à partir du dépôt de paquets de votre distribution Linux, soit en téléchargeant la version stable. Pour la plupart des utilisateurs, l'installation depuis le dépôt est la méthode la plus simple.
sudo apt install unison [On Debian, Ubuntu and Mint]
sudo dnf install unison [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo apk add unison [On Alpine Linux]
sudo pacman -S unison [On Arch Linux]
sudo zypper install unison [On OpenSUSE]
sudo pkg install unison [On FreeBSD]
Si vous voulez la version GUI, vous pouvez l’installer avec la commande suivante, mais la version GUI (unison-gtk) n’est disponible que sur les distributions basées sur Debian.
sudo apt install unison-gtk
Après l'installation, vérifiez la version avec :
unison -version
Remarque importante : Unison est strict en matière de compatibilité des versions. Si vous prévoyez de synchroniser entre deux systèmes (par exemple, un ordinateur portable et un VPS), les deux doivent avoir exactement la même version de Unison. Sinon, il refusera de se connecter.
Synchronisation locale de base
Avant d'utiliser Unison sur un réseau, il est conseillé de commencer par synchroniser deux dossiers sur la même machine, ce qui vous aidera à comprendre comment Unison fonctionne sans vous soucier des connexions distantes ou de SSH.
Disons que vous avez deux dossiers :
~/Documents/work→ votre dossier de travail principal~/Backup/work_sync→ votre dossier de sauvegarde
Pour synchroniser ces dossiers, exécutez :
unison ~/Documents/work ~/Backup/work_sync
Voici la répartition de la commande :
- Comparaison : Unison analyse les deux répertoires et compare les noms de fichiers, les tailles et les horodatages.
- Différences de rapport : Il liste toutes les différences entre les deux dossiers.
- Confirmation de l'utilisateur : S'il y a des changements, Unison vous demandera quoi faire : copier les fichiers de gauche à droite, de droite à gauche ou les ignorer.
- Synchronisation : Une fois confirmé, Unison met à jour les deux répertoires pour qu'ils correspondent.
Astuce : Les fichiers qui existent uniquement dans un dossier sont automatiquement copiés dans l'autre. Si des fichiers existent dans les deux dossiers mais ont été modifiés différemment, Unison vous demandera de résoudre le conflit.
Cette approche bidirectionnelle est ce qui rend Unison plus sûr que de simplement utiliser cp ou rsync dans une seule direction. Vous pouvez éditer des fichiers des deux côtés sans vous soucier de perdre des mises à jour.
Synchronisation entre systèmes distants (en utilisant SSH)
Passons maintenant à la synchronisation des fichiers entre deux machines différentes via SSH, ce qui signifie que la connexion est cryptée et sécurisée.
Vous voulez synchroniser votre dossier local ~/Projects avec un serveur distant :
unison ~/Projects ssh://username@server-ip//home/username/Projects
Voici la répartition de la commande :
~/Projects→ le répertoire local que vous voulez synchroniser.ssh://username@server-ip//home/username/Projects→ le chemin complet sur la machine distante, accessible via SSH.- Remarquez les doubles barres obliques
(//)après le nom d'hôte : elles indiquent un chemin complet plutôt qu'un chemin relatif.
Astuce de pro : Configurez l'authentification par clé SSH afin de ne pas avoir à saisir votre mot de passe à chaque fois, ce qui est essentiel si vous souhaitez automatiser les tâches de synchronisation plus tard.
Utilisation des profils pour l'automatisation
Taper de longues commandes Unison à chaque fois peut devenir fastidieux. Heureusement, Unison vous permet de créer des profils, qui sont des ensembles d'instructions enregistrées pour les tâches de synchronisation récurrentes. Les profils sont stockés dans ~/.unison/ avec l'extension .prf.
Création d'un nouveau fichier de profil.
nano ~/.unison/work.prf
Ajoutez le contenu suivant :
root = /home/youruser/Documents/work
root = ssh://username@server-ip//home/username/Documents/work
auto = true
batch = true
prefer = newer
Voici la répartition de chaque option :
root→ définit les dossiers à synchroniser (local et distant).auto=true→ effectue automatiquement la synchronisation sans demander de confirmation.batch=true→ s'exécute en mode non interactif (utile pour les scripts ou les tâches cron).prefer=newer→ en cas de conflits, garde le fichier avec l'heure de modification la plus récente.
Vous pouvez maintenant simplement exécuter la commande suivante et Unison utilisera votre profil automatiquement, pas besoin de taper de longues commandes à chaque fois.
unison work
Exécution de la synchronisation continue (mode en direct)
Parfois, vous voulez que vos répertoires restent synchronisés automatiquement au fur et à mesure que des changements se produisent en utilisant un mode veille qui surveille les répertoires en continu.
unison work -repeat watch
Avec cette commande :
- Unison continue de scanner vos répertoires pour détecter les changements.
- Tout fichier ajouté ou modifié de chaque côté est synchronisé automatiquement.
- Ceci est particulièrement utile pour les projets de développement où les fichiers sont constamment mis à jour.
Remarque : Le mode surveillance peut consommer davantage de ressources système si les répertoires sont très larges, donc utilisez-le judicieusement.
Planification des synchronisations avec Cron
Si vous préférez une synchronisation périodique plutôt qu'une surveillance continue, vous pouvez programmer Unison pour s'exécuter automatiquement à l'aide de tâches cron.
Tout d'abord, modifiez votre crontab :
crontab -e
Ajoutez la ligne suivante pour synchroniser votre profil toutes les heures :
0 * * * * unison work -batch
Voici la répartition de la commande :
0 * * * *→ s'exécute au début de chaque heure.unison work -batch→ exécute votre profil de travail en mode non interactif.
Options d'unisson courantes que vous devriez connaître
Voici une référence rapide pour les options Unison utiles :
| Option | Description |
|---|---|
-auto | Résoudre automatiquement les mises à jour simples. |
-lot | Exécuter sans invites de l'utilisateur (utile pour cron). |
-ui texte | Forcer l'interface en mode texte terminal. |
-repeat watch | Surveiller en continu les dossiers pour détecter les changements. |
-préférer le plus récent | Conservez le fichier le plus récemment modifié en cas de conflit. |
Exemple combinant des options :
unison work -auto -batch -prefer newer
Cela exécute votre synchronisation automatiquement, résout les conflits en conservant les fichiers les plus récents, et ne vous demande pas de confirmation.
Pourquoi choisir Unison plutôt que d'autres outils
| Outil | Type de synchronisation | Two-Way | GUI Disponible | Cas d'utilisation |
|---|---|---|---|---|
| rsync | Sens unique | ❌ | ❌ | Sauvegarde, miroir de serveur |
| Unisson | Bidirectionnel | ✅ | ✅ (GTK) | Projets actifs sur les machines |
Pensées finales
Unison est un outil léger mais puissant pour quiconque a besoin de maintenir la cohérence entre plusieurs machines Linux. Contrairement aux outils à sens unique tels que rsync, il vous permet de synchroniser les fichiers dans les deux sens en toute sécurité, évitant les écrasements accidentels et la perte de fichiers.