Solution Miroir - lsyncd
Prérequis¶
- Une machine tournant sous Rocky Linux
- Pourvoir modifier des fichiers de configuration depuis la ligne de commande
- Connaissance de l'utilisation d'un éditeur de ligne de commande (nous utilisons
vi
ici, mais n'hésitez pas à le remplacer par votre éditeur favori.) - Vous aurez besoin d'un accès
root
ou de privilèges supplémentaires grâce àsudo
(utilisersudo -s
dès le début est une bonne idée) - Paire de clés SSH publiques et privées
- Les dépôts EPEL (Extra Packages for Enterprise Linux) de Fedora
- Vous devrez être familier avec inotify, un interface de suivi des événements
- Facultatif : familiarité avec l'outil tail
Introduction¶
Si vous souhaitez synchroniser automatiquement des fichiers et des dossiers entre ordinateurs, lsyncd
est une excellente solution. Mais vous devez tout configurer depuis la ligne de commande.
C'est un programme qui vaut la peine d'être appris pour tout administrateur système.
La meilleure description de lsyncd
, vient de sa propre page de manuel — man lsyncd
. Légèrement paraphrasé, lsyncd
est une solution de miroir live qui n'est pas difficile à installer. Il ne nécessite pas de nouveaux systèmes de fichiers ou périphériques en mode bloc et ne nuit pas aux performances du système de fichiers local. En bref, il duplique les fichiers.
lsyncd
surveille l'interface du moniteur d'événements d'une arborescence de répertoires locale (inotify
). Il agrège et combine les événements pendant quelques secondes et génère un (ou plusieurs) processus pour synchroniser les modifications. Par défaut, il s'agit de rsync
.
Pour les besoins de ce guide, vous appellerez le système contenant les fichiers originaux la « source » et celui avec lequel vous effectuez la synchronisation sera la « cible ». En utilisant lsyncd
, vous pouvez mettre en miroir complètement un serveur en spécifiant soigneusement les répertoires et les fichiers que vous souhaitez synchroniser.
Pour la synchronisation à distance, vous pouvez également configurer les Paires de clé privée-publique SSH de Rocky Linux. Les exemples utilisent ici SSH (port 22).
Installation de lsyncd
¶
L'installation de lsyncd
se fait de deux manières. Vous trouverez des descriptions de chaque méthode dans ce qui suit. Le RPM a tendance à prendre un peu de retard par rapport aux paquets sources, mais la différence devrait rester gérable. La version installée par la méthode RPM au moment de la rédaction de cet article est la 2.2.3-5, tandis que la version du code source est désormais la 2.3.1. Choisissez la méthode avec laquelle vous vous sentez le plus à l’aise.
Installation de lsyncd
– Méthode RPM¶
L'installation par la méthode RPM est plutôt facile. La seule chose que vous devriez installer en premier est le référentiel logiciel EPEL de Fedora. Pour ce faire :
dnf install -y epel-release
Installez maintenant lsyncd
avec toutes les dépendances manquantes :
dnf install lsyncd
Configurez le service pour qu'il soit lancé au cours du démarrage du système, mais ne le démarrez pas tout de suite :
systemctl enable lsyncd
Installation de lsyncd
– Méthode utilisant les sources¶
L'installation à partir des sources n'est pas difficile.
Installation les dépendances¶
Vous aurez besoin de certaines dépendances pour lsyncd
et pour créer des packages à partir des sources. Utilisez cette commande sur votre machine Rocky Linux pour vous assurer que vous avez les dépendances nécessaires. Si vous allez construire à partir des sources, c'est une bonne idée d'installer tous les outils de développement :
dnf groupinstall 'Development Tools'
Avertissement concernant Rocky Linux 9.0
lsyncd
a été entièrement testé avec Rocky Linux 9.0 et devrait fonctionner comme prévu. Pour que toutes les dépendances nécessaires soient installées, vous devrez cependant activer un dépôt supplémentaire :
dnf config-manager --enable crb
Effectuer ces neuf étapes avant les étapes suivantes vous permettra de terminer la construction sans revenir en arrière.
Voici les dépendances nécessaires pour lsyncd
:
dnf install lua lua-libs lua-devel cmake unzip wget rsync
Télécharger les Sources et Construire lsyncd
¶
Ensuite, vous avez besoin du code source :
wget https://github.com/axkibe/lsyncd/archive/master.zip
Décompressez le fichier master.zip
:
unzip master.zip
Cela créera un répertoire appelé lsyncd-master
. Vous devez accéder à ce répertoire et créer un répertoire appelé build
:
cd lsyncd-master
Puis :
mkdir build
Changez de répertoire pour accéder au répertoire de construction build
:
cd build
Exécutez les commandes suivantes :
cmake ..
make
make install
Une fois terminé, vous aurez le binaire lsyncd
installé et prêt à être utilisé dans /usr/local/bin
lsyncd
Systemd Service¶
Avec la méthode d'installation RPM, le service systemd sera installé automatiquement, mais si vous l'installez à partir de la source, vous devrez créer le service systemd. Bien que vous puissiez démarrer le binaire sans le service systemd, vous devrez vous assurer qu'il est lancé automatiquement au démarrage du système. Sinon, un redémarrage du serveur arrêtera votre effort de synchronisation. Si vous oubliez de le redémarrer manuellement, cela posera problème !
La création du service systemd
n'est pas très difficile et vous fera gagner beaucoup de temps à long terme.
Créer le fichier du service lsyncd
¶
Vous pouvez créer ce fichier n'importe où, même dans le répertoire root
de votre serveur. Une fois qu'il est créé, vous pouvez facilement le déplacer au bon endroit.
vi /root/lsyncd.service
Le contenu de ce fichier sera le suivant :
[Unit]
Description=Live Syncing (Mirror) Daemon
After=network.target
[Service]
Restart=always
Type=simple
Nice=19
ExecStart=/usr/local/bin/lsyncd -nodaemon -pidfile /run/lsyncd.pid /etc/lsyncd.conf
ExecReload=/bin/kill -HUP $MAINPID
PIDFile=/run/lsyncd.pid
[Install]
WantedBy=multi-user.target
Installez le fichier que vous venez de créer à l'emplacement adéquat :
install -Dm0644 /root/lsyncd.service /usr/lib/systemd/system/lsyncd.service
Enfin, rechargez le démon de systemctl
pour que systemd "prenne en compte" le nouveau fichier service :
systemctl daemon-reload
Configuration de lsyncd
¶
Quelle que soit la méthode d'installation de lsyncd
, vous aurez besoin d'un fichier de configuration : /etc/lsyncd.conf. La section suivante vous indiquera comment construire un fichier de configuration et le tester.
Exemple de configuration à tester¶
Voici un exemple de fichier de configuration simpliste qui synchronise /home avec un autre ordinateur. Notre machine cible aura une adresse IP locale : 192.168.1.40
settings {
logfile = "/var/log/lsyncd.log",
statusFile = "/var/log/lsyncd-status.log",
statusInterval = 20,
maxProcesses = 1
}
sync {
default.rsyncssh,
source="/home",
host="root@192.168.1.40",
excludeFrom="/etc/lsyncd.exclude",
targetdir="/home",
rsync = {
archive = true,
compress = false,
whole_file = false
},
ssh = {
port = 22
}
}
Décomposons un peu ces commandes :
- Les fichiers
logfile
etstatusFile
seront automatiquement créés au démarrage du service. - La variable
statusInterval
représente le nombre de secondes à attendre avant d'écrire dans le fichierstatusFile
. maxProcesses
est le nombre de processus que le servicelsyncd
est autorisé à créer. À moins que vous ne l'exécutiez sur une machine super occupée, un seul processus suffit.- Dans la section de synchronisation
default.rsyncssh
il est indiqué d'utiliserrsync
en combinaison avecssh
- La variable
source=
indique le chemin du répertoire depuis lequel vous êtes en train de synchroniser - La variable
host=
contient notre machine cible vers laquelle nous sommes en train de synchroniser - La variable
excludeFrom=
indique àlsyncd
où se trouve le fichier d'exclusions. Elle doit exister, mais elle peut très bien être vide. - La variable
targetdir=
indique le répertoire cible vers lequel vous envoyez des fichiers. Cela sera généralement égal à la source, mais pas toujours. - Ensuite, nous avons la section
rsync=
qui contient les options avec lesquelles nous exécutonsrsync
. - La variable
ssh=
indique le port SSH qui est en train d'écouter sur la machine cible
Si vous ajoutez plusieurs répertoires à synchroniser, vous devez répéter toute la section sync
, y compris toutes les parenthèses ouvrantes et fermantes pour chaque répertoire.
Le fichier lsyncd.exclude
¶
Comme indiqué précédemment, le fichier excludeFrom
doit exister. Créez ce fichier comme suit :
touch /etc/lsyncd.exclude
Par exemple, si vous synchronisez le dossier /etc
sur votre ordinateur, il y aura de nombreux fichiers et répertoires que vous souhaiterez exclure du processus lsyncd
. Chaque fichier ou répertoire exclu se trouve dans le fichier, un par ligne :
/etc/hostname
/etc/hosts
/etc/networks
/etc/fstab
Test et Lancement du Service lsyncd
¶
Maintenant que tout le reste est mis en place, vous pouvez tester l'ensemble. Assurez-vous que le service systemd lsyncd.service
va bien démarrer :
systemctl start lsyncd
Si aucune erreur n'apparaît après l'exécution de cette commande, vérifiez l'état du service simplement pour vous assurer :
systemctl status lsyncd
Si le service est en cours d'exécution, utilisez tail pour voir les extrémités des deux fichiers journaux et assurez-vous que tout s'affiche correctement :
tail /var/log/lsyncd.log
tail /var/log/lsyncd-status.log
En supposant que tout cela semble correct, accédez au répertoire /home/[user]
, où [user]
est un utilisateur sur l'ordinateur et créez un fichier avec la commande touch.
touch /home/[user]/testfile
Allez sur la machine cible et vérifiez si le fichier apparaît. Si tel est le cas, tout fonctionne comme il se doit. Réglez le service lsyncd.service
pour qu'il soit lancé automatiquement au démarrage du système avec :
systemctl enable lsyncd
N’oubliez Pas d'être Prudent¶
Chaque fois que vous synchronisez un ensemble de fichiers ou de répertoires avec un autre ordinateur, réfléchissez bien à son effet sur l’ordinateur cible. Supposons que vous reveniez au fichier lsyncd.exclude dans l'exemple ci-dessus, pouvez-vous imaginer ce qui pourrait arriver si vous ne parveniez pas à exclure /etc/fstab ?
fstab
est le fichier qui configure les périphériques de stockage sur n'importe quel ordinateur Linux. Les disques et les étiquettes sont différents selon les machines. Le prochain redémarrage de l’ordinateur cible échouera probablement complètement.
Conclusion et Références¶
lsyncd
est un outil efficace pour la synchronisation des répertoires entre machines. Comme vous avez pu le constater, il est plutôt facile à installer et il n’est pas difficile à entretenir par la suite.
Vous pouvez en savoir plus sur lsyncd
en allant sur le Site Officiel
Author: Steven Spencer
Contributors: Ezequiel Bruni, tianci li, Ganna Zhyrnova