Restic Backup Tool Installation Konfiguration
Restic Backup Tool – Installation und Konfiguration für Server
Was ist Restic?
Restic ist ein modernes Backup-Tool mit Fokus auf Sicherheit, Effizienz und Benutzerfreundlichkeit. Im Gegensatz zu traditionellen Backup-Tools bietet Restic:
- End-to-End Verschlüsselung: AES-256 Verschlüsselung
- Deduplizierung: Spart bis zu 80% Speicherplatz
- Inkrementelle Backups: Schnell und effizient
- Mehrere Backends: Lokal, SFTP, S3, B2, Rclone und mehr
- Cross-Platform: Linux, macOS, Windows
- Einfache Wiederherstellung: Einzelne Dateien oder komplette Snapshots
- Verification: Integrität von Backups überprüfbar
Vergleich: Restic vs Alternativen
| Feature | Restic | Borg | rsync |
|---|---|---|---|
| Verschlüsselung | AES-256 (Standard) | AES-256 (optional) | SSH TLS |
| Deduplizierung | Ja (Standard) | Ja (Standard) | Nein |
| Multiple Backend | Ja (6+) | Nein (nur lokal/SSH) | Nein |
| Einfache Wiederherstellung | Sehr einfach | Komplex | Einfach |
| Performance | Schnell | Sehr schnell | Schnell |
| Komplexität | Niedrig | Mittel | Niedrig |
Installation von Restic
Auf Ubuntu/Debian
apt update apt install -y restic
Oder aus Binaries (neueste Version)
cd /tmp wget https://github.com/restic/restic/releases/download/v0.16.2/restic_0.16.2_linux_amd64.bz2 bunzip2 restic_0.16.2_linux_amd64.bz2 chmod +x restic_0.16.2_linux_amd64 sudo mv restic_0.16.2_linux_amd64 /usr/local/bin/restic # Überprüfen restic version
Repository Typen
Restic unterstützt verschiedene Backends:
1. Lokales Verzeichnis
restic -r /backup/restic init restic -r /backup/restic backup /home /etc
2. SFTP (SSH-basiert)
restic -r sftp://user@example.com:/backup init restic -r sftp://user@example.com:/backup backup /home
3. AWS S3 oder MinIO
export AWS_ACCESS_KEY_ID="your-access-key" export AWS_SECRET_ACCESS_KEY="your-secret-key" # Mit MinIO restic -r s3:https://minio.example.com:9000/backups init
4. Backblaze B2
restic -r b2://account-id:app-key@bucket-name init
Repository Initialisieren
Lokales Repository
# Backup-Verzeichnis erstellen mkdir -p /mnt/backups/restic # Repository initialisieren restic -r /mnt/backups/restic init # Sie werden aufgefordert, ein Passwort zu setzen # Wählen Sie ein starkes Passwort!
Remote Repository (SFTP)
restic -r sftp://backup-user@server.com:/home/backup/restic init # SSH Key-basierte Authentifizierung (empfohlen) export RESTIC_PASSWORD=your-restic-password restic -r sftp:user@host:/path init
Backup erstellen
Einfaches Backup
export RESTIC_REPOSITORY=/mnt/backups/restic export RESTIC_PASSWORD=your-secure-password # Home-Verzeichnis und /etc sichern restic backup /home /etc # Fortschritt wird angezeigt # Nach Abschluss: # processed 12345 files, 4.5 GB
Mit Ausschluss
restic backup /home /etc \
--exclude="*/node_modules" \
--exclude="*.tmp" \
--exclude="/home/*/Downloads" \
--exclude="/home/*/.cache"
Snapshots anzeigen
restic snapshots # Zeigt: # ID | Time | Host | Tags | Paths # 0123456 | 2024-04-05 10:30:00 | myserver | - | /home /etc # 0234567 | 2024-04-04 10:30:00 | myserver | - | /home /etc
Wiederherstellung
Gesamten Snapshot wiederherstellen
# Neuesten Snapshot abrufen restic restore latest --target /restore/location # Oder spezifischen Snapshot restic restore 0123456 --target /restore/location
Einzelne Dateien extrahieren
# Datei anzeigen restic find myfile.txt # Datei extrahieren restic restore latest --target /tmp --include myfile.txt
Dateisystem als FUSE mounten
# Repository als Read-Only Filesystem mounten mkdir /mnt/restic-snapshot restic mount /mnt/restic-snapshot # Jetzt können Sie die Snapshots durchsuchen ls /mnt/restic-snapshot ls /mnt/restic-snapshot/snapshots/latest/home
Integrität überprüfen
Repository-Check
# Überprüft alle Snapshots und Integrität restic check # Mit Daten-Verifikation (länger, gründlicher) restic check --with-cache
Snapshot Verifikation
# Spezifischen Snapshot überprüfen restic check -id 0123456
Pruning und Aufbewahrung
Aufbewahrungsrichtlinien definieren
Automatisch alte Backups löschen um Speicher zu sparen:
# Zeigt welche Snapshots gelöscht würden restic forget --keep-last 7 --keep-daily 30 --keep-weekly 24 --keep-monthly 36 --dry-run # Tatsächlich löschen restic forget --keep-last 7 --keep-daily 30 --keep-weekly 24 --keep-monthly 36 --prune
Aufbewahrungsparameter erklärt
| Parameter | Bedeutung | Beispiel |
|---|---|---|
| --keep-last | Letzte N Snapshots behalten | --keep-last 10 |
| --keep-daily | Tägliche Snapshots für N Tage | --keep-daily 7 |
| --keep-weekly | Wöchentliche Snapshots für N Wochen | --keep-weekly 4 |
| --keep-monthly | Monatliche Snapshots für N Monate | --keep-monthly 12 |
| --keep-yearly | Jährliche Snapshots für N Jahre | --keep-yearly 7 |
Automatisierung mit systemd
Passwort speichern (sicher)
# Restic password in Datei speichern (600 Berechtigungen) echo "your-secure-password" > /etc/restic/password.txt chmod 600 /etc/restic/password.txt
Backup Script erstellen
Erstellen Sie /usr/local/bin/restic-backup.sh:
#!/bin/bash
set -e
# Konfiguration
RESTIC_REPO="/mnt/backups/restic"
RESTIC_PASSWORD_FILE="/etc/restic/password.txt"
BACKUP_PATHS="/home /etc /opt"
EXCLUDES=(
"*/node_modules"
"*/vendor"
"*/.cache"
"*/Downloads"
"*.tmp"
)
# Environment Variablen
export RESTIC_REPOSITORY="$RESTIC_REPO"
export RESTIC_PASSWORD_FILE="$RESTIC_PASSWORD_FILE"
# Exclude Flags bauen
EXCLUDE_FLAGS=""
for exclude in "${EXCLUDES[@]}"; do
EXCLUDE_FLAGS="$EXCLUDE_FLAGS --exclude=$exclude"
done
# Backup durchführen
echo "Starting backup of $BACKUP_PATHS..."
restic backup $BACKUP_PATHS $EXCLUDE_FLAGS
# Alte Backups entfernen
echo "Cleaning up old backups..."
restic forget --keep-last 7 --keep-daily 30 --keep-weekly 24 --keep-monthly 12 --prune
# Integrität überprüfen
echo "Verifying backup integrity..."
restic check --with-cache
echo "Backup completed successfully!"
Executable machen:
chmod +x /usr/local/bin/restic-backup.sh
Systemd Service erstellen
Erstellen Sie /etc/systemd/system/restic-backup.service:
[Unit] Description=Restic Backup Service After=network.target [Service] Type=oneshot User=root ExecStart=/usr/local/bin/restic-backup.sh StandardOutput=journal StandardError=journal
Systemd Timer (Scheduler)
Erstellen Sie /etc/systemd/system/restic-backup.timer:
[Unit] Description=Daily Restic Backup Requires=restic-backup.service [Timer] # Täglich um 2:00 Uhr OnCalendar=daily OnCalendar=*-*-* 02:00:00 Persistent=true [Install] WantedBy=timers.target
Timer aktivieren
systemctl daemon-reload systemctl enable restic-backup.timer systemctl start restic-backup.timer # Status prüfen systemctl status restic-backup.timer systemctl list-timers restic-backup.timer # Logs anschauen journalctl -u restic-backup.service -f
Backup zu mehreren Backends
Erstellen Sie mehrere Repositories für zusätzliche Redundanz:
#!/bin/bash # Multi-backend backup script RESTIC_PASSWORD="secure-password" # Lokal echo "Backing up to local storage..." RESTIC_REPOSITORY=/mnt/backups/restic restic backup /home /etc --quiet # SFTP echo "Backing up to remote SFTP..." RESTIC_REPOSITORY=sftp://user@backup.server.com:/backups/restic restic backup /home /etc --quiet # S3 echo "Backing up to MinIO S3..." export AWS_ACCESS_KEY_ID="key" export AWS_SECRET_ACCESS_KEY="secret" RESTIC_REPOSITORY=s3:https://minio.example.com:9000/backups restic backup /home /etc --quiet echo "All backups completed!"
Backup-Status Benachrichtigungen
Mit Ntfy Push Notifications
#!/bin/bash
# Enhanced backup script with notifications
RESTIC_REPO="/mnt/backups/restic"
RESTIC_PASSWORD_FILE="/etc/restic/password.txt"
NTFY_URL="https://ntfy.example.com/backups"
HOSTNAME=$(hostname)
export RESTIC_REPOSITORY="$RESTIC_REPO"
export RESTIC_PASSWORD_FILE="$RESTIC_PASSWORD_FILE"
# Backup durchführen
if restic backup /home /etc; then
# Erfolg Benachrichtigung
curl -H "Priority: 2" \
-H "Title: Backup Erfolgreich" \
-d "Backup on $HOSTNAME completed successfully" \
"$NTFY_URL"
else
# Fehler Benachrichtigung
curl -H "Priority: high" \
-H "Title: Backup Fehler" \
-d "Backup on $HOSTNAME FAILED" \
"$NTFY_URL"
exit 1
fi
Performance-Tipps
- Parallele Uploads: Restic nutzt automatisch mehrere Verbindungen
- Cache optimieren: Verwenden Sie lokalen Cache für schnellere Backups
- Bandwidth-Limiting: Bei Remote-Backups:
--limit-upload 10000(in KB/s) - Repository-Wartung: Regelmäßig
pruneausführen
Repository-Statistiken
# Größe aller Snapshots restic stats # Output: # Total file count: 123456 # Total size: 12.34 GB # Detaillierte Informationen du -sh /mnt/backups/restic
Recovery Plan Testen
Monatlich sollten Sie Ihr Recovery Plan testen:
#!/bin/bash
# Recovery Plan Test Script
echo "Testing recovery plan..."
# 1. Repository-Integrität prüfen
restic check --with-cache || exit 1
# 2. Spezifischen Snapshot wiederherstellen (zu Test-Verzeichnis)
SNAPSHOT=$(restic snapshots | tail -1 | awk '{print $1}')
restic restore "$SNAPSHOT" --target /tmp/recovery-test
# 3. Testdateien überprüfen
test -f /tmp/recovery-test/home/user/.bashrc && echo "✓ Home files present"
test -f /tmp/recovery-test/etc/hosts && echo "✓ Etc files present"
# 4. Aufräumen
rm -rf /tmp/recovery-test
echo "Recovery plan test passed!"
Verwandte Artikel
- 📖 Backup Strategien - 3-2-1 Regel
- 📖 Borg Backup Deduplizierung
- 📖 Rsync Dateien Synchronisieren
- 🔧 Sichere Server bei Enjyn mieten
- 🔧 Enjyn Server Monitor – Kostenlose Uptime-Überwachung