Vorschlag für eine Produktinnovation 

Hauke Laging, Grazer Platz 22, 12157 Berlin, Tel.: 030/32603660, mobil: 0172/7630883, E-Mail: hauke@laging.de, WWW: http://www.hauke-laging.de/
Student an der TU Berlin (Wi-Ing IuK) und ehemaliger Mitarbeiter des dortigen Lehrstuhls für Technologie- und Innovationsmanagement

Extraktion von Metadaten aus Archiven zwecks Redundanz

Version 1.0/1.1, 03.09.2006

Inhalt

Ausgangslage   das Problem — Übersicht

Beim Erstellen von Backups ist es sehr wichtig, die Daten zuverlässig wiederherstellen zu können. Problematisch sind vor allem folgende Aspekte:

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.

Ziel — Übersicht

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.

Nebenziele, positive Nebeneffekte, weitere Betroffene

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.

technische Umsetzung — Übersicht

Anforderungen

Realisierung

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:

  1. 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.

  2. 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.

Einwände — Übersicht

Naheliegende oder bereits vorgebrachte Einwände:

Erweiterungen — Übersicht

Suchpfade für die Metadateien

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.

Änderungen am Dokument — Übersicht

1.0 (03.09.2006)