shaback
Allgemeines
Shaback ist ein kommandozeilenorientiertes Backupprogramm für Linux und unixähnliche Systeme. Es ist als Prototyp bisher komplett in Python implementiert. Getestet wurde es bisher nur mit Python 2.6. Theoretisch sollte es mit neueren Versionen auch funktionieren, das habe ich jedoch noch nicht probiert.
Der Name leitet sich aus dem verwendeten sha1-Hashalgorithmus und dem Wort Backup ab.
Ablage der Daten
Die gesicherten Dateien werden unterhalb des Archivverzeichnisses im files/-Ordner abgelegt. Dieser Ordner enthält 256 Unterverzeichnisse: 00/, 01/, 02/, …, fe/, ff/, die ihrerseits wieder jeweils 256 Unterverzeichnisse enthalten. Für jede zu sichernde Datei wird die sha1-Hashsumme berechnet. Diese wird dann in Hexdarstellung als Grundlage für den Dateinamen im Archivverzeichnis herangezogen. Von diesen 40 Hexziffern stellen die ersten zwei den Verzeichnisnamen der ersten Ebene dar. Die zwei folgenden Ziffern stellen den Verzeichnisnamen der zweiten Ebene dar. Die restlichen 36 Ziffern stellen dann den Dateinamen innerhalb dieses Verzeichnisses dar. Falls die Datei bei der Archivierung noch per gzip komprimiert wurde, wird noch die Endung .gz angehängt.
Im files/-Ordner werden nur die rohen Dateiinhalte gesichert. Die Metadaten – wie z.B. die Dateinamen und Zugriffsberechtigungen – werden pro Backupsatz in einer CSV-Datei im index/-Ordner abgelegt. Pro Backuplauf wird hier eine neue Datei angelegt, die im Dateinamen den Namen des Rechners und das Datum trägt. Bei der Wiederherstellung eines Backupsatzes wird diese Indexdatei ausgelesen und die Dateien, Verzeichnisse und Symlinks werden nach den dort gesicherten Angaben wiederhergestellt. Die Dateiinhalte kommen aus dem files/-Ordner.

