Hinter Schloss und Siegel

Daten auf FTP-Servern bedürfen eines besonderen Schutzes, wenn unklar ist, wer darauf zugreifen kann. Der Einsatz von duplicity mit dem c't-Skript ftplicity sorgt für komfortable, verschlüsselte und signierte FTP-Backups.

Lesezeit: 12 Min.
In Pocket speichern
vorlesen Druckansicht
Von
  • Christiane Rütten
Inhaltsverzeichnis

Wer seine Daten auf einem unbekannten FTP-Server sichert, muss sie verschlüsseln und signieren, um sie zuverlässig vor neugierigen Blicken und Manipulationen zu schützen. Dafür ist duplicity das richtige Werkzeug, und das c't-Skript ftplicity macht die Arbeit damit zu einem Kinderspiel.

Die meisten Provider stellen Mietern eines Root-Servers einen Zugang zu einem FTP-Server für Backups zur Verfügung. Dort ist in der Regel Platz für den gesamten Inhalt der Festplatte. Doch das bereitgestellte FTP-Archiv ist nicht unbedingt vertrauenswürdig: Es ist unklar, wer darauf Zugriff hat, was dort mit den gespeicherten Daten geschieht und ob der Server wirklich sicher vor unbefugtem Zugriff ist. Außerdem sind die Daten während der FTP-Übertragung zum Backup-Archiv unter Umständen neugierigen Blicken ausgesetzt.

Das in der Skriptingsprache Python entwickelte Backup-Werkzeug duplicity hilft dem Linux-Admin aus der Klemme: Es erstellt mit GPG verschlüsselte und signierte, komprimierte, inkrementelle Backups. Inkrementell bedeutet, dass nach einem Vollbackup immer nur geänderte Dateien gesichert werden. Das spart Speicherplatz und Übertragungsvolumen und erlaubt den Rückgriff auf ältere Datei-Versionen. Durch den Einsatz von GPG lassen sich die Backup-Daten guten Gewissens auch über ungesicherte Netzwerkverbindungen zu einem nicht vertrauenswürdigen Server übertragen, weil sie vor neugierigen Blicken und Manipulationen geschützt sind.

duplicity ist in Version 0.4.1 bereits Teil von Debian, Ubuntu (im Universe-Repository) und Fedora Core (in der Sektion "Extras"). Suse-Nutzer müssen noch Hand anlegen: Die aktuelle Version 0.4.2 steht auf der Homepage [1] als tar-Archiv (und Source-RPM für Fedora) zum Download bereit. Nach dem Entpacken des tar-Archivs erledigt ein

python setup.py install

im Quellverzeichnis alle notwendigen Schritte für die Installation. Voraussetzung dafür sind installierte Development-Pakete der verwendeten Python-Version und von librsync.

Duplicity speichert verschlüsselte, inkrementelle Backups in
kleinen Häppchen auf einem FTP-Server.

Ein Vollbackup besteht aus GPG-verschlüsselten tar-Archiven in etwa 5 MByte großen Häppchen ("Volumes"), so genannten Difftars (duplicity-full.*.difftar.gpg). Zusätzlich speichert duplicity ein raffiniertes System von Prüfsummen über Teile der gesicherten Dateien (ein "Sigtar") sowie ein Inhaltsverzeichnis ("Manifest"), alles ebenfalls verschlüsselt.

Durch den rsync-Algorithmus verursacht ein typisches
inkrementelles Backup eines Servers mit 5 GByte nur wenige Megabyte
Übertragungsvolumen.

Um ein inkrementelles Backup anzulegen, holt sich duplicity vom FTP-Server zunächst die Sigtars des letzten Vollbackups sowie aller folgenden inkrementellen Backups. Anhand der darin gespeicherten Prüfsummen stellt es fest, welche Dateien sich geändert haben, und nicht nur das: Der rsync-Algorithmus, der auch beim gleichnamingen Synchronisationstool zum Einsatz kommt, erkennt sogar, was sich an einer Datei geändert hat und speichert nur die Differenz [2]. Das funktioniert so ähnlich wie ein diff bei Textdateien und hilft, die Datenmenge möglichst klein zu halten. Das inkrementelle Backup wandert dann – gegebenenfalls häppchenweise – in Dateien namens "duplicity-inc*", zusammen mit zugehörigem Sigtar und Manifest. Nach und nach entstehen so auf dem FTP-Server Backup- und Signaturketten aus Vollbackups mit anschließenden Inkrementen.

Beim Restaurieren von einzelnen Dateien macht sich die Volume-Aufteilung bezahlt. duplicity muss lediglich die Volumes aus dem FTP-Archiv zurückbeordern, die zur Rekonstruktion einer Datei nötig sind. Welche das sind, erkennt es an den Manifesten. Aus der letzten Vollversion und den Differenzen baut der rsync-Algorithmus den gewünschten Stand der Datei zusammen. Dafür benötigt duplicity im temporären Verzeichnis Platz für die gesamte Datei. Deshalb muss dort zur Wiederherstellung eines Backups genug Platz für die größte Datei im Backup sein.