fswatch – Surveille les modifications de fichiers et de répertoires dans Linux

fswatch est un moniteur de changement de fichiers multiplateforme qui reçoit des alertes de notification lorsque le contenu des fichiers ou des répertoires spécifiés est modifié ou altéré.

Il exécute quatre types de moniteurs sur différents systèmes d’exploitation tels que :

  1. A monitor build on the File System Events API of Apple OS X.
  2. A monitor based on kqueue, a notification interface present in FreeBSD 4.1 also supported on many *BSD systems, OS X inclusive.
  3. A monitor based on File Events Notification API of the Solaris kernel plus its spin-offs.
  4. A monitor based on inotify, a kernel subsystem that shows file system modifications to apps.
  5. A monitor based on ReadDirectoryChangesW, a Windows API that records alters to a directory.
  6. A monitor that regularly check that status of file system, keeps file modification times in memory, and manually determine file system changes (which works anywhere, where stat can be used).

Caractéristiques de fswatch

  1. Prise en charge de plusieurs API spécifiques à un système d’exploitation
  2. Permet la surveillance récursive des répertoires
  3. Effectue un filtrage de chemin en utilisant des expressions régulières d’inclusion et d’exclusion
  4. Prise en charge du format d’enregistrement personnalisable
  5. De plus, il prend en charge les événements d’inactivité périodiques

Comment installer fswatch dans les systèmes Linux

Malheureusement, le paquet fswatch n’est pas disponible pour être installé à partir des dépôts système par défaut dans les distributions Linux. La seule façon d’installer la dernière version de fswatch est de le compiler à partir de l’archive source comme indiqué dans les instructions d’installation suivantes.

Tout d’abord, récupérez la dernière archive tar fswatch en utilisant la commande wget suivante et installez-la comme indiqué :

$ wget https://github.com/emcrisostomo/fswatch/releases/download/1.9.3/fswatch-1.9.3.tar.gz
$ tar -xvzf fswatch-1.9.3.tar.gz
$ cd fswatch-1.9.3
$ ./configure
$ make
$ sudo make install 

Important : Assurez-vous d’avoir GNU GCC (compilateur C et C++) et les outils de développement (build-essential sur Debian/Ubuntu) installés sur le système avant de compiler fswatch à partir de la source. Si ce n’est pas le cas, installez-le en utilisant la commande suivante sur vos distributions Linux respectives.

# yum group install 'Development Tools'		[On CentOS/RHEL]
# dnf group install 'Development Tools'		[On Fedora 22+ Versions]
$ sudo apt-get install build-essential          [On Debian/Ubuntu Versions]

Sur les distributions Debian/Ubuntu, vous pourriez rencontrer l’erreur suivante lors de l’exécution de la commande fswatch..

fswatch: error while loading shared libraries: libfswatch.so.6: cannot open shared object file: No such file or directory

Pour corriger cela, vous devez exécuter la commande ci-dessous, cela permettra de rafraîchir les liens et le cache des bibliothèques dynamiques avant de pouvoir commencer à utiliser fswatch.

$ sudo ldconfig

Comment utiliser fswatch sous Linux?

La syntaxe générale pour exécuter fswatch est la suivante:

$ fswatch [option] [path]

Sous Linux, il est recommandé d’utiliser le moniteur inotify par défaut, vous pouvez lister les moniteurs disponibles en utilisant l’option -M ou - list-monitors:

$ fswatch -M
$ fswatch --list-monitors
fswatch – List Monitors

La commande ci-dessous vous permet de surveiller les modifications dans le répertoire courant (/home/tecmint), avec les événements envoyés en sortie standard toutes les 4 secondes.

L’option -l ou --latence vous permet de définir la latence en secondes, la valeur par défaut étant de 1 seconde.

$ fswatch -l 4 . 

La commande suivante surveille les modifications du fichier /var/log/auth.log toutes les 5 secondes:

$ fswatch -l 5 /var/log/auth.log

En utilisant l’option -t ou --horodatage affiche le horodatage pour chaque événement, pour afficher l’heure au format UTC, utilisez l’option -u ou --utf-time. Vous pouvez également formater l’heure en utilisant l’option -f ou --format-time :

$ fswatch --timestamp /var/log/auth.log

Ensuite, -x ou --drapeaux-evenement indique à fswatch d’afficher les drapeaux d’événement à côté du chemin de l’événement. Vous pouvez utiliser l’option –separateur-champ-evenement pour afficher les événements en utilisant un séparateur particulier.

$ fswatch --events-flags ~ /var/log/auth.log

Pour imprimer la valeur numérique d’un événement indiquant des modifications dans votre répertoire home et le fichier /var/log/auth.log, utilisez l’option -n ou --numeric comme ci-dessous :

$ fswatch --numeric ~ /var/log/auth.log 

Peut-être pouvez-vous consulter la page de manuel de fswatch pour des options d’utilisation détaillées et des informations :

$ man fswatch

Pour plus d’informations et d’utilisation, visitez le dépôt Github de fswatch : https://github.com/emcrisostomo/fswatch

Dans cet article, nous avons couvert un utilitaire de ligne de commande simple pour aider les utilisateurs Linux à être notifiés lorsque le contenu de fichiers spécifiés ou de hiérarchies de répertoires est modifié.

I hope all went well with the installation, if that is not the case for you, make an effort to reach us via the feedback form below. In addition, in case you have used it before, you may want to offer us some thoughts about your experience with fswatch.

Source:
https://www.tecmint.com/fswatch-monitors-files-and-directory-changes-modifications-in-linux/