GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie wird ein Befehl ausgeführt, wenn der Inhalt eines Verzeichnisses aktualisiert wird?

Es gibt ein Verzeichnis A deren Inhalte häufig von anderen Personen geändert werden.

Ich habe ein persönliches Verzeichnis B erstellt wo ich alle Dateien aufbewahre, die jemals in A waren .

Derzeit führe ich nur gelegentlich rsync aus um die zu sichernden Dateien von A abzurufen zu B . Allerdings befürchte ich die Möglichkeit, dass einige Dateien in A hinzugefügt werden , und dann aus A entfernt bevor ich die Chance bekomme, sie nach B zu kopieren .

Was ist der beste Weg, um dies zu verhindern? Im Idealfall möchte ich, dass mein aktuelles Sicherungsskript jedes Mal ausgeführt wird, wenn der Inhalt von A zieh dich um.

Akzeptierte Antwort:

Wenn Sie inotify-tools installiert haben, können Sie inotifywait verwenden um eine Aktion auszulösen, wenn in eine Datei oder ein Verzeichnis geschrieben wird:

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

Wo der -qq Schalter ist völlig still, -r ist rekursiv (falls erforderlich) und -e ist das zu überwachende Ereignis, in diesem Fall modify . Von man inotifywait :

ändern
Es wurde in eine überwachte Datei oder eine Datei in einem überwachten Verzeichnis geschrieben.


Linux
  1. Wie erhalte ich eine Anzahl von Dateien in einem Verzeichnis über die Befehlszeile?

  2. Wie erhält man die Md5-Summe des Inhalts eines Verzeichnisses als eine Summe?

  3. So erhalten Sie die Verzeichnisgröße in Linux

  4. So führen Sie den Befehl „find“ nur im aktuellen Verzeichnis und nicht in Unterverzeichnissen aus

  5. Wie führe ich ein Shell-Skript aus, wenn sich eine Datei oder ein Verzeichnis ändert?

So erhalten Sie die Größe eines Verzeichnisses in Linux

So entfernen Sie ein Verzeichnis in Linux

So erhalten Sie die Größe eines Verzeichnisses in Linux

So führen Sie Linux-Befehle im Hintergrund aus

So führen Sie alle Skripte in einem Verzeichnis unter Linux aus

So zählen Sie Dateien im Verzeichnis unter Linux