Paramétrage de lsyncd

Lsyncd est un programme permettant la synchronisation de répertoires grâce à rsync ou rsync+SSH. Il présente l'avantage d'une grande finesse de configuration grâce à son fichier de configuration utilisant le langage Lua.

Installation de lsyncd

sudo apt-get install lsyncd

Création du fichier de configuration

Par défaut aucun fichier de configuration n'est créé après l'installation. Il convient donc de commencer par cela.
sudo mkdir /etc/lsyncd # création du répertoire lsyncd dans /etc
sudo touch /etc/lsyncd/lsyncd.conf.lua #création du fichier de configuration
Ensuite, nous pouvons passer à la rédaction du fichier de configuration. Dans le cadre simple d'une synchronisation de répertoire, seules 5 directives sont nécessaires :
sync{} encadre toutes nos directives de synchronisation
default.direct demande à lsyncd d'utiliser les commandes systèmes rsync ou rsync et ssh
source répertoire que l'on souhaite surveiller
target répertoire cible à synchroniser
delete configuration de la suppression de fichier (true|false|startup|running)
Par exemple, pour mon fichier de configuration j'obtiens ceci :
sync {
   default.rsync,
   source = "/home/laetitia/Documents/emploi",
   target = "/media/laetitia/QuickyBlue/emploi",
   delete = true,
   rsync     = {
   owner = true,
   group = true
   }
Si vous souhaitez ajouter d'autres répertoires à synchroniser, il suffira d'ajouter des directives sync similaires à celle de l'exemple ci-dessus.

Création d'un service de synchronisation

Pour Rappel notre objectif est que l'événement déclencheur de la synchronisation soit le branchement d'une clé usb précise. L’exécution de notre daemon doit donc être conditionné au montage du système de fichier. Pour y parvenir on s'appuiera sur systemd. Nous allons donc créer un service dédié qui va lancer la synchronisation paramétrée dans la partie précédente.

Prérequis

Avant de commencer la rédaction du service il nous faut récupérer des variables liées à la clé usb que nous avons choisi pour la synchronisation. Après avoir monté la clé, lançons la commande :
sudo systemctl list-units -t mount
nous obtientons alors un résultat sur 4 colonnes UNIT LOAD ACTIVE SUB DESCRIPTION Je vous laisse chercher la ligne utile en comparant le champs "description" avec le point de montage de votre clé. Vous devez conserver la valeur de a colonne UNIT. Deuxièmement on exécute la commande suivante avec le système de fichier monté
sudo blkid
et on conserve la valeur UUID. Maintenant nous avons toutes les informations nécessaires pour rédiger le fichier service.

Création du fichier service

On crée un fichier service avec l'extension .service dans le répertoire /etc/systemd/system/
cd /etc/systemd/system/
sudo nano /etc/systemd/system/syncemploi.service
Je vous montre l'exemple de ma configuration
[Unit]
 Description=Synchronisation emploi
 After=media-laetitia-QuickyBlue.mount
 BindsTo=media-laetitia-QuickyBlue.mount

[Service]
 ExecStart=/usr/bin/lsyncd --nodaemon /etc/lsyncd/lsyncd.conf.lua

[Install]
 WantedBy=media-laetitia-QuickyBlue.mount
Attention, l’exécution de lyncd doit s’arrêter au démontage du système de fichier. on utilise la valeur de la colonne UNIT pour nommer le fichier auquel on ajoute l'extension .mount.
sudo nano /etc/systemd/system/media-laetitia-QuickyBlue.mount
Mon fichier resemble à cela.
[Unit]
 DefaultDependencies=no
 Conflicts=umount.target
 Before=umount.target
 StopWhenUnneeded=true

[Mount]
 What=/dev/disk/by-uuid/361D-25A6
 Where=/media/laetitia/QuickyBlue

3. Mise en production

Pour terminer, nous n'avons plus qu'à lancer notre service.

Activation du service

sudo systemctl enable /etc/systemd/system/syncemploi.service

Démarrage du service

sudo systemctl start /etc/systemd/system/syncemploi.service

Vérification du fonctionnement

sudo systemctl status /etc/systemd/system/syncemploi.service