Hallo,
kurz zu meinem Problem:
ich muss jede Viertelstunde aus einem Verzeichnis die Dateien auf einen Server übertragen. Es sollen aber nicht immer alle Dateien, sondern nur jene, welche sich seit der letzten Übertragung verändert haben, gesendet werden.
Ich wollte dafür das Archive-Bit, welches ja bei einer Veränderung gesetzt wird, dafür auswerten. Ich finde aber leider keine Möglichkeit, auf dieses Archive-Bit zuzugreifen.
Kennt hier jemand eine Möglichkeit bzw. hat jemand einen Tipp?
mfg
Herbert
[gelöst] QFile Attribute lesen und setzen
[gelöst] QFile Attribute lesen und setzen
Zuletzt geändert von hs60 am 3. Februar 2010 11:35, insgesamt 1-mal geändert.
Hallo,
ja, an so etwas habe ich ebenfalls schon gedacht. Wollte mich nur vergewissern, ob es vielleicht doch die Möglichkeit über Attribute gibt.
Ansonsten hat der Directory Watcher sicherlich auch seine Vorteile, ich denke da nur an System-Unabhängigkeit.
Hast du bzgl. Directory Watcher schon Erfahrung? Wenn ja, könntest du mir ev. ein paar Denkanstösse geben, wie man so etwas sinnvoll aufbaut. Soll ich in einem eigenen Verzeichnis alle in Frage kommenden Dateien speichern und das Erstellungsdatum jeweils vor dem Senden vergleichen. Oder würde das auch mit einer Stringliste funktionieren, in welche als Referenz nur jeweils der Dateiname und das Datum gespeichert werden - obwohl dies ev. bei über 1000 Dateien zu einem Speicherproblem kommen könnte.
mfg
Herbert
ja, an so etwas habe ich ebenfalls schon gedacht. Wollte mich nur vergewissern, ob es vielleicht doch die Möglichkeit über Attribute gibt.
Ansonsten hat der Directory Watcher sicherlich auch seine Vorteile, ich denke da nur an System-Unabhängigkeit.
Hast du bzgl. Directory Watcher schon Erfahrung? Wenn ja, könntest du mir ev. ein paar Denkanstösse geben, wie man so etwas sinnvoll aufbaut. Soll ich in einem eigenen Verzeichnis alle in Frage kommenden Dateien speichern und das Erstellungsdatum jeweils vor dem Senden vergleichen. Oder würde das auch mit einer Stringliste funktionieren, in welche als Referenz nur jeweils der Dateiname und das Datum gespeichert werden - obwohl dies ev. bei über 1000 Dateien zu einem Speicherproblem kommen könnte.
mfg
Herbert
Das Archiv-Bit ist System-spezifisch und wird wahrscheinlich deswegen nicht unterstützt.
Der QFileSystemWatcher arbeitet bis auf die Einschränkungen in der Doku Systemunabhängig und wäre in diesem Fall wahrscheinlich die eleganteste Lösung.
1000 Dateipfade + Datum sind vielleicht mal 64kByte. Da sind ja die die Qt-Bibliotheken schon 100x größer.
Der QFileSystemWatcher arbeitet bis auf die Einschränkungen in der Doku Systemunabhängig und wäre in diesem Fall wahrscheinlich die eleganteste Lösung.
1000 Dateipfade + Datum sind vielleicht mal 64kByte. Da sind ja die die Qt-Bibliotheken schon 100x größer.
Hallo,
verstehe ich das richtig, das QFileSystemWatcher nur dann eine Änderung von Dateien erkennt, während das Programm läuft. Bei einem neuerlichen Programmstart und Einlesen des Verzeichnisses werden demnach keine Änderungen an Dateien erkannt. Oder speichert QFileSystemWatcher zu jeder Datei irgendein Bit ab, wenn sich die Datei geändert hat?
In erstem Fall wäre das für mich nicht zu gebrauchen, da mein Programm nicht dauernd läuft. Es wird viertelstündlich von einem Fremdprogramm gestartet und soll nun NUR die veränderten bzw. neu hinzugekommenen Dateien uploaden.
mfg
Herbert
verstehe ich das richtig, das QFileSystemWatcher nur dann eine Änderung von Dateien erkennt, während das Programm läuft. Bei einem neuerlichen Programmstart und Einlesen des Verzeichnisses werden demnach keine Änderungen an Dateien erkannt. Oder speichert QFileSystemWatcher zu jeder Datei irgendein Bit ab, wenn sich die Datei geändert hat?
In erstem Fall wäre das für mich nicht zu gebrauchen, da mein Programm nicht dauernd läuft. Es wird viertelstündlich von einem Fremdprogramm gestartet und soll nun NUR die veränderten bzw. neu hinzugekommenen Dateien uploaden.
mfg
Herbert
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Hallo noch einmal!
Ich habe mein Problem inzwischen so gelöst, dass ich die einzelnen Dateinamen und Erstellungszeit in eine StringListe schreibe, welche zum Vergleich dient. Die StringListe wird vor Programmende dann in eine Datei abgespeichert. Funktioniert einwandfrei.
Das mit QMap werde ich mir noch anschauen.
Vielen Dank jedenfalls an alle, die mir geholfen haben.
mfg
Herbert
nein - was ist das?Eigentlich schon mal was von rsync gehört?
Ich habe mein Problem inzwischen so gelöst, dass ich die einzelnen Dateinamen und Erstellungszeit in eine StringListe schreibe, welche zum Vergleich dient. Die StringListe wird vor Programmende dann in eine Datei abgespeichert. Funktioniert einwandfrei.
Das mit QMap werde ich mir noch anschauen.
Vielen Dank jedenfalls an alle, die mir geholfen haben.
mfg
Herbert