- Shell 100%
| .backup.conf | ||
| .gitignore | ||
| AGENTS.md | ||
| borg-backup.sh | ||
| README.md | ||
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
mailfür optionale E-Mail-Benachrichtigungen
Installation
-
BorgBackup installieren und einen SSH-Schlüssel für den Backup-Server einrichten.
-
Die Vorlage
.backup.confkopieren 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. -
BORG_PASSPHRASE, SSH-Zugangsdaten, Repository-Pfad, Backup-Quellen, Logdatei und E-Mail-Adresse anpassen.
optional:
-
Script in ein von überall zugängliches Verzeichnis kopieren, bzw. mit
gitclonen:sudo mkdir /opt/borg-backup && cd /opt/borg-backup git clone ssh://git@git.mhard.de:4022/mirko/borg-backup.git -
Script in
/usr/local/binverlinken: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:
- übergebenen Konfigurationspfad
$HOME/.local/share/borg-backup/default.conf/etc/borg-backup/default.conf.backup.confim 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:
- Konfiguration laden und Pflichtvariablen prüfen
- SSH-Verbindung testen
- Borg-Archiv erstellen
- Alte Archive bereinigen
- Repository kompaktieren
- Status in die Logdatei schreiben
- 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
600speichern. - 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.