Restic Backup Tool – Installation und Konfiguration für Server | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

303 Dokumentationen verfügbar

Wissensdatenbank

Restic Backup Tool Installation Konfiguration

Zuletzt aktualisiert: 05.04.2026 um 19:42 Uhr

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!
⚠️ Wichtig: Speichern Sie das Passwort in einem sicheren Passwort-Manager! Ohne Passwort können Backups nicht wiederhergestellt werden.

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

✅ Gut zu wissen: Restic kann sehr große Dateien und viele Dateien effizient handhaben. Ein Backup mit 100.000 Dateien dauert üblicherweise nur wenige Minuten.
  • 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 prune ausfü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

Weitere Ressourcen

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120