Rekursiv das gesamte Dateisystem beobachten?

507
Mark Jeronimus

Für ein Softwareprojekt muss ich Dateisystemereignisse * von ganzen Dateisystemen unter Linux überwachen, von denen jedes problemlos aus mehr als 200.000 Verzeichnissen besteht. Wie kann ich das erreichen? (Ich habe es schon unter Windows zum Laufen gebracht)

Von dem, was ich sammle:

  • inotify kann nicht rekursiv beobachten und jedes Unterverzeichnis ausführlich zu überwachen, ist nicht durchführbar.
  • fanotify benachrichtigt keine Löschungen, Umbenennungen und Verschiebungen .

Für das, was es wert ist, verwende ich Ubuntu 16.04, bin root, und die Dateisysteme sind alle lokal (kein LAN / CIFS / etc).

Keine Änderungen am Betriebssystem - ein Benutzer sollte die Software herunterladen und ausführen können.

* erstellen, löschen, ändern, verschieben **.
** Anstelle von verschieben kann ich mit den darin enthaltenen Verzeichnissen arbeiten oder löschen / hinzufügen.

0
Idee: Verwenden Sie `ftrace 'oder ein anderes [Kernel Tracing Tool] (http://elinux.org/Kernel_Trace_Systems), um alle Anrufe in der Dateisystemebene zu erfassen, an der Sie interessiert sind. dirkt vor 6 Jahren 0
Erwägen Sie, ein LSM-Modul zu erstellen. Es ist möglicherweise etwas weniger schmerzhaft als das Schreiben eines vollständigen Dateisystems und führt zu weniger Kontextwechsel, verglichen mit FUSE. user1643723 vor 6 Jahren 0
Ich fürchte, Build-Time-Kernel-Module sind keine Option. Mark Jeronimus vor 6 Jahren 0

0 Antworten auf die Frage