# duplicity — Verschlüsselte, inkrementelle Backups

> Verschlüsselte, bandbreiteneffiziente Backups mit GPG: inkrementelle tar-Archive lokal oder remote (S3, SFTP, FTP, Backblaze B2).

Source: https://www.jpkc.com/db/cheatsheets/backup-sync/duplicity/

<!-- PROSE:intro -->
duplicity bündelt drei Dinge, die du bei Backups selten zusammen bekommst: inkrementelle Sicherungen über den rsync-Algorithmus, GPG-Verschlüsselung und ein breites Spektrum an Backends – vom lokalen Verzeichnis über SFTP und FTP bis hin zu S3, Backblaze B2 oder Google Drive. Du sicherst also platzsparend und verschlüsselt an nahezu jedes Ziel, ohne dem Speicheranbieter vertrauen zu müssen. Dieser Guide führt dich durch die wichtigsten Befehle – vom ersten Voll-Backup über die Wiederherstellung bis zum Aufräumen alter Sicherungssätze.
<!-- PROSE:intro:end -->

## Backups erstellen

`duplicity <source> <target>` — Erstellt ein inkrementelles Backup (beim ersten Lauf ein Voll-Backup).

```bash
duplicity /home/user file:///backup/home
```

`duplicity full <source> <target>` — Erzwingt ein Voll-Backup.

```bash
duplicity full /var/www file:///backup/www
```

`duplicity incr <source> <target>` — Erzwingt ein inkrementelles Backup.

```bash
duplicity incr /var/www file:///backup/www
```

`duplicity --full-if-older-than <time> <source> <target>` — Erstellt ein Voll-Backup, wenn das letzte vollständige älter als die angegebene Zeit ist.

```bash
duplicity --full-if-older-than 30D /home/user file:///backup/home
```

`duplicity --exclude '<pattern>' <source> <target>` — Schließt Dateien oder Verzeichnisse aus, die auf ein Muster passen.

```bash
duplicity --exclude '**/.cache' --exclude '**/node_modules' /home/user file:///backup/home
```

## Wiederherstellen

`duplicity restore <target> <dest>` — Stellt das neueste Backup in ein Verzeichnis wieder her.

```bash
duplicity restore file:///backup/home /tmp/restore
```

`duplicity restore --time <time> <target> <dest>` — Stellt den Stand eines bestimmten Zeitpunkts wieder her.

```bash
duplicity restore --time 3D file:///backup/home /tmp/restore
```

`duplicity restore --file-to-restore <path> <target> <dest>` — Stellt eine einzelne Datei oder ein Verzeichnis wieder her.

```bash
duplicity restore --file-to-restore Documents/important.pdf file:///backup/home /tmp/important.pdf
```

`duplicity --force restore <target> <dest>` — Erzwingt die Wiederherstellung (überschreibt vorhandene Dateien).

```bash
duplicity --force restore file:///backup/www /var/www
```

## Remote-Backends

`duplicity <source> sftp://<user>@<host>/<path>` — Sichert per SFTP auf einen entfernten Server.

```bash
duplicity /var/www sftp://backup@server//backup/www
```

`duplicity <source> s3://s3.<region>.amazonaws.com/<bucket>/<path>` — Sichert nach Amazon S3.

```bash
duplicity /home/user s3://s3.eu-west-1.amazonaws.com/my-backups/home
```

`duplicity <source> ftp://<user>@<host>/<path>` — Sichert auf einen FTP-Server.

```bash
duplicity /var/www ftp://backupuser@ftp.example.com/backups/www
```

`duplicity <source> gdocs://<user>@gmail.com/<folder>` — Sichert nach Google Drive.

```bash
duplicity /home/user gdocs://user@gmail.com/backups/home
```

`duplicity <source> b2://<account>@<bucket>/<path>` — Sichert nach Backblaze B2.

```bash
duplicity /data b2://account123@my-bucket/data
```

## Verschlüsselung

`PASSPHRASE='<pass>' duplicity <source> <target>` — Verschlüsselt mit einer Passphrase (symmetrische GPG-Verschlüsselung).

```bash
PASSPHRASE='mysecret' duplicity /data file:///backup/data
```

`duplicity --encrypt-key <gpg-key> <source> <target>` — Verschlüsselt mit einem öffentlichen GPG-Schlüssel.

```bash
duplicity --encrypt-key ABCD1234 /data file:///backup/data
```

`duplicity --no-encryption <source> <target>` — Deaktiviert die Verschlüsselung (für entfernte Ziele nicht empfohlen).

```bash
duplicity --no-encryption /data file:///backup/data
```

## Verwaltung & Info

`duplicity collection-status <target>` — Zeigt Status und Statistik der Backup-Kette an.

```bash
duplicity collection-status file:///backup/home
```

`duplicity list-current-files <target>` — Listet die Dateien im neuesten Backup auf.

```bash
duplicity list-current-files file:///backup/home
```

`duplicity verify <target> <source>` — Prüft die Integrität des Backups gegen die Quelldateien.

```bash
duplicity verify file:///backup/home /home/user
```

`duplicity remove-older-than <time> <target>` — Entfernt Backups, die älter als die angegebene Zeit sind (löscht alte Sicherungssätze endgültig).

```bash
duplicity remove-older-than 90D --force file:///backup/home
```

`duplicity remove-all-but-n-full <n> <target>` — Behält nur die letzten N vollständigen Backup-Ketten (löscht ältere endgültig).

```bash
duplicity remove-all-but-n-full 3 --force file:///backup/home
```

`duplicity cleanup <target>` — Entfernt verwaiste Backup-Dateien (löscht endgültig).

```bash
duplicity cleanup --force file:///backup/home
```

<!-- PROSE:outro -->
## Fazit

duplicity ist eine bewährte Wahl, wenn du verschlüsselte, platzsparende Backups an entfernte Ziele schicken willst, ohne dem Anbieter vertrauen zu müssen. Behandle deine Passphrase oder deinen GPG-Schlüssel besonders sorgfältig: Geht er verloren, sind auch die Backups unwiederbringlich verloren – und übergib `PASSPHRASE` per Umgebungsvariable nur dort, wo die Prozessliste nicht mitgelesen werden kann. Die aufräumenden Befehle `remove-older-than`, `remove-all-but-n-full` und `cleanup` löschen alte Sicherungssätze endgültig – prüfe das Ziel vor jedem `--force` zweimal.

## Weiterführende Links

- [duplicity – offizielle Projektseite](https://duplicity.us/) – Downloads, Neuigkeiten und Einstieg (englisch)
- [duplicity-Handbuch (man page)](https://duplicity.us/docs.html) – vollständige Referenz zu Befehlen, Backends und Optionen (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [borgbackup](https://www.jpkc.com/db/cheatsheets/backup-sync/borgbackup/) – deduplizierende, komprimierte und verschlüsselte Backups
- [rclone](https://www.jpkc.com/db/cheatsheets/backup-sync/rclone/) – synchronisiert Dateien mit zahlreichen Cloud-Speichern
- [rdiff-backup](https://www.jpkc.com/db/cheatsheets/backup-sync/rdiff-backup/) – inkrementelle Backups im rsync-Stil mit Versionshistorie

