Backupscript für Borgbackup
Find a file
2026-09-13 18:06:18 +02:00
.backup.conf console out implementiert 2026-09-13 16:35:01 +02:00
.gitignore logrotation logik komplett überarbeitet 2026-09-13 16:10:37 +02:00
AGENTS.md logrotation logik komplett überarbeitet 2026-09-13 16:10:37 +02:00
borg-backup.sh version und copyright in console_out 2026-09-13 18:06:18 +02:00
README.md logrotation geändert und korrigiert, einrückungen korrigiert 2026-09-13 14:06:28 +02:00

Borg Backup

borg-backup ist ein Bash-Skript für automatisierte, verschlüsselte Backups mit BorgBackup über SSH. Es erstellt Sicherungsarchive, bereinigt alte Archive und benachrichtigt optional per E-Mail über Erfolg oder Fehler.

Funktionen

  • Konfigurationsgesteuerte SSH-Repositorys
  • Verschlüsselung über BORG_PASSPHRASE
  • Freie Auswahl mehrerer Backup-Quellen
  • Ausschluss von Dateien und Verzeichnissen
  • Aufbewahrung täglicher und wöchentlicher Sicherungen
  • Repository-Kompaktierung nach dem Pruning
  • Anhängende Protokolldatei
  • Optionale E-Mail-Benachrichtigung
  • Abbruch bei fehlgeschlagener SSH-Verbindung

Voraussetzungen

  • Bash 4.3 oder neuer
  • BorgBackup
  • OpenSSH mit schlüsselbasierter Authentifizierung
  • mail für optionale E-Mail-Benachrichtigungen

Installation

  1. BorgBackup installieren und einen SSH-Schlüssel für den Backup-Server einrichten.

  2. Die Vorlage .backup.conf kopieren und bearbeiten:

    cp .backup.conf "$HOME/.local/share/borg-backup/default.conf"
    chmod 600 "$HOME/.local/share/borg-backup/default.conf"
    

    Alternativ nach /etc/borg-backup/default.conf.

  3. BORG_PASSPHRASE, SSH-Zugangsdaten, Repository-Pfad, Backup-Quellen, Logdatei und E-Mail-Adresse anpassen.

optional:

  1. Script in ein von überall zugängliches Verzeichnis kopieren, bzw. mit git clonen:

    sudo mkdir /opt/borg-backup && cd /opt/borg-backup
    git clone ssh://git@git.mhard.de:4022/mirko/borg-backup.git
    
  2. Script in /usr/local/bin verlinken:

    sudo ln -s /opt/borg-backup/borg-backup.sh /usr/local/bin
    

Die Konfigurationsdatei enthält Zugangsdaten und sollte niemals zusammen mit echten Geheimnissen in ein Versionsverwaltungssystem aufgenommen werden.

Konfiguration

Die Konfiguration wird in dieser Reihenfolge geprüft; die erste vorhandene Datei wird verwendet:

  1. übergebenen Konfigurationspfad
  2. $HOME/.local/share/borg-backup/default.conf
  3. /etc/borg-backup/default.conf
  4. .backup.conf im Projektverzeichnis
Variable Beschreibung
BORG_PASSPHRASE Passwort für das verschlüsselte Borg-Repository
SSH_USER SSH-Benutzer auf dem Backup-Server
SSH_HOST Hostname oder IP-Adresse des Backup-Servers
SSH_PORT SSH-Port
SSH_KEY Optionaler Pfad zum privaten SSH-Schlüssel; wird an ssh und borg über BORG_RSH weitergegeben
SSH_TEST_CMD Optionaler Befehl für den SSH-Verbindungstest, Standard: ls (manche Systeme wie Hetzner Storage Boxen benötigen einen anderen Befehl)
REMOTE_PATH Pfad zum Borg-Repository auf dem Server
INCLUDE Leerzeichen-getrennte Liste der Backup-Quellen
EXCLUDE Optionaler, leerzeichen-getrennter Borg-Ausschlussmuster
LOGFILE Basename der Logdatei (ohne Erweiterung); Logfile wird in $HOME/.local/share/borg-backup/log angelegt
NOTIFY_EMAIL Empfängeradresse für Status-E-Mails
PRUNE_DAILY Anzahl aufzubewahrender täglicher Archive, Standard: 7
PRUNE_WEEKLY Anzahl aufzubewahrender wöchentlicher Archive, Standard: 4
LOG_ROTATION Anzahl der aufzubewahrenden Logfiles, Standard: 7

Backup-Quellen und Ausschlussmuster werden als leerzeichengetrennte Werte konfiguriert. Pfade mit Leerzeichen werden dadurch nicht unterstützt.

Ist der benutzerspezifische Pfad ($HOME/.local/share/borg-backup) nicht vorhanden, wird er angelegt, auch wenn keine benutzerspezifische Konfiguration verwendet wird. Ist das benutzerspezifische Logverzeichnis nicht vorhanden wird es ebenfalls angelegt.

Verwendung

Standardkonfiguration ausführen:

./borg-backup.sh

Explizite Konfigurationsdatei verwenden:

./borg-backup.sh /pfad/zur/backup.conf

Das Skript führt nacheinander diese Schritte aus:

  1. Konfiguration laden und Pflichtvariablen prüfen
  2. SSH-Verbindung testen
  3. Borg-Archiv erstellen
  4. Alte Archive bereinigen
  5. Repository kompaktieren
  6. Status in die Logdatei schreiben
  7. Optional die letzten 40 Logzeilen per E-Mail versenden

Automatisierung

Das Skript kann über cron, systemd oder einen anderen Scheduler ausgeführt werden. Bei der Ausführung als Dienst müssen die Konfigurationsdatei, der SSH-Schlüssel und das Borg-Passwort für das Dienstkonto zugänglich sein.

Sicherheit

  • Repository-Zugangsdaten in einer Datei mit Berechtigung 600 speichern.
  • Den privaten SSH-Schlüssel mit einer Passphrase schützen.
  • Das Borg-Passwort sicher verwahren; ohne dieses Passwort sind verschlüsselte Archive nicht wiederherstellbar.
  • Die Wiederherstellung regelmäßig testen.
  • Keine Konfigurationsdatei mit echten Zugangsdaten committen.