Vorschlag für eine Produktinnovation
Version 1.0/1.1, 03.09.2006
Nebenziele, positive Nebeneffekte, weitere Betroffene
Beim Erstellen von Backups ist es sehr wichtig, die Daten zuverlässig wiederherstellen zu können. Problematisch sind vor allem folgende Aspekte:
Werden CDs oder DVDs als Medium verwendet, ist kein Verlass darauf, dass sie fehlerfrei gelesen werden können. Sie können leicht beschädigt werden.
Bei komprimierten Archiven können schon einzelne Bitfehler große Probleme verursachen.
Grundsätzlich können einige Archivierungsprogramme auch defekte Dateien noch bearbeiten (auch hinter dem Fehler), aber das ist nicht immer möglich, wie der Autor persönlich feststellen durfte. Das mag eine Frage der Größe des Defekts sein.
Backupprogramme sollten die Funktion anbieten, alle Metadaten aus einer Archivdatei zu extrahieren und in einer separaten Datei (Metadatei) abzulegen. Dies sollte leicht zu implementieren sein, da die Programme sowieso schon Funktionen haben, um die Anfangs- und Endadressen der Dateien zu bestimmen. Kopiert werden muss dann nur alles andere. In der Zieldatei sind dann die angegebenen Größen für die Dateiinhalte zu "überspringen", woraus sich dann auch die korrekten Adressen in der Archivdatei ermitteln lassen. Durch diese Vorgehensweise hätte man automatisch die Situation, dass bei einer Änderung der Archivdatei (die bedingt durch die Arbeitsweise von Streamern oft am Ende der Datei stattfindet) die Metadatei mitwüchse, also ebenfalls mit allen Medien wenigstens prinzipiell funktioniert.
Durch den Größenunterschied wäre es praktikabel, die Metadatei auf einem anderen Medium zu archivieren, wodurch die Sicherheit weiter erhöht würde.
Bei komprimierten Dateien hat man normalerweise keine Chance, die Daten nach dem Fehler wiederherzustellen. Bei Blockkomprimierern (bzip2) kann man am Beginn des Folgeblocks erneut ansetzen, man verliert also "nur" den Rest des betroffenen Blocks. Da man durch die Redundanz aber einige Daten aus dem zerstörten Bereich hat (wenn der nicht komplett in einem Bereich mit Dateiinhalt liegt), mag es möglich sein, die beschädigten Daten teilweise oder sogar komplett wiederherzustellen. Das wäre aber eine Aufgabe für das Kompressionsprogramm, nicht für das Archivierungsprogramm.
Ein weiteres Ärgernis, das zwar mit Datenverlusten nichts zu tun hat, sich aber durch denselben Mechanismus lösen lässt, besteht bei manchen Archivformaten: Um eine Datei im Archiv zu finden, muss das gesamte Archiv durchsucht werden, selbst, wenn sie schon gefunden wurde, weil sie später im Archiv durch eine neuere Version überschrieben worden sein kann. Bei großen Archivdateien ist das zeitaufwändig.
verlässliche Zuordnung der Metadatei zum Archiv
Die Zuordnung der Metadatei zur Archivdatei kann natürlich in erster Linie über den Dateinamen erfolgen, was aber aus vielerlei Gründen nicht verlässlich ist. Eine sichere Zuordnung ist wohl nur über den Vergleich der Metadaten in beiden Dateien möglich. Nun muss man die beiden relevanten Situationen betrachten:
Beschädigung der Datei
Bei einer Beschädigung (auch) der Metadaten muss dieser Vergleich fehlschlagen. Man müsste also prüfen, ob die differierenden Stellen in einem als fehlerhaft erkannten Bereich liegen (immerhin kann auch die Metadatei kaputt sein, was weniger auffällig ist), und eventuell, ob später in der Datei wieder Übereinstimmungen auftauchen. Differenzen nach dem Motto Ist ja eh kaputt, muss also abweichen
zu ignorieren, bringt die Gefahr mit sich, dass man Fehler bei der Zuordnung der Metadatei zur Archivdatei macht. Wenn nach den Differenzen keine Übereinstimmungen mehr kommen, muss man davon ausgehen, dass die Archivdatei bis zum Ende kaputt ist und sich somit dort sowieso nichts Interessantes mehr befindet.
Index
Wird die Metadatei als Index verwendet, also zur Beschleunigung, dann verbietet es sich, einen kompletten Abgleich vorzunehmen, denn der wäre dann noch langsamer (von Folgezugriffen abgesehen – die nicht ins Konzept aufeinanderfolgender Programmaufrufe passen). Dies sollte nur auf gesonderte Anforderung durch den Nutzer geschehen. Die Verantwortung für die korrekte Zuordnung würde man hier komplett/überwiegend in die Hand des Nutzers geben; das ist vor dem Hintergrund, dass dabei deutlich weniger Schaden angerichtet werden kann, besonders gut vertretbar. Sinnvoll erscheint es dagegen, bei den in der Indexdatei gefundenen Metadaten einen Abgleich vorzunehmen, sofern sich die Archivdatei auf einem block device befindet, diese Zugriffe also praktikabel durchgeführt werden können. In diesem Sinne sollte diese Prüfung explizit aktivierbar und deaktivierbar sein.
Wenn man die Komplexität der Metadateien minimal erhöt, indem man noch zusätzlich zu den Metadaten der Archivdatei Informationen dort unterbringt, werden schnelle Tests auf die korrekte Dateizuordnung möglich. Dann würde man etwa ans Ende jedes "Blocks" (Abschnitte aus einem Bearbeitungszyklus, wenn also einem bestehenden Archiv etwas hinzugefügt wird) Größe und Pruüfsumme (mehrerer Teilabschnitte; nur im Indexfall sinnvoll) anhängen.
Richtig spannend wird es, wenn sich in beiden Dateien Fehler befinden. In dem Fall wäre für jeden Metadatenblock zu prüfen, welcher von beiden anscheinend korrekt ist. Unterschiedliche Fehler im selben Block sind einerseits sehr unwahrscheinlich und erhöhen die Bearbeitungskomplexität andererseits erheblich, so dass es vernünftig erscheint, diesen Fall (anfangs) auszulassen. Wünschenswert ist aber auf jeden Fall, dass auch in der Metadatei defekte Abschnitte übersprungen werden können.
Naheliegende oder bereits vorgebrachte Einwände:
Unter Komfortaspekten erscheint es sinnvoll, über eine zentrale Konfigurationsdatei oder eine Hinweisdatei im gleichen Verzeichnis anzugeben, in welchen Verzeichnissen sich die Metadateien typischerweise befinden, so dass das Archivprogramm diese selber suchen kann, anstatt immer die explizite Angabe beim Aufruf zu erfordern.