![]() |
Dateiänderungen protokollieren
Hallo,
ich möchte für ein gezieltes Backup protokollieren, welche Dateien in einem vorgegebenen Verzeichnis innerhalb eines bestimmten Zeitraums neu angelegt oder geändert wurden. Dafür habe ich auf ![]() |
AW: Dateiänderungen protokollieren
Wie wäre es stattdessen, beim Sichern das 'Archive'-Flag der Datei zurückzusetzen? Bei jeder Änderung wird das nämlich eh automatisch gesetzt.
Du musst also nur die Dateien berücksichtigen, bei denen das Archiv-Bit gesetzt ist. (Siehe 'FindFirst', Attribute und 'faArchive') Bezüglich deiner Frage: Ich habe mir beholfen, indem ich immer das Verzeichnis vergleiche. D.h. vorher vs. nachher. Nach dem Vergleich (also wenn das Event eingetreten ist), setze ich 'vorher := nachher'. Bei der nächsten Änderung/Event lese ich das Verzeichnis wieder ein, vergleiche usw. Es gibt bestimmt einfachere Möglichkeiten. Wenn Du aber ein Backup programmieren sollst, würde ich mir meine Alternativlösung mal anschauen. PS: Du kannst auch eine der anderen Lösungen auf Torry ausprobieren, dieser 'DirMonitor' wirbt ja gerade mit den Features, nach denen Du suchst'. Zitat:
|
AW: Dateiänderungen protokollieren
Weiterhin gibt es ja auch das Datum des letzten Zugriffs und für die letzte Änderung. Wenn da nicht "Touch" im Spiele ist, sollten diese Daten recht zuverlässig sein.
Gruß K-H |
AW: Dateiänderungen protokollieren
Zitat:
Zum Zeitpunkt der Änderung erstellst Du eine neue Liste, anschließend vergleichst Du die beisten Liste. Die Unterschiede in den Listen sind die Änderungen die zwischen dem Zeitpunkt der Erstellung der ersten Liste und dem Zeitpunkt der Erstellung der zweiten Liste aufgetreten sind. cu Ha-Jö |
AW: Dateiänderungen protokollieren
Im Grunde würde es genügen, den vollständigen Dateinamen sowie das Änderungsdatum (zuletzt geändert) zu speichern und zu vergleichen, wenn man lediglich herausfinden möchte, welche Datei geändert wurde. Die Dateigröße liefert diesbezüglich keine weitere Information, denn eine abweichende Dateigröße würde ebenso wie ein abweichendes Änderungsdatum lediglich darauf hinweisen, daß Änderungen erfolgt sind. Um zu verfolgen, was genau geändert wurde, benötigt man einen Mirror, also ein komplette Doppel der zu überwachenden Dateien.
|
AW: Dateiänderungen protokollieren
Wie bereits erwähnt ist seit ewigen Zeiten das Archiv-Bit für so etwas vorgesehen. Wenn man sich darauf nicht verlassen will, könnte man auch eine kleine Datenbank einrichten, in der man den Verzeichnisnamen, den Dateinamen sowie einen Hash der Datei ablegt. Findet man die Verzeichnis-/Dateikombination nicht oder stimmt der Hashwert nicht überein, muss die Datei gesichert und der DB-Eintrag hinzugefügt bzw. aktualisiert werden. Das nur als Anregung.
|
AW: Dateiänderungen protokollieren
Danke für die vielen Antworten!
Die Vorschläge zur Abfrage von Flags, Zeitstempeln usw. sind allerdings genau das, was ich nicht will. Ich möchte am Ende des Beobachtungszeitraums eine Liste der geänderten Dateien haben und nicht zeitraubend unzählige Dateien auf Änderungen überprüfen. Aber der Tipp von Dejan Vu war der richtige! Ich habe zwar noch nicht alles ausprobiert, aber ich denke, dass ich damit mein Problem lösen kann. Dafür noch mal danke! Gruß! joeheohal |
AW: Dateiänderungen protokollieren
Hallo
ich weiß nicht, wie die ganzen Komponenten auf torry.net funktionieren, jedoch hatte ich mir mal hierfür eine eigene Komponente gebastelt und hierfür einen Thread verwendet, welcher mit GetQueuedCompletionStatus und ReadDirectoryChanges arbeitet. Stichworte: CreateFile( CreateIoCompletionPort( ReadDirectoryChanges( -> Thread: GetQueuedCompletionStatus( ReadDirectoryChanges( Hiermit kannste (nach GetQueuedCompletionStatus) aus dem NotificationBuffer auslesen, welche Änderung innerhalb des mit CreateFile angegebenen Verzeichnisses stattgefunden haben, incl FileName. z.B.: FILE_ACTION_ADDED,FILE_ACTION_REMOVED,FILE_ACTION_ MODIFIED,FILE_ACTION_RENAMED_OLD_NAME, FILE_ACTION_RENAMED_NEW_NAME Dies funktioniert auch mit den darunter liegende Unterverzeichnissen. Leider kann ich die Komponente nicht veröffentlichen. Aber vielleicht kannste ja mit den Stichworten etwas anfangen. Edit: Hab da einen Link gefunden ![]() |
AW: Dateiänderungen protokollieren
Hallo HolgerX,
dein Vorschlag sieht dem sehr ähnlich, was ich in der Komponente DirMonitor auf Torry gefunden habe. Ich werde weiter versuchen, damit mein Problem zu lösen und auch das Ergebnis posten. Gruß! joehoehal |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz