GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire un comando quando il contenuto di una directory viene aggiornato?

C'è una directory A i cui contenuti vengono modificati frequentemente da altre persone.

Ho creato una directory personale B dove conservo tutti i file che sono mai stati in A .

Attualmente, eseguo solo occasionalmente rsync per ottenere i file di cui eseguire il backup da A a B . Tuttavia, temo la possibilità che alcuni file vengano aggiunti in A , e quindi rimosso da A prima che io abbia la possibilità di copiarli su B .

Qual è il modo migliore per evitare che ciò accada? Idealmente, vorrei che il mio attuale script di backup venisse eseguito ogni volta che il contenuto di A cambiati.

Risposta accettata:

Se hai installato inotify-tools puoi usare inotifywait per attivare un'azione se un file o una directory viene scritto in:

#!/bin/sh
dir1=/path/to/A/
while inotifywait -qqre modify "$dir1"; do
    /run/backup/to/B 
done

Dove il -qq l'interruttore è completamente silenzioso, -r è ricorsivo (se necessario) e -e è l'evento da monitorare, in questo caso modify . Da man inotifywait :

modifica
È stato scritto un file controllato o un file all'interno di una directory controllata.


Linux
  1. [Linux]:come escludere la directory quando si utilizza il comando shell "tar".

  2. Come ottenere un conteggio di file in una directory utilizzando la riga di comando?

  3. Come ottenere la somma Md5 dei contenuti di una directory come una somma?

  4. Come eseguire uno script di shell quando un file o una directory cambia?

  5. linux:come eseguire un comando in una determinata directory

Come ottenere la dimensione di una directory in Linux

Come rimuovere una directory in Linux

Come ottenere la dimensione di una directory in Linux

Come eseguire i comandi Linux in background

Come eseguire tutti gli script in una directory in Linux

Come contare i file nella directory su Linux