Zum Hauptinhalt springen

Backups mit restic einrichten

restic ist ein freies Backup-Tool, das Sicherungen clientseitig verschlüsselt, dedupliziert und inkrementell in ein S3-Repository schreibt.

Voraussetzungen

  • S3-Zugangsdaten und ein Bucket (z. B. restic-backups)
  • restic installiert (apt install restic, dnf install restic, brew install restic o. ä.)

Repository initialisieren

export AWS_ACCESS_KEY_ID="IHR_ACCESS_KEY"
export AWS_SECRET_ACCESS_KEY="IHR_SECRET_KEY"
export RESTIC_REPOSITORY="s3:https://s3.internet1.de/restic-backups"
export RESTIC_PASSWORD="ein-sicheres-repository-passwort"

restic init
Repository-Passwort sicher verwahren

Ohne dieses Passwort sind die Backups unwiederbringlich verloren – es kann nicht zurückgesetzt werden.

Backup erstellen

restic backup /etc /home /var/www

# Mit Ausschlüssen
restic backup /home --exclude="*.tmp" --exclude="/home/*/cache"

Snapshots anzeigen:

restic snapshots

Wiederherstellen

# Kompletten Snapshot wiederherstellen
restic restore latest --target /tmp/restore

# Einzelne Pfade
restic restore latest --target /tmp/restore --include /etc/nginx

# Im Repository suchen
restic find "nginx.conf"

Aufbewahrung & Aufräumen

# Behalte: 7 tägliche, 4 wöchentliche, 6 monatliche Snapshots
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

--prune entfernt nicht mehr referenzierte Daten auch physisch aus dem Bucket.

Automatisierung (systemd-Timer)

/etc/restic/env (Rechte 600):

AWS_ACCESS_KEY_ID=IHR_ACCESS_KEY
AWS_SECRET_ACCESS_KEY=IHR_SECRET_KEY
RESTIC_REPOSITORY=s3:https://s3.internet1.de/restic-backups
RESTIC_PASSWORD=ein-sicheres-repository-passwort

/etc/systemd/system/restic-backup.service:

[Unit]
Description=restic Backup

[Service]
Type=oneshot
EnvironmentFile=/etc/restic/env
ExecStart=/usr/bin/restic backup /etc /home /var/www
ExecStartPost=/usr/bin/restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

/etc/systemd/system/restic-backup.timer:

[Unit]
Description=Tägliches restic Backup

[Timer]
OnCalendar=*-*-* 02:30:00
Persistent=true

[Timer]
WantedBy=timers.target
systemctl enable --now restic-backup.timer

Integrität prüfen

restic check                      # Repository-Struktur prüfen
restic check --read-data-subset=5% # Stichprobe der Daten lesen

Verwandte Themen