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

330 Dokumentationen verfügbar

Wissensdatenbank

Restic Backup Tool Installation Konfiguration

Zuletzt aktualisiert: 14.07.2026 um 12:29 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

Texterstellung mit KI-Unterstützung

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
LLMs können Fehler machen. Ihre Nachrichten werden an Google Gemini weitergeleitet.
120