Donnerstag, 21. Mai 2009

Der Anfang: Scannen der Systeme, Volumes und Archive

Grundlage der Arbeit des Archiv-Programms ist Information über die erreichbaren Systeme, Volumes und Archive.
Was ist ein System?
Ein System ist ein Rechner im weitesten Sinne, im Moment reicht als "Definition": etwas, was einen identifizierenden Namen hat und Volumes enthält oder offline ist.
Was ist ein Volume?
Ein Volume ist im Prinzip eine Festplatte, ein USP-Stick, eine Partition, ein Netzwerkshare, ein WebDAV oder ähnliches. Es muß auch einen identifizierenden Namen haben. Es muß eine Dateistruktur enthalten. Es kann weitere Informationen über aktuell belegte Größe und Maximalgröße des Speicherplatzes liefern. Ein Volume ist unabhängig von einem System. Aber kann in einem System gemounted sein. Systeme können auch Mountpoints haben, in denen ein Volume aber gerade nicht gemountet ist.
Ein Volume stellt ein oder meherere Archiveintrittspunkte zur Verfügung. Das sind praktisch die Verzeichnisse, mit denen das Archivprogramm arbeitet.
Was ist ein Archiv?
Ein Archiv ist so etwas wie ein Verzeichnisbaum - es besteht also aus Archivenelementen, die wieder Archive oder Archivdateien sein können. Es gibt ein oberstes Archiv. Die Archivelemente dieses Archives ergeben sich aus den Dateien und Verzeichnissen aller Archiveintrittspunkte aller bekannten Volumes. Hier kann (und soll) es natürlich passieren, dass ein Element mehrfach vorkommt, weil es z. B. auf verschiedenen Volumes vorhanden ist. Mit Hilfe des Merge-Teilmoduls werden diese Duplikate erkannt und als ein Archivelement angesehen. Wenn es sich bei den Varianten sämtlich um Dateien handelt. so ist das Archivelement eine Archivdatei und die einzelnen Dateien sind "Original", "Sicherung", "Diese-Set" und "Jenes-Set" (Wie das genau wird, ist noch unklar). Sind alle Varianten Verzeichnisse, so ist das Archivelement selbst ein Archiv und die Varianten spielen jetzt die Rolle der Archiveintrittspunkte auf der obersten Ebene. Damit ist die Rekursion geklärt. Liegt ein Mischmasch vor, dann ist das schlecht. Vermutlich braucht das Merge-Modul dann die Hilfe des menschlichen Admistrators.

Donnerstag, 14. Mai 2009

Das Projekt "Archiv"

"Archiv" wird ein Programm, um Unmengen von Filmen, Bildern, Musik und was auch immer auf vielen, wechselnden und verschiedenden großen Speichermedien zu organisieren. Die Medien hängen ständig oder manchmal an diesem oder jemen Netzwerkrechner - ob Linux, Windows oder MacOS - oder gar als ftp, sftp, webdav irgendwo im Netz. 
Es soll dafür sorgen, dass jedes Objekt möglichst zweimal auf unterschiedlichen Medien vorliegt(Backupfunktion). Wenn nicht, soll es die nötigen Kopiermaßnahmen einleiten, bzw. soll eine Neuanschaffung von Festplatten vorschlagen.
Es soll verschiedene Teilarchive kennen wie z. B. Filme, Serien, Musik, Software, Persönliche Daten, Spielstände und so weiter. Diese sollen nach heuristischen Kriterien immer schön zusammengehalten werden, so gut es geht (Ordungsfunktion).
Es soll die Möglichkeit bieten, soetwas wie "Reisesets" zu definieren, die dann bei Bedarf auf einen Notebook kopiert bzw. eigentlich synchronisiert werden können.
Das Programm soll als eine Art Dienst im Hintergrund laufen. Die verschiedenen Instanzen in einem Netz sollen sich absprechen, um die nötigen Kopieraktionen geeignet zu verteilen. Alles soll immer direkt bzw. gegebebenenfalls mit kleiner Verzögerung passieren. Das An- und Abstöpseln von Festplatten muß automatisch erkannt werden, auch das An- und Ausschalten von Netzwerkrechnern, sowie Dateioperationen von "außerhalb" und Änderungen in denKonfigurationsdateien. Neustarts des Programmes sollen grundsätzlich nie erforderlich sein.
Ein Userinterface soll möglichst minimalistisch (Vorbild ist TortoiseSVN) Überblick und Administration ermöglichen, auch möglichst über ShellExtension mit nichtmodalen Dialogen und hautsächlich Kontextmenüs.