CloudFusion - Dropbox & Sugarsync als Linux Dateisystem

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
Boa
User
Beiträge: 190
Registriert: Sonntag 25. Januar 2009, 12:34

Hi,

Ich habe gerade mein Projekt CloudFusion in der Version 1 herausgebracht. CloudFusion ist ein Framework für die Nutzung von Speicherdiensten als virtuelle Dateisysteme. Das funktioniert so, dass man in einem Ordner die Dateien auf z.B. Dropbox sehen kann, als ob sie auf der lokalen Festplatte wären, obwohl diese online stehen. Dateien, die ihr in den virtuellen Ordner schreibt, werden im Hintergrund nach und nach hochgeladen. Zuerst die Dateien, die man am längsten nicht mehr verändert hat. Wenn ich die Zeit finde werde ich eine Webdav Anbindung schreiben, da ich mir einen besseren Durchsatz als z.B. mit davfs2 erhoffe.
Die Dokumentation hinkt etwas hinterher, aber die README unten auf der Seite wird aktuell gehalten:
https://github.com/joe42/CloudFusion

Ein bisschen etwas zur Architektur:
Im Zentrum steht ein Store Interface, welches für die jeweiligen Provider implementiert werden muss mit read_file, store_file, copy, move Methoden. Momentan gibt es Implementierungen für Dropbox und Sugarsync. Dann gibt es einen Cache, den ich in zwei Schichten geteilt habe. Einmal für Metadaten (MetadataCachingStore) und einmal für die tatsächlichen Datei Inhalte (MultiprocessingCachingStore). Ein Objekt von MultiprocessingCachingStore umschließt ein Objekt von MetadataCachingStore, welcher wiederum ein Objekt einer Implementierung von Store umschließt. Diese Schichten sind dem Decorator Design Pattern http://de.wikipedia.org/wiki/Decorator nachempfunden. Der Vorteil daran ist, dass man die einzelnen Schichten optional weglassen kann (sehr praktisch bei Tests), dass man die Verantwortlichkeiten gleichzeitig in übersichtliche Klassen aufteilen kann und dass die Cache Schicht ohne Veränderung auch für neue Provider Implementierungen verwendet werden kann.
Die Implementierung von Store wird von der Klasse PyFuseBox verwendet, welche das virtuelle Dateisystem realisiert. Damit kommt man nicht in Berührung, solange man nur einen weiteren Provider implementieren will. Man muss sich also nicht damit auskennen.

Das ganze ist Teilprojekt eines adaptiven virtuellen Dateisystems, dass ich hier auch Mal vorstellen kann, sobald ich dazu komme es zu updaten :)

Wenn ihr Zeit und Lust habt es auszuprobieren, würde ich mich über euer Feedback freuen.

[EDIT]:
Bei Dropbox bekommt man 2GB und bei Sugarsync 5 GB freien Speicher.


Boa
Boa
User
Beiträge: 190
Registriert: Sonntag 25. Januar 2009, 12:34

Der zweite Release von CloudFusion ist online. Auf neueren Linux Kerneln (>2.6) ist der gefühlte Durchsatz (heißt zum Cache) deutlich höher. Es wird nun wesentlich weniger Arbeitsspeicher verwendet. Das Programm lässt sich nun einfach mit dem Befehl "cloudfusion lokaler_ordner" aufrufen.
Für den nächsten Release ist geplant CloudFusion durch Statistiken transparenter zu machen und die Verwendung zu vereinfachen:
https://github.com/joe42/CloudFusion/is ... state=open
Danach kann es mit der Integration anderer Provider losgehen.

Ich denke ich werde versuchen, die Schnittstellt zu Windows kompatibel zu machen. Auch wenn es auf Windows kein FUSE gibt um direkt über das Dateisystem auf die online Dateien zuzugreifen, ist es für Python Entwickler bestimmt auch angenehm eine einzige Schnittstelle für Cloud Speicherdienste zu haben, bei den ganzen proprietären Lösungen in dem Umfeld. Und falls man selbst an einer Schnittstelle arbeitet spart man sich die Implementierung für den Cache, was ein ziemlicher Aufwand war.

Über Feedback würde ich mich freuen.

Boa
Boa
User
Beiträge: 190
Registriert: Sonntag 25. Januar 2009, 12:34

Release Nummer drei is verfügbar mit folgenden Änderungen:
v.3.7.6_stable:
* Automatisches Login zu Dropbox
* Hard Limit für Cache Größe
* Datei mit noch nicht synchronisierten Dateien (/stats/notupdated)
* Extended Attribute is_dirty=True für Dateien die noch nicht synchronisiert sind
* Datei mit statistischen Informationen wie Cache Größe, Download/Uploadgeschwindigkeit, Menge der übertragenen Daten (/stats/stats)
* Datei mit aufgetretenen Fehlern (/stats/errors)

Und besserem Fehlerhandling sowie ein paar Bugs weniger.
Boa
User
Beiträge: 190
Registriert: Sonntag 25. Januar 2009, 12:34

Hallo,

Nun ist schon die fünfte Version von Cloudfusion online gegangen. Da ich die letzte Version hier nicht angekündigt hatte noch Mal die wichtigste Änderung:
Im mount Verzeichnis gibt es ein Verzeichnis stats, in welchem die Datei stats liegt mit diversen Statistiken wie upload/download Rate. Außerdem kann man in der Datei notuploaded sehen, welche Dateien noch nicht hochgeladen wurden. In der Datei errors werden die zuletzt aufgetretenen Fehler angezeigt.
Nun zur neuen Version:
v.5.10.15_stable:
* Anhalten von CloudFusion mit dem Kommando "cloudfusion mountpoint stop"
* Zugriff auf alle Sugarsync Ordner
* Transparentes Zusammenfassen kleiner Dateien innerhalb eines Verzeichnisses in Archive mit dem type=chunk parameter im [store] Abschnitt der Konfigurationsdatei
* Schnelles anlegen neuer Dateien
* Unterstützung für Amazon S3
* Unterstützung für Google Storage
* Minimale Unterstützung für WebDAV (Nur Kommandozeile; keine Verzeichnisse)
* Schnelles Verzeichnis listing für Amazon S3 und Google Storage

Und wie immer einige Bugfixes, sowie kleinere Optimierungen.

Über Feedback würde ich mich wie immer freuen,

Boa
Boa
User
Beiträge: 190
Registriert: Sonntag 25. Januar 2009, 12:34

Es gibt nun eine deutschsprachige Anleitung für Ubuntu:
http://wiki.ubuntuusers.de/CloudFusion
Boa
User
Beiträge: 190
Registriert: Sonntag 25. Januar 2009, 12:34

Und Version 6 ist draußen, endlich mit WebDAV Unterstützung und besserer Dokumentation. Falls ihr die interne API verwenden möchtet findet ihr Beispiele dazu unter http://joe42.github.io/CloudFusion/develop.html.


v.6.2.14_stable:
* WebDAV unterstützung
* Schnelles Verzeichnis Listing für WebDAV
* Bugfix in der Metadaten Cache Schicht (führte zu zu häufiger aktualisierung des Caches)
* Bugfix im Verzeichnis Listing bei Amazon S3 and Google Storage (das zu listende Verzeichnis wurde mitaufgezählt)
* Bugfix des Dateisystems; Fehler werfen beim umbenennen von einer Datei in ein existierendes Verzeichnis
* Bugfixes in der optionalen Archivierungs Schicht
* Bugfix der Socket Timeouts, welche unbegrenzt waren
* Bugfix für die Session übergreifende Speicherung von Dropbox Revisionen und der Authentifizierung
Antworten