Hi,
ich möchte ein Verzeichnis überwachen.
Und zwar soll in kurzen Abständen (0.2s .. 1s) geprüft werden, ob
- eine neue Datei hinzugekommen ist
- eine Datei geändert wurde
- eine Datei gelöscht wurde
Ich schrieb ein Skript, das das Verzeichnis ausliest, sortiert und mit dem vorherigen Stand dateiweise vergleicht.
Problem: bei sehr vielen Dateien (ca. 1000) wurde die CPU merklich belastet.
Mein zweites Skript las das Verzeichnis aus und verglich nur, ob sich die Anzahl geändert hat. Das belastete kaum noch die CPU, aber es wurde nicht mehr erkannt, ob eine Datei umbenannt wurde.
Ob es effektiver wäre, eine (einfache) Quersumme für jede Datei zu berechnen und diese zu addieren?
(Statt die Dateien zu sortieren und einzeln zu vergleichen.)
Fällt Euch eine Idee ein, wie man das noch überprüfen kann?
Es muß nur ein Bool-Wert übergeben werden. (Änderung: ja/nein)
Mein Grundansatz zum Auslesen ist folgender.
Ob es eine andere Möglichkeit gibt, weiß ich nicht.
use Cwd;
opendir(DIR, cwd);
my @dirlist = readdir(DIR);
closedir(DIR);