Duplicati ist eine Open-Source-Backup-Lösung mit Web-Interface. Sie unterstützt zahlreiche Cloud-Speicher und verschlüsselt Daten vor dem Upload.
Features
Übersicht
- AES-256 Verschlüsselung
- Inkrementelle Backups
- Kompression
- Web-Interface
- Zahlreiche Cloud-Backends
- Scheduler
- E-Mail-Benachrichtigungen
- Open SourceUnterstützte Backends
| Backend | Protokoll | |---------|-----------| | Amazon S3 | S3 API | | Backblaze B2 | B2 API | | Google Drive | OAuth | | Microsoft OneDrive | OAuth | | Dropbox | OAuth | | SFTP/SSH | SFTP | | WebDAV | HTTP/HTTPS | | FTP | FTP/FTPS | | OpenStack Swift | Swift API | | Local | Dateisystem |
Installation
Debian/Ubuntu
# Abhängigkeiten
apt install mono-complete gtk-sharp2
# Download
wget https://updates.duplicati.com/beta/duplicati_2.0.7.1-1_all.deb
# Installation
dpkg -i duplicati_2.0.7.1-1_all.deb
apt install -fAls Systemd-Service
# /etc/systemd/system/duplicati.service
[Unit]
Description=Duplicati Backup Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/bin/duplicati-server --webservice-port=8200 --webservice-interface=any
Restart=always
[Install]
WantedBy=multi-user.targetsystemctl enable duplicati
systemctl start duplicatiDocker
version: '3'
services:
duplicati:
image: lscr.io/linuxserver/duplicati:latest
container_name: duplicati
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
volumes:
- ./config:/config
- /backup:/backups
- /source:/source:ro
ports:
- 8200:8200
restart: unless-stoppedWeb-Interface
Zugriff
URL: http://server-ip:8200Passwort setzen
Beim ersten Start:
Settings → Access to user interface → Set passwordNginx-Proxy
server {
listen 443 ssl;
server_name backup.example.de;
ssl_certificate /etc/letsencrypt/live/backup.example.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/backup.example.de/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8200;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Backup konfigurieren
Neues Backup erstellen
1. Add backup → Configure a new backup
2. General backup settings:
- Name: Server-Backup
- Encryption: AES-256
- Passphrase: sicheres_passwort
3. Backup destination wählen
4. Source data auswählen
5. Schedule festlegen
6. Options konfigurierenAmazon S3 Backend
Backend: S3 Compatible
Server: s3.amazonaws.com
Bucket: mein-backup-bucket
Region: eu-central-1
Storage class: Standard
AWS Access ID: AKIAIOSFODNN7EXAMPLE
AWS Access Key: wJalrXUtnFEMI/K7MDENG...Backblaze B2
Backend: B2 Cloud Storage
Bucket: mein-backup-bucket
Account ID: xxxxxxxxxxxx
Application Key: K000xxxxxxxxxxxxxxxSFTP-Server
Backend: SFTP (SSH)
Server: backup.example.de
Port: 22
Path: /backup/duplicati
Username: backup
Password: passwort
# Oder SSH-Key verwendenKommandozeile
Backup starten
# Backup-Job ausführen
duplicati-cli backup \
"s3://bucket-name?aws-access-key-id=KEY&aws-secret-access-key=SECRET" \
/home /etc /var/www \
--passphrase="verschluesselung"Wiederherstellen
duplicati-cli restore \
"s3://bucket-name" \
--passphrase="verschluesselung" \
--restore-path=/restoreDateien auflisten
duplicati-cli list \
"s3://bucket-name" \
--passphrase="verschluesselung"Backup verifizieren
duplicati-cli verify \
"s3://bucket-name" \
--passphrase="verschluesselung"Filter und Ausschlüsse
Im Web-Interface
Source Data → Filters
Exclude:
- *.tmp
- *.log
- */.cache/
- */node_modules/
- */.git/Kommandozeile
duplicati-cli backup ... \
--exclude="*.tmp" \
--exclude="*.log" \
--exclude="*/.cache/*" \
--exclude-regexp=".*\.bak$"Typische Ausschlüsse
# Temporäre Dateien
*.tmp
*.temp
*.swp
# Logs
*.log
/var/log/*
# Cache
*/.cache/*
*/cache/*
# Entwicklung
*/node_modules/*
*/.git/*
*/__pycache__/*
*.pyc
# System
/proc/*
/sys/*
/dev/*
/run/*Retention-Policy
Im Web-Interface
Options → Backup retention
Smart backup retention:
- Keep all backups younger than 7 days
- Keep one backup per day for 4 weeks
- Keep one backup per week for 4 months
- Keep one backup per month for 1 yearKommandozeile
duplicati-cli backup ... \
--retention-policy="7D:1D,4W:1W,12M:1M"Erklärung
7D:1D = 7 Tage lang: alle behalten
4W:1W = 4 Wochen: 1 pro Woche
12M:1M = 12 Monate: 1 pro MonatVerschlüsselung
Optionen
| Methode | Beschreibung | |---------|--------------| | AES-256 | Standard, empfohlen | | GPG | GNU Privacy Guard | | None | Keine Verschlüsselung |
AES-256 (Standard)
duplicati-cli backup ... \
--encryption-module=aes \
--passphrase="langes_sicheres_passwort"GPG-Verschlüsselung
duplicati-cli backup ... \
--encryption-module=gpg \
--gpg-encryption-key="KEY_ID"E-Mail-Benachrichtigungen
Konfiguration
Settings → Add advanced option
send-mail-url: smtp://smtp.example.de:587
send-mail-username: user@example.de
send-mail-password: passwort
send-mail-from: backup@example.de
send-mail-to: admin@example.de
send-mail-subject: Duplicati %PARSEDRESULT%
send-mail-level: Warning,Error,FatalBei jedem Backup
--send-mail-level=Success,Warning,Error,FatalNur bei Fehlern
--send-mail-level=Warning,Error,FatalWiederherstellung
Über Web-Interface
1. Restore auswählen
2. Backup-Version wählen
3. Dateien/Ordner auswählen
4. Zielort festlegen:
- Original location
- Different location
5. Restore startenEinzelne Dateien
duplicati-cli restore \
"s3://bucket" \
--passphrase="passwort" \
--include="/home/user/wichtig.txt" \
--restore-path=/tmp/restoreBestimmte Version
duplicati-cli restore \
"s3://bucket" \
--passphrase="passwort" \
--version=5 \
--restore-path=/restoreDatenbank und Logs
Lokale Datenbank
~/.config/Duplicati/
├── XXXXXXXX.sqlite # Backup-Datenbank
├── control_dir/
└── Duplicati-server.sqliteDatenbank reparieren
duplicati-cli repair \
"s3://bucket" \
--passphrase="passwort"Datenbank neu aufbauen
duplicati-cli repair \
"s3://bucket" \
--passphrase="passwort" \
--rebuild-indexLogs
Settings → Log level → Profiling
Logs unter:
~/.config/Duplicati/log/Performance-Optimierung
Block-Größe
--blocksize=100KB # Standard
--blocksize=1MB # Große Dateien
--blocksize=50KB # Viele kleine DateienParallelität
--asynchronous-concurrent-upload-limit=4
--asynchronous-upload-limit=4Kompression
--compression-module=zip # Standard
--compression-module=lz4 # Schneller
--no-compression # DeaktiviertTroubleshooting
Backup fehlgeschlagen
# Verifizierung durchführen
duplicati-cli verify "backend-url" --passphrase="pw"
# Datenbank reparieren
duplicati-cli repair "backend-url" --passphrase="pw"
# Lücken füllen
duplicati-cli purge-broken-files "backend-url" --passphrase="pw"Verbindungsprobleme
# Test-Verbindung
duplicati-cli test-backend "s3://bucket?params"
# Mit Debug
duplicati-cli backup ... --debug-outputSpeicherplatz
# Alte Versionen löschen
duplicati-cli delete "backend-url" --passphrase="pw" --version=0-5
# Kompakte Datenbank
duplicati-cli compact "backend-url" --passphrase="pw"API-Zugriff
REST API
# Status abfragen
curl http://localhost:8200/api/v1/serverstate
# Backup starten
curl -X POST http://localhost:8200/api/v1/backup/1/run
# Backup-Liste
curl http://localhost:8200/api/v1/backupsZusammenfassung
| Backend | Anwendungsfall | |---------|----------------| | S3/B2 | Kosteneffizient für große Daten | | SFTP | Eigener Backup-Server | | Google Drive | Privat/kleine Backups | | Local | NAS/externe Festplatte |
| Option | Empfehlung | |--------|------------| | Verschlüsselung | AES-256, immer aktivieren | | Retention | 7D, 4W, 12M | | Kompression | Standard (zip) | | Block-Größe | 100KB (Standard) |
| Befehl | Funktion | |--------|----------| | backup | Backup erstellen | | restore | Wiederherstellen | | verify | Backup prüfen | | repair | Datenbank reparieren | | list | Dateien auflisten |
Fazit
Duplicati ist ideal für verschlüsselte Cloud-Backups. Das Web-Interface macht die Konfiguration einfach, die CLI ermöglicht Automatisierung. Die breite Backend-Unterstützung erlaubt flexible Backup-Strategien. Für sensible Daten ist die integrierte Verschlüsselung essentiell. Die Kombination aus Deduplizierung und Kompression hält den Speicherverbrauch gering.