Aller au contenu

Compiler et installer

Effectuez les opérations suivantes sur le serveur. Dans votre environnement, certains paquets dépendants peuvent être manquants. Installez les en utilisant : dnf -y install autoconf automake libtool

[root@Rocky ~]# wget -c https://github.com/inotify-tools/inotify-tools/archive/refs/tags/3.21.9.6.tar.gz
[root@Rocky ~]# tar -zvxf 3.21.9.6.tar.gz -C /usr/local/src/
[root@Rocky ~]# cd /usr/local/src/inotify-tools-3.21.9.6/
[root@Rocky /usr/local/src/inotify-tools-3.21.9.6]# ./autogen.sh && \
./configure --prefix=/usr/local/inotify-tools && \
make && \
make install
...
[root@Rocky ~]# ls /usr/local/inotify-tools/bin/
inotifywait inotifywatch

Ajouter la variable d'environnement PATH, l'écrire dans le fichier de configuration et laisser prendre effet définitivement.

[root@Rocky ~]# vim /etc/profile
...
PATH=$PATH:/usr/local/inotify-tools/bin/
[root@Rocky ~]# . /etc/profile

Pourquoi ne pas utiliser le paquet RPM inotify-tools du dépôt EPEL ? Ou bien procéder avec le code source pour compiler et installer ?

L'auteur estime que la transmission de données à distance est une question d'efficacité, en particulier dans un environnement de production, où il y a un grand nombre de fichiers à synchroniser et un seul fichier peut être particulièrement grand. De plus, la nouvelle version aura quelques corrections de bugs et des extensions de fonctions et peut-être l'efficacité de la transmission de la nouvelle version sera plus élevée, donc l'auteur recommande d'installer inotify-tools par code source. Bien sûr, c'est la préférence personnelle de l'auteur, les utilisateurs sont libres de leur choix.

Ajustement des paramètres du noyau

Vous pouvez ajuster les paramètres du noyau en fonction des besoins de l'environnement de production. Par défaut, il y a trois fichiers dans /proc/sys/fs/inotity/

[root@Rocky ~]# cd /proc/sys/fs/inotify/
[root@Rocky /proc/sys/fs/inotify]# cat max_queued_events ;cat max_user_instances ;cat max_user_watches
16384
128
28014
  • max_queued_events-maximum monitor queue size, default 16384
  • max_user_instances-the maximum number of monitoring instances, the default is 128
  • max_user_watches-the maximum number of files monitored per instance, the default is 8192

Enregistrer certains paramètres dans le fichier /etc/sysctl.conf comme dans les exemples suivants. Ensuite, utilisez sysctl -p pour que les fichiers soient pris en compte

fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

Commandes associées

L'outil inotify-tools a deux commandes, à savoir : * inotifywait : pour une surveillance continue, résultats de sortie en temps réel. Elle est généralement utilisée avec l'outil de sauvegarde incrémentiel rsync. Parce qu'il s'agit d'une surveillance du système de fichiers, la commande peut être utilisée dans un script. Nous présenterons le script spécifique plus tard. * inotifywatch : pour une surveillance à court terme, les résultats de sortie après que la tâche soit terminée.

inotifywait a principalement les options suivantes :

-m Surveillance continue
-r Surveillance Recursive
-q Simplifie information de sortie
-e Spécifie le type d'événement des données de surveillance, plusieurs types d'événements sont séparés par des virgules

Les types d'événements sont les suivants :

Type d'événement Observation
access Accès au contenu d'un fichier ou d'un répertoire
modifier Le contenu du fichier ou du répertoire est enregistré
attrib Les attributs du fichier ou du répertoire sont modifiés
close_write Le fichier ou le répertoire est ouvert en mode écriture puis fermé
close_nowrite Le fichier ou le répertoire est fermé après avoir été ouvert en mode lecture seule
close Indépendamment du mode lecture/écriture, le fichier ou le répertoire est fermé
open Le fichier ou répertoire est ouvert
moved_to Un fichier ou un répertoire est déplacé vers le répertoire surveillé
moved_from Un fichier ou un répertoire est déplacé du répertoire surveillé
move Il y a des fichiers ou répertoires qui sont déplacés ou supprimés du répertoire de surveillance
move_self Le fichier ou répertoire surveillé a été déplacé
create Il y a des fichiers ou répertoires créés dans le répertoire surveillé
delete Un fichier ou un répertoire dans le répertoire surveillé est supprimé
delete_self The file or directory has been deleted
unmount Système de fichiers contenant des fichiers ou des répertoires non montés

Exemple : [root@Rocky ~]# inotifywait -mrq -e create,delete /rsync/

Démonstration de la commande inotifywait

Tapez la commande dans le premier terminal pts/0 et, après avoir appuyé sur Entrée, la fenêtre est verrouillée indiquant qu'elle surveille

[root@Rocky ~]# inotifywait -mrq -e create,delete /rsync/

Dans le deuxième terminal pts/1, allez dans le répertoire /rsync/ et créez un fichier.

[root@Rocky ~]# cd /rsync/
[root@Rocky /rsync]# touch inotify

Retour au premier terminal pts/0, les informations de sortie sont les suivantes :

[root@Rocky ~]# inotifywait -mrq -e create,delete /rsync/
/rsync/ CREATE inotify

Combinaison de inotifywait et rsync

Astuce

Nous opérons sur le serveur Rocky Linux 8 en utilisant le protocole SSH pour la démonstration.

Pour l'authentification sans mot de passe du protocole SSH, veuillez vous référer à cet article. Un exemple du contenu d'un script bash est le suivant. Vous pouvez ajouter différentes options après la commande en fonction de vos besoins. Par exemple, vous pouvez ajouter --delete après la commande rsync.

#!/bin/bash
a="/usr/local/inotify-tools/bin/inotifywait -mrq -e modify,move,create,delete /rsync/"
b="/usr/bin/rsync -avz /rsync/* testfedora@192.168.100.5:/home/testfedora/"
$a | while read directory event file
    do
        $b &>> /tmp/rsync.log
    done
[root@Rocky ~]# chmod +x rsync_inotify.sh
[root@Rocky ~]# bash /root/rsync_inotify.sh &

Astuce

Lors de l'utilisation du protocole SSH pour la transmission de la synchronisation des données, si le port de service SSH de la machine cible n'est pas 22, vous pouvez utiliser une méthode similaire à cela —— b="/usr/bin/rsync -avz -e 'ssh -p [port-number]' /rsync/* testfedora@192. 68.100.5:/home/testfedora/"

Astuce

Si vous voulez lancer automatiquement ce script au démarrage [root@Rocky ~]# echo "bash /root/rsync_inotify. h &" >> /etc/rc.local [root@Rocky ~]# chmod +x /etc/rc.local

Si vous utilisez le protocole rsync pour la synchronisation, vous devez configurer le service rsync de la machine cible, veuillez vous référer à rsync demo 02, fichier de configuration rsync, connexion rsync automatique

Author: tianci li

Contributors: Steven Spencer, Ganna Zhyrnova