# Duplicity (Software)

Duplicity ist eine für Linux entwickelte Datensicherungssoftware, mit der sogenannte inkrementelle Backups erstellt werden können.

## Unterstützung

Das Programm unterstützt eine Vielzahl von Zielen und Übertragungsprotokollen, unter anderem:
* lokal (Backup eines Verzeichnisses, Ziel ist ein anderes Verzeichnis, etwa auf einer externen USB-Festplatte)
* SSH/SCP
* rsync
* FTP
* WebDAV
* IMAP (E-Mail)
* Amazon S3
Duplicity funktioniert am besten für unixoide Systeme (z. B. Linux, BSD und Mac OS X), man kann es aber unter Windows mit Cygwin benutzen. Dort erfasst es allerdings nicht die Windows dateisystemspezifischen Eigenschaften. Zurzeit unterstützt die Anwendung gelöschte Dateien, Unix-Dateirechte, Verzeichnisse, symbolische Links, FIFOs und Laufwerk-Dateien, jedoch keine harten Links. Da Duplicity die Backups standardmäßig mittels GnuPG verschlüsselt, ist diese Software für die Datensicherung auf fremden Speicherplätzen – die sogenannte Cloud – hervorragend geeignet.
Das Programm ist unter der GNU General Public License veröffentlicht und somit Freie Software.

## Arbeitsweise

Das Programm wird auf der Kommandozeile bedient. Ein simples Beispiel ist:
duplicity full --no-encryption Quellverzeichnis file://Zielverzeichnis
Der Speicherort der Backup-Dateien muss eine URL sein, darum das file:// bei der Angabe des Verzeichnisses. "full" bestimmt, dass sämtliche Daten gesichert werden (dies ist beim ersten Backup obligatorisch, bei jedem weiteren Backup fakultativ – "full" wird dann weggelassen). Jedoch ist es ratsam, hin und wieder sämtliche Daten zu sichern und das "full" vorzugeben. "--no-encryption" erzeugt ein nicht verschlüsseltes Backup.
Duplicity verwendet inkrementelle Backups. Mittels des rsync-Algorithmus werden die Änderungen erfasst. Die Backup-Daten werden schließlich in einzelnen tar-Dateien abgelegt, die zur Einsparung von Speicherplatz mit gzip komprimiert werden.
Die Wiederherstellung des zuletzt gesicherten Datenbestandes erfolgt mit:
duplicity restore file://Zielverzeichnis Quellverzeichnis
Bei jedem Backup-Vorgang werden im Zielverzeichnis jeweils drei Arten von Dateien abgelegt:
* Ein "Manifest", welches festhält, welche Dateien backupt wurden, und in welchen "Difftar"-Dateien sie zu finden sind.
* Die "Difftar"-Dateien, welche die eigentlichen Daten enthalten. Sie sind von "vol1" bis "vol…" durchnummeriert.
* Das "Sigtar", welches die SHA-1-Prüfsummen der Daten enthält. Mit diesen Prüfsummen wird sichergestellt, dass eine Datei, die sich verändert hat, auch vom nächsten inkrementellen Backup erfasst wird.
Das Programm Déjà Dup ist eine grafische Benutzeroberfläche (GUI) zu duplicity.

## Vor- und Nachteile

Vorteile sind etwa:
* Die standardmäßig vorgegebene Verschlüsselung erlaubt es, die Backups auch auf Speicherplätzen mit zweifelhafter Daten- und Diebstahlsicherheit zu erstellen.
* Mittels SHA-1-Prüfsummen werden veränderte Dateien mit hoher Wahrscheinlichkeit erkannt.
* Es entsteht eine relativ übersichtliche Anzahl von Backup-Dateien mit einheitlichen Dateinamen, die alle in einem einzigen Verzeichnis abgelegt sind (vgl. das Verzeichnis "rdiff-backup-data" bei rdiff-backup).
* Wenigstens die inkrementellen Backups lassen sich problemlos unterbrechen und fortfahren. Bereits bestehende difftar-Dateien werden dabei berücksichtigt.
* Wenigstens die Komplettsicherung lässt sich relativ einfach von Hand öffnen, sollte duplicity aus irgendeinem Grund nicht funktionieren.
Nachteile:
* Inkrementelle Backups geschehen als "forward deltas". Nach einem vollen Backup ("duplicity full …") folgt eine beliebige Anzahl inkrementeller Backups ("duplicity …"). Es werden zwar die Veränderungen gegenüber dem vorherigen Datenbestand übertragen und abgespeichert, aber es wird keine Spiegelung der aktuellen Originaldaten vorgehalten. Im Fall der Daten-Wiederherstellung muss also der originale Datenbestand erst aus den inkrementellen Backups rekonstruiert werden – im Gegensatz zu rdiff-backup zum Beispiel, welches "reverse deltas" speichert und bei dem der letzte Sicherungsstand ganz simpel mittels eines simplen Kopiervorgangs (cp) wiederhergestellt werden kann.