Außerdem gäbe es noch die Möglichkeit, nicht den FTP-Server selbst zu schreiben, sondern das Dateisystem, das der FTP-Server sieht. Siehe dazu http://fuse.sourceforge.net/.
Hochinteressant, aber irgendwie setzt es bei mir hier voll aus - was macht denn diese Software? Einer Anwendung vorgaukeln, dass es ein Filesystem gäbe, das es nicht gibt (also virtuell). Wie sollte ich denn das mit dem Datenbankkonzept und einem ftp Server verheiratet bekommen?
Hallo Richard,
mit FUSE kann man den Betriebssystemkern dazu bringen, ein Dateisystem anzulegen, aber alle Operationen darauf an ein normales Programm weiterzuleiten. Dieses Programm, der Dateisystemserver, erhält also für jede Operation wie "Liste alle Dateien in Verzeichnis x auf" oder "Lies 42 Bytes von Position 455 aus Datei y" eine Anfrage, die er nach Lust und Laune beantworten kann.
In Deinem Falle müsste der Dateisystemserver in etwa folgendes tun:
-
Bei einer Listinganfrage für Verzeichnisse wird der Name des Verzeichnisses zerlegt und ein Zeitfenster daraus berechnet, das in eine Datenbankabfrage einfließt. Das Resultat der Datenbankanfrage wird wiederum in künstliche Dateinamen, die aus den Zeitstempeln der Messungen synthetisiert wurden, umgesetzt.
-
Bei einer Leseanfrage für eine Datei wird ebenfalls der Name und Pfad der Datei als Zeitstempel verwendet um die passenden Daten in der Datenbank zu finden. Diese Daten werden ausgelesen und in Textform zurückgeliefert.
-
Andere Anfragen, wie zum Beispiel das Beschreiben oder Löschen von Dateien können einfach mit einem Fehlercode beantwortet werden.
Alle Anwendungen können dieses Dateisystem nun genau so benutzen, als ob es zum Beispiel eine lokale Festplatte wäre. Da auch ein FTP-Server ein ganz normales Programm ist, würde er den Unterschied zwischen einem Verzeichnis auf Deiner Platte, das er serven soll, und einem FUSE-Dateisystem, das er serven soll, überhaupt nicht bemerken.