Du kannst in Linux Systemen die Veränderungen an Dateien im Dateisystem mit inotify überwachen.
Um, sobald Dateien verändert wurden ein .tar.gz-Archiv zur Datensicherung zu erstellen oder die veränderte Datei auf einen anderen Server hochladen, oder auch an ein Filter / Beautifier zu übergeben oder auch einfach nur um auf meinem NAS eine LED anschalten ist inotify das Werkzeug auf das alle die es noch nicht kennen gewartet haben.
Ich bin schon vor einigen Jahren auf ein Problem gestoßen für das inotify die richtige Lösung gewesen wäre. Damals konnte ich nir nur eine Endlosschleife schreiben die immer wieder alle Dateien in meinen Verzeichnissen durchgegangen ist, keine schöne Lösung und endlose Festplattenzugriffe.
Diese Endlosschleife gefiel meinem damaligen Provider garnicht, da diese zu häufig auf die zu überwachenden Dateien Zugriff und die Festplatten am einschlafen hinderten und die Lebensdauer der Festplatten reduzierte.
Damals konnte ich die Schleife einfach mit einer längeren pause() zügeln, bin bald auf einen Cronjob gewechselt der noch seltener lief.
Auf meines eigenen NAS und meinen eigenen Servern bin ich jedoch nicht auf eine Schleife oder Cronjobs angewiesen! Mit einem Inotify Event kann ich die Änderungen direkt im Dateisystem abpassen und die gewünschte Anktion direkt nach der änderung starten.
apt install inotify-tools
Inotify-Events | |
---|---|
Kürzel | Format |
ACCESS | Zugriff auf die Datei |
ATTRIB | Metadaten geändert |
CLOSE_WRITE | zum Schreiben geöffnete Datei geschlossen, sie muss nicht geändert worden sein |
CLOSE_NOWRITE | Eine Datei wurde geschlossen nachdem sie schreibgeschützt geöffnet wurde |
CREATE | Neue Datei angelegt |
DELETE | Datei gelöscht |
DELETESELF | Überwachtes Verzeiuchnis gelöscht |
MODIFY | Datei modifiziert |
MODIFYSELF | Überwachtes Verzeichnis modifiziert |
MOVEDFROM | Datei aus dem überwachten Verzeichnis verschoben |
MOVEDTO | Datei in das überwachte Verzeichnis verschoben |
OPEN | Datei geöffnet |
inotifywait -mrq -e create --format %w%f /pfad/zum/verzeichnis/ | while read FILE
do
echo "neue Datei: $FILE"
done
Um zum Beispiel das WordPress Verzeichnises auf neue Dateien zu überwachen kann ich folgendes Snippet nutzen:
inotifywait -mrq -e create --format %w%f /home/customer/der_metzger/loteks_de/www/ | while read FILE;
do
echo "neue Datei: $FILE";
done
Dirch dieses Snippet werden alle im WordPressverzeichnis neu erstellten Dateien ausgegeben.
In meinem Verzeichnis vor allem viele Dateien wp-content/temp-write-test-1492771373. (Die Zahl an ende ändert sich bei jedem Aufruf)
Jedoch werden auch alle Updates, Uploads, Plugin und Theme Installationen und auch all die neuen Dateien an die ich grade nicht denke.
Um herauszufinden welche Dateien „angefasst“ werden wird nur der Parameter „-e create“ auf „-e access“ geändert:
inotifywait -mrq -e access --format %w%f /pfad/zum/verzeichnis/ | while read FILE
do
echo "zugriff auf Datei: $FILE"
done
Inotify ist unter Linux ein sehr nützliches Werkzeug, auch für die Fehleranalyse. 😉