brainstorming Ordner live überwachung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

Hi,

ich brauche mal ein wenig kreativen Input.

Es geht darum dass ich diverse Ordner live überwachen und Änderungen sichern will. Wenn man so mag ein entfernter Verwandter von Dropbox ;-)

Ich weiß dass es auch Alternativen gibt, ich möchte aber ein für mich maßgeschneidertes System haben, und da komme ich um selber stricken wohl nicht drum herum. Maßgeschneidert bedeutet hier im besonderen, dass ich für jeden Ordner eine andere Backup-Methode (rsync|hg), ein anderes oder mehrere Ziele und eine Verschlüsselung wählen kann.

Das Durchführen des Backups ist allerdings nicht das Problem, sondern die Frage wie und wann man das abfeuert.

Man kann ja relativ einfach mittels z.B pyinotify die Ordner überwachen, und dann die Aktion durchführen.

Aaaaaaber, ich habe zum Beispiel einen Ordner, in dem per Script mal eben so über hundert Files erstellt werden, in einem anderen nur alle Jubeljahre mal eine Datei, aber diese muss direkt gesichert werden. Wie reagiere ich darauf am besten? Bei jeder Änderung die Sicherung starten kommt nicht in Frage, auf eine bestimmte Anzahl an Änderungen warten auch nicht.

Also bei Änderungen abwarten bis x Sekunden keine Änderung kommt, dann sichern?

Wie kann man Inkonsistenzen am besten vermeiden?

Unter'm Strich ist das Hauptproblem, dass die Backup-Aktion sehr teuer ist (SSH übers Internet) und somit intelligent gefeuert werden sollte.

Habt ihr Ideen oder Input dazu, wie man da am besten vorgehen könnte?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Wieso baust du die Verbindung jedesmal wieder auf wenn dass so teuer ist?
lunar

@.robert: Irgendwie sehe ich das Problem, bzw. dessen Schwierigkeit nicht. Ist diese Aufgabe nicht gerade zu prädestiniert für das klassische Producer-Consumer-Muster, wobei ein Thread, der das Verzeichnis beobachtet, als Producer fungiert, während ein oder mehrere Übertragungsthreads als Consumer agieren?
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

Okay, ein richtiges 'Problem' existiert auch nicht, ich bin nur auf der Suche nach einer intelligenten Weise, das um zu setzten. Ich bin auch gerade erst beim Brainstorming.

Der naive Ansatz wäre es, alle Änderungen in eine Queue zu schreiben, und die der Reihe nach ab zu arbeiten. Nur kann es dann eben vorkommen, dass ich hundert mal hintereinander rsync mit den gleichen Parametern aufrufe.

Ein bisschen besser wäre es, nach jeder Änderung vielleicht 5 Sekunden zu warten, und dann erst mal die Queue zu säubern und zu minimieren.

Mich interessiert jetzt, ob ihr vielleicht noch mehr und bessere Ideen habt, um das ganze noch ein wenig zu optimieren.

Vielleicht noch als Anmerkung: Das ist als aus-dem-Auge-aus-dem-Sinn Programm gedacht. Ich will das immer laufen haben, auch wenn mal Stundenlang in den Ordnern nicht passiert, und dann wenn ich was mache soll es raz faz die Daten sichern, ich kenn mich nämlich, wenn ich das manuell mache vergesse ich das laufend.
lunar

@.robert: Nun, dann aggregiere die Ereignisse eben. Der Übertragungsthread darf dazu halt nicht sofort übertragen, sondern muss jede Datei erst einmal aus der Warteschlange entfernen und zu einer Menge an ausstehenden Übertragungen hinzufügen, und dann alle x Sekunden einen weiteren Thread starten, dem die Menge der ausstehenden Dateien zur Übertragung übergeben wird.
Antworten