Duplicity ist ein kleines Backuptool für Linux speziell für die Nutzung von Online-Speicherplatz. Es bietet transparente Ver- und Entschlüsselung mit OpenPGP, erstellt inkrementelle Backups und überträgt nur geänderte Daten, um Traffic und Zeitbedarf minimal zu halten.
Die Distributionen stellen in der Regel alles Nötige für die Installation in den Repositorys bereit.
Ubuntu: > sudo aptitude install duplicity
Fedora: > sudo dnf install duplicity
Duplicity ist ein Kommandozeilen Tool. Ein verschlüsseltes Backup erstellt man mit:
> duplicity Verzeichnis Backupadresse
Vom lokalen Verzeichnis wird ein Backup erstellt, mit OpenPGP symmetrisch verschlüsselt und in 200MB großen Häppchen unter der Backup Adresse abgelegt. Das erste Backup ist ein Full-Backup und alle weiteren Backups sind inkrementelle Backups. Da ein Restore sehr lange dauern würde, wenn man monatelang nur inkrementelle Backups macht, sollte man regelmäßig (z.B. monatlich) ein Full-Backup einfügen:
> duplicity --full-if-older-than=1M Verzeichnis Backupadresse
Da Datenspeicher nicht unendlich groß sind, muss man alte Backups gelegentlich löschen:
> duplicity remove-older-than 3M Backupadresse
Die Zeiten können in Tagen (D), Wochen (W), Monaten (M) oder Jahren (Y) angegeben werden.
Das Passwort für die Verschlüsselung wird beim Start des Programms abgefragt, was in automatisiert ablaufenden Backupscripten unpraktisch ist. Dafür ist es besser, einen OpenPGP Schlüssel zu verwenden und mit der Option --encrypt-key eine ID oder Mail-Adresse des OpenPGP Schlüssels anzugeben. Diese Option kann mehrfach angegeben werden, um mehreren Teilnehmern ein Restore des Backups zu erlauben.
> duplicity --encrypt-key="0x12345678" --encrypt-key="max@mustermann.tld" Verz BAddr
Der geübte Linux Admin erstellt sich ein kleines Backup Script, das er via Cron Job täglich oder wöchentlich oder bei Bedarf auf der Konsole aufruft:
#!/usr/bin/sh
duplicity remove-older-than 3M Backupadresse
duplicity --full-if-older-than=1M --encrypt-key="0x12345678" Verzeichnis Backupadresse
Die
Backupadresse kodiert das Übertragungsprotokoll, den Server und das Verzeichnis auf dem Server. Duplicity kann mit vielen Protokollen umgehen. Backupadressen haben folgenden Aufbau:
- Man kann ein lokales Backupverzeichnis nutzen (z.B. auf einem externen Datenträger):
file:///backupverzeichnis
- Anbieter von Online-Speicherplatz unterstützen WebDAV oder genauer gesagt die TLS-verschlüsselte Übertragung mit WebDAVS. Die Angabe der Passphrase für den Login ist optional. Wenn sich nicht im Kommando angegeben wird, wird sie abgefragt.
webdavs://user[:password]@server.tld/backupverzeichnis
- Amazon S3 cloud services werden unterstützt:
s3://server/bucket_name[/prefix]
- Man könnte sein IMAP-Postfach für das Backup nutzen, möglichst mit SSL-verschlüsselter Verbindung. Diese Variante ist nicht sehr performant viele Mail-Provider sehen das garnicht gern:
imaps://user[:password]@mail.server.tld
- Das sftp-Protokoll (ssh) ist vor allem für eigene Server interessant. Loginname und Passwort könnten ebenfalls in der Adresse kodiert werden:
ssh://user[:password]@server.tld[:port]/backupverzeichnis
Für die Automatisierung in Scripten wäre ein SSH-Schlüssel besser geeigent als ein Passwort, den man "ssh-keygen" erstellt und dessen öffentlichen Part man mit "ssh-copy-id" auf das Zielsystem übertragen kann.
- scp und rsync können ebenfalls für die Übertragung zum Server genutzt werden, wobei für die Verwendung von scp in Scripten ebenfalls SSH-Schlüssel besser geeigent sind als Passwörter:
scp://user[:password]@server.tld[:port]/backupverzeichnis
rsync://user[:password]@server.tld[:port]/backupverzeichnis
Das Backupverzeichnis bei rsync ist relativ zum Login-Verzeichnis. Um einen absoluten Pfad auf dem Server anzugeben, schreibt man 2 Slash.
Ein
Restore erfolgt nur in ein leeres Verzeichnis! Es ist ein neues Verzeichnis zu erstellen. Beim Aufruf zur vollständigen Wiederherstellung des letzten Backups sind Backup-Adresse und lokales Verzeichnis zu tauschen. Weitere Parameter sind nicht nötig.
> mkdir /home/user/restore
> duplicity Backupaddresse /home/user/restore
Man kann einzelne Dateien wierderherstellen, wenn man sie versehentlich gelöscht hat:
> duplicity --file-to-restore=Path Backupaddresse /home/user/restore
Man kann auch einen älteren Zustand wiederherstellen (gesamtes Backup oder einzelne Dateien), beispw. den Zustand aller Daten vor 10 Tagen restaurieren:
> duplicity --restore-time 10D Backupaddresse /home/user/restore
Weitere Informationen findet man in der manual page von duplicity.