Überwachung mit inotify auf vollstände erstellte Dateien

FatManStanding

Lieutenant
Registriert
Aug. 2021
Beiträge
670
Hi,

ich möchte einen Ordner überwachen und wenn darin eine Datei vollständig geschrieben wurde diese verschieben. Inotify "reagiert" aber nur auf scheinbar tempräre Dateien, nicht auf die finale Datei. Wenn ich die Datei "aaa.mkv" verschieben will wird mit angezeigt

Die Datei /home/pi/.aaa.mkv.TPeM8q wurde gerade erstellt.

Weder ist die richtige Datei eine versteckte Datei (Punkt am Anfang), noch gibt es diese Zeichenkette nach der Dateierweiterung. Ich vermute das ist eine Art temopäre (zwischengespeicherte) Datei? Wie kann ich mit inotify nur auf die finale Version, wenn diese komplett geschrieben wurde, reagieren?
 
Weiterhelfen kann ich dir nicht wirklich, hatte das gleiche Problem mal mit systemd Path, wenn du weißt welchem Muster die Datei entspricht könntest du im nächsten schritt darauf prüfen. Die Datei die du siehst wird ja wahrscheinlich nach erfolgreichem schreiben umbenannt zum richtigen Namen oder?
 
Hi,

wie hast Du denn die Datei verschoben? mv oder mit einem Dateimanager?
 
  • Gefällt mir
Reaktionen: AlphaKaninchen
Mit einem Script und inotifywait. Wo du dann Dateinamen filterst, die diesen Event auslösen. Alle versteckten ignorieren zum Beispiel.
 
FatManStanding schrieb:
Hi,

ich möchte einen Ordner überwachen und wenn darin eine Datei vollständig geschrieben wurde diese verschieben. Inotify "reagiert" aber nur auf scheinbar tempräre Dateien, nicht auf die finale Datei. Wenn ich die Datei "aaa.mkv" verschieben will wird mit angezeigt
Ob ein File vollständig geschrieben wurde kann nur die Anwendung wissen die dieses File erstellt.
Eine mögliche Heuristik für fertig geschrieben wäre das kein Prozess mehr dieses File in Benutzung hat, z.b. via:
ls -l /proc/[0-9]/fd/

Oder du hast das falsch aufgerufen:
Code:
$ inotifywait  -m /tmp
Setting up watches.
Watches established.
/tmp/ OPEN,ISDIR 
/tmp/ ACCESS,ISDIR 
/tmp/ ACCESS,ISDIR 
/tmp/ CLOSE_NOWRITE,CLOSE,ISDIR 
/tmp/ DELETE a
/tmp/ CREATE a
/tmp/ OPEN a
/tmp/ MODIFY a
/tmp/ MODIFY a
/tmp/ MODIFY a
/tmp/ MODIFY a
/tmp/ MODIFY a
/tmp/ MODIFY a
/tmp/ MODIFY a
/tmp/ MODIFY a
/tmp/ MODIFY a
/tmp/ MODIFY a
/tmp/ CLOSE_WRITE,CLOSE a
/tmp/ MOVED_FROM a
/tmp/ MOVED_TO b

/tmp/ OPEN,ISDIR 
/tmp/ ACCESS,ISDIR 
/tmp/ ACCESS,ISDIR 
/tmp/ CLOSE_NOWRITE,CLOSE,ISDIR 
/tmp/ DELETE b
/tmp/ CREATE a
/tmp/ OPEN a
/tmp/ MODIFY a
/tmp/ CLOSE_WRITE,CLOSE a
/tmp/ OPEN a
/tmp/ MODIFY a
/tmp/ CLOSE_WRITE,CLOSE a
/tmp/ OPEN a
/tmp/ MODIFY a
/tmp/ CLOSE_WRITE,CLOSE a
/tmp/ OPEN a
/tmp/ MODIFY a
/tmp/ CLOSE_WRITE,CLOSE a
/tmp/ OPEN a
/tmp/ MODIFY a
/tmp/ CLOSE_WRITE,CLOSE a
/tmp/ OPEN a
/tmp/ MODIFY a
/tmp/ CLOSE_WRITE,CLOSE a
/tmp/ OPEN a
/tmp/ MODIFY a
/tmp/ CLOSE_WRITE,CLOSE a
/tmp/ OPEN a
/tmp/ MODIFY a
/tmp/ CLOSE_WRITE,CLOSE a
/tmp/ OPEN a
/tmp/ MODIFY a
/tmp/ CLOSE_WRITE,CLOSE a
/tmp/ OPEN #51
/tmp/ CLOSE_WRITE,CLOSE #51
/tmp/ OPEN a
/tmp/ MODIFY a
/tmp/ CLOSE_WRITE,CLOSE a
/tmp/ MOVED_FROM a
/tmp/ MOVED_TO b
 
Zuletzt bearbeitet:
FatManStanding schrieb:
Wenn ich die Datei "aaa.mkv" verschieben will
Womit verschiebst Du denn die Datei? Das ist gängige Praxis (und technisch auch nicht anders möglich), wenn die Datei über Dateisystem- oder Laufwerksgrenzen hinweg verschoben wird. Darum scheitert auch der 'mv' Befehl in solch einem Fall.
 
Zurück
Oben