fswatch – Monitora Modificações em Arquivos e Diretórios no Linux

fswatch é um monitor de alterações de arquivos multiplataforma que recebe alertas de notificação quando o conteúdo dos arquivos ou diretórios especificados é alterado ou modificado.

Ele executa quatro tipos de monitores em diferentes sistemas operacionais, tais como:

  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).

Recursos do fswatch

  1. Suporta várias APIs específicas do sistema operacional
  2. Permite monitoramento de diretórios recursivo
  3. Realiza filtragem de caminho usando expressões regulares de inclusão e exclusão
  4. Suporta formato de registro personalizável
  5. Além disso, suporta eventos ociosos periódicos

Como instalar o fswatch em sistemas Linux

Infelizmente, o pacote fswatch não está disponível para instalação nos repositórios do sistema padrão em nenhuma distribuição Linux. A única maneira de instalar a versão mais recente do fswatch é compilando a partir do tarball de origem, conforme mostrado nas seguintes instruções de instalação.

Primeiro, baixe o último tarball do fswatch usando o seguinte comando wget e instale conforme mostrado:

$ 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 

Importante: Certifique-se de ter o GNU GCC (Compilador C e C++) e Ferramentas de Desenvolvimento (build-essential no Debian/Ubuntu) instalados no sistema, antes de compilar o fswatch a partir da fonte. Se não tiver, instale usando o seguinte comando em suas respectivas distribuições Linux.

# 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]

Nas distribuições Debian/Ubuntu, você pode obter o seguinte erro ao executar o comando fswatch..

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

Para corrigir isso, você precisa executar o comando abaixo, isso ajudará a atualizar os links e o cache das bibliotecas dinâmicas antes de começar a usar o fswatch.

$ sudo ldconfig

Como usar o fswatch no Linux?

A sintaxe geral para executar o fswatch é:

$ fswatch [option] [path]

No Linux, é recomendado que você use o monitor padrão inotify, você pode listar os monitores disponíveis empregando a opção -M ou - list-monitors:

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

O comando abaixo permite que você observe as alterações no diretório atual (/home/tecmint), com eventos sendo entregues à saída padrão a cada 4 segundos.

A opção -l ou –-latency permite que você defina a latência em segundos, sendo o padrão 1 segundo.

$ fswatch -l 4 . 

O próximo comando monitora as alterações no arquivo /var/log/auth.log a cada 5 segundos:

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

Usando a opção -t ou --timestamp imprime o carimbo de tempo para cada evento, para imprimir o tempo no formato UTC, empregue a opção -u ou --utf-time. Você também pode formatar o tempo usando a opção -f ou --format-time format:

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

Em seguida, -x ou --event-flags diz ao fswatch para imprimir as bandeiras de evento ao lado do caminho do evento. Você pode usar a opção –event-field-seperator para imprimir eventos usando o separador específico.

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

Para imprimir o valor numérico de um evento indicando mudanças no seu diretório casa e no arquivo /var/log/auth.log, use a opção -n ou --numeric como abaixo:

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

Talvez você possa consultar a página do manual do fswatch para opções de uso e informações detalhadas:

$ man fswatch

Para mais informações e uso, visite o repositório Github do fswatch: https://github.com/emcrisostomo/fswatch

Neste post, cobrimos uma utilidade de linha de comando simples para ajudar os usuários do Linux a serem notificados quando o conteúdo de arquivos especificados ou hierarquias de diretórios são modificados.

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/