Vai al contenuto

Compilare e installare

Eseguire le seguenti operazioni nel server. Nel vostro ambiente, alcuni pacchetti dipendenti potrebbero essere mancanti. Installali utilizzando: 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

Aggiungi la variabile di ambiente PATH, scrivila al file di configurazione e lascia che abbia effetto in modo permanente.

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

Perché non utilizzare il pacchetto RPM inotify-tools dell'archivio EPEL? E il modo per usare il codice sorgente per compilare e installare?

L'autore ritiene personalmente che la trasmissione di dati a distanza sia una questione di efficienza, soprattutto in un ambiente di produzione, dove ci sono un gran numero di file da sincronizzare e un singolo file è particolarmente grande. Inoltre, la nuova versione avrà alcune correzioni di bug e espansioni delle funzioni, e forse l'efficienza di trasmissione della nuova versione sarà maggiore, quindi vi consiglio di installare inotify-tools dal codice sorgente. Naturalmente, questo è il suggerimento personale dell'autore, non tutti gli utenti lo devono seguire.

Regolazione dei parametri del kernel

È possibile regolare i parametri del kernel in base alle esigenze dell'ambiente di produzione. Per impostazione predefinita, ci sono tre file in /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-dimensione massima della coda del monitor, predefinita 16384
  • max_user_instances-il numero massimo di istanze di monitoraggio, il valore predefinito è 128
  • max_user_watches-il numero massimo di file monitorati per istanza, il valore predefinito è 8192

Scrivi alcuni parametri e valori in /etc/sysctl.conf, gli esempi sono i seguenti. Quindi usa sysctl -p per rendere i file effettivi

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

Comandi correlati

Lo strumento inotify-tools ha due comandi, chiamati:

  • inotifywait: per il monitoraggio continuo, risultati in tempo reale. È generalmente usato con lo strumento di backup incrementale rsync. Poiché si tratta di un monitoraggio del file system, può essere utilizzato con uno script. Introdurremo lo script specifico in un secondo momento.

  • inotifywatch: per il monitoraggio a breve termine, risultati in uscita dopo il completamento dell'attività.

inotifywait ha principalmente le seguenti opzioni:

-m significa monitoraggio continuo
-r Monitoraggio ricorsivo
-q Semplificare le informazioni di output
-e specifica il tipo di evento di dati di monitoraggio, più tipi di eventi sono separati da virgole nello stato inglese

I tipi di eventi sono i seguenti:

Tipo di evento Descrizione
access Accesso al contenuto di un file o di una directory
modify I contenuti del file o della directory vengono scritti
attrib Gli attributi del file o della directory vengono modificati
close_write Il file o la directory viene aperto in modalità scrivibile e quindi chiuso
close_nowrite Il file o la directory è chiuso dopo essere stato aperto in modalità di sola lettura
close Indipendentemente dalla modalità lettura/scrittura, il file o la directory viene chiuso
open Il file o la directory è aperto
moved_to Un file o una directory è spostato nella directory monitorata
moved_from Un file o una directory viene spostato dalla directory monitorata
move Ci sono file o cartelle che vengono spostati o rimossi dalla directory di monitoraggio
move_self Il file o la directory monitorati sono stati spostati
create Ci sono file o directory create nella directory monitorata
delete Viene eliminato un file o una directory nella directory monitorata
delete_self Il file o la directory sono stati eliminati
unmount File system contenente file o directory non montati

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

Dimostrazione del comando inotifywait

Digitare il comando nel primo terminale pts/0, e la finestra viene bloccata dopo aver premuto Invio, indicando che sta monitorando

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

Nel secondo terminale pts/1, vai nella directory /rsync/ e crea un file.

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

Torna al primo terminale pts/0, le informazioni di output sono le seguenti:

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

Combinazione di inotifywait and rsync

Suggerimento!

Stiamo operando nel server Rocky Linux 8, utilizzando il protocollo SSH per la dimostrazione.

Per il login di autenticazione senza password del protocollo SSH, si prega di fare riferimento a rsync accesso di autenticazione senza password, che non è descritto qui. Un esempio del contenuto di uno script bash è il seguente. È possibile aggiungere diverse opzioni dopo il comando in base alle esigenze per soddisfare le vostre esigenze. Ad esempio, puoi anche aggiungere --delete dopo il comando 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 &

Suggerimento!

Quando si utilizza il protocollo SSH per la trasmissione della sincronizzazione dei dati, se la porta di servizio SSH della macchina di destinazione non è la 22, puoi usare un metodo simile a questo—— b="/usr/bin/rsync -avz -e 'ssh -p [port-number]' /rsync/* testfedora@192. 68.100.5:/home/testfedora/"

Suggerimento!

Se vuoi avviare questa script all'avvio [root@Rocky ~]# echo "bash /root/rsync_inotify. h &" >> /etc/rc.local [root@Rocky ~]# chmod +x /etc/rc.local

Se si sta utilizzando il protocollo rsync per la sincronizzazione, è necessario configurare il servizio rsync della macchina di destinazione, fare riferimento a rsync demo 02, rsync file di configurazione, accesso senza autenticazione segreta rsync

Author: tianci li

Contributors: Steven Spencer, Ganna Zhyrnova