BorgBackup (Borg) ist ein deduplizierendes Backup-Programm mit Kompression und Verschlüsselung. Es speichert nur geänderte Datenblöcke und spart so erheblich Speicherplatz.
Warum BorgBackup?
Vorteile
- Deduplizierung auf Block-Ebene
- Starke AES-256 Verschlüsselung
- Kompression (LZ4, ZSTD, LZMA)
- Schnelle inkrementelle Backups
- Mountbare Archive
- Aktive EntwicklungVergleich mit anderen Tools
| Feature | BorgBackup | rsync | tar | |---------|------------|-------|-----| | Deduplizierung | Ja | Nein | Nein | | Verschlüsselung | Integriert | Extern | Extern | | Inkrementell | Ja | Ja | Nein | | Kompression | Ja | Nein | Optional | | Mountbar | Ja | Nein | Nein |
Installation
Debian/Ubuntu
apt install borgbackupCentOS/RHEL
dnf install epel-release
dnf install borgbackupVia pip (aktuellste Version)
pip install borgbackupVersion prüfen
borg --versionRepository erstellen
Lokales Repository
# Ohne Verschlüsselung
borg init --encryption=none /backup/borg-repo
# Mit Verschlüsselung (empfohlen)
borg init --encryption=repokey /backup/borg-repo
# Mit Keyfile (Schlüssel lokal)
borg init --encryption=keyfile /backup/borg-repoRemote Repository (SSH)
# Auf Backup-Server
borg init --encryption=repokey user@backup-server:/path/to/repo
# Mit spezifischem SSH-Key
BORG_RSH='ssh -i /root/.ssh/backup_key' borg init --encryption=repokey user@backup:/repoVerschlüsselungsmodi
| Modus | Beschreibung | |-------|--------------| | none | Keine Verschlüsselung | | repokey | Schlüssel im Repository | | keyfile | Schlüssel lokal | | repokey-blake2 | Schneller (BLAKE2) | | authenticated | Nur Authentifizierung |
Backup erstellen
Einfaches Backup
borg create /backup/borg-repo::backup-{now} /home /etcMit Optionen
borg create \
--verbose \
--stats \
--progress \
--compression zstd \
--exclude-caches \
--exclude '/home/*/.cache' \
--exclude '*.tmp' \
/backup/borg-repo::server-{now:%Y-%m-%d} \
/home \
/etc \
/var/wwwArchiv-Namen
# Mit Datum
::backup-{now:%Y-%m-%d_%H:%M}
# Mit Hostname
::{hostname}-{now}
# Beispiel
::webserver-2026-01-26Archive verwalten
Archive auflisten
borg list /backup/borg-repoArchiv-Inhalt anzeigen
borg list /backup/borg-repo::backup-2026-01-26Archiv-Statistiken
borg info /backup/borg-repo::backup-2026-01-26Repository-Statistiken
borg info /backup/borg-repoDaten wiederherstellen
Komplettes Archiv
cd /restore
borg extract /backup/borg-repo::backup-2026-01-26Einzelne Dateien
borg extract /backup/borg-repo::backup-2026-01-26 home/user/wichtig.txtMit Pattern
borg extract /backup/borg-repo::backup-2026-01-26 --pattern '+ home/user/documents/*' --pattern '- *'Archiv mounten
mkdir /mnt/backup
borg mount /backup/borg-repo::backup-2026-01-26 /mnt/backup
# Durchsuchen
ls /mnt/backup
# Unmount
borg umount /mnt/backupPruning (alte Backups löschen)
Retention-Policy
borg prune \
--keep-daily=7 \
--keep-weekly=4 \
--keep-monthly=6 \
--keep-yearly=1 \
/backup/borg-repoMit Prefix
borg prune \
--prefix 'webserver-' \
--keep-daily=7 \
--keep-weekly=4 \
/backup/borg-repoDry-Run
borg prune --dry-run --list --keep-daily=7 /backup/borg-repoKompression
Kompressionsalgorithmen
| Algorithmus | Geschwindigkeit | Kompression | |-------------|-----------------|-------------| | none | Schnellste | Keine | | lz4 | Sehr schnell | Niedrig | | zstd | Schnell | Gut | | zlib | Mittel | Gut | | lzma | Langsam | Beste |
Kompression wählen
# Schnell (Standard für schnelle Backups)
borg create --compression lz4 ...
# Ausgewogen
borg create --compression zstd ...
# Beste Kompression
borg create --compression lzma,9 ...
# Auto (basierend auf Dateityp)
borg create --compression auto,zstd ...Automatisierung
Backup-Skript
#!/bin/bash
# /usr/local/bin/borg-backup.sh
# Konfiguration
export BORG_REPO='user@backup-server:/backup/borg-repo'
export BORG_PASSPHRASE='geheimes_passwort'
# Oder: export BORG_PASSCOMMAND='cat /root/.borg-pass'
# Logging
LOG=/var/log/borg-backup.log
exec > >(tee -a $LOG) 2>&1
echo "=== Backup gestartet: $(date) ==="
# Backup erstellen
borg create \
--verbose \
--stats \
--compression zstd \
--exclude-caches \
--exclude '/home/*/.cache/*' \
--exclude '/var/tmp/*' \
--exclude '/tmp/*' \
::'{hostname}-{now:%Y-%m-%d_%H:%M}' \
/home \
/etc \
/var/www \
/var/lib/mysql
backup_exit=$?
# Alte Backups löschen
borg prune \
--keep-daily=7 \
--keep-weekly=4 \
--keep-monthly=6 \
--keep-yearly=1
prune_exit=$?
# Repository komprimieren
borg compact
# Status
global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit ))
if [ ${global_exit} -eq 0 ]; then
echo "Backup erfolgreich abgeschlossen"
elif [ ${global_exit} -eq 1 ]; then
echo "Backup mit Warnungen abgeschlossen"
else
echo "Backup fehlgeschlagen"
fi
echo "=== Backup beendet: $(date) ==="
exit ${global_exit}Cron-Job
# /etc/cron.d/borg-backup
# Täglich um 2:00 Uhr
0 2 * * * root /usr/local/bin/borg-backup.shSystemd-Timer
# /etc/systemd/system/borg-backup.service
[Unit]
Description=BorgBackup
[Service]
Type=oneshot
ExecStart=/usr/local/bin/borg-backup.sh# /etc/systemd/system/borg-backup.timer
[Unit]
Description=BorgBackup Timer
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.targetsystemctl enable borg-backup.timer
systemctl start borg-backup.timerRemote-Backup über SSH
SSH-Key erstellen
ssh-keygen -t ed25519 -f /root/.ssh/borg_backup -N ''Auf Backup-Server
# .ssh/authorized_keys auf Backup-Server
command="borg serve --restrict-to-path /backup/client1",restrict ssh-ed25519 AAAA... root@clientUmgebungsvariablen
export BORG_REPO='backup@server:/backup/repo'
export BORG_RSH='ssh -i /root/.ssh/borg_backup'
export BORG_PASSPHRASE='passwort'Sicherheit
Schlüssel exportieren
# Schlüssel sichern (wichtig!)
borg key export /backup/borg-repo /root/borg-key-backup.txt
# Verschlüsselt exportieren
borg key export --paper /backup/borg-repoSchlüssel importieren
borg key import /backup/borg-repo /root/borg-key-backup.txtPasswort ändern
borg key change-passphrase /backup/borg-repoIntegrität prüfen
Repository prüfen
# Schnelle Prüfung
borg check /backup/borg-repo
# Vollständige Prüfung
borg check --verify-data /backup/borg-repo
# Nur Archive
borg check --archives-only /backup/borg-repoReparieren
borg check --repair /backup/borg-repoMySQL-Backup mit Borg
Skript mit Datenbank-Dump
#!/bin/bash
# MySQL-Dump vor Borg-Backup
DUMP_DIR=/var/backups/mysql
mkdir -p $DUMP_DIR
# Alle Datenbanken dumpen
mysqldump --all-databases --single-transaction > $DUMP_DIR/all-databases.sql
# Oder einzelne Datenbanken
for db in $(mysql -e 'SHOW DATABASES' -s --skip-column-names | grep -v -E '^(information_schema|performance_schema|sys)$'); do
mysqldump --single-transaction $db > $DUMP_DIR/$db.sql
done
# Dann Borg-Backup
borg create ... /var/backups/mysqlMonitoring
Healthcheck
#!/bin/bash
# Am Ende des Backup-Skripts
if [ ${global_exit} -eq 0 ]; then
curl -fsS -m 10 --retry 5 -o /dev/null https://hc-ping.com/your-uuid
fiPrometheus-Metriken
# Nach Backup
echo "borg_backup_last_run $(date +%s)" > /var/lib/prometheus/borg.prom
echo "borg_backup_exit_code $global_exit" >> /var/lib/prometheus/borg.promTroubleshooting
Lock entfernen
# Bei abgebrochenem Backup
borg break-lock /backup/borg-repoCache löschen
borg delete --cache-only /backup/borg-repoVerbose-Modus
borg create -v --list --stats ...Debug
borg --debug create ...Zusammenfassung
| Befehl | Funktion | |--------|----------| | borg init | Repository erstellen | | borg create | Backup erstellen | | borg list | Archive auflisten | | borg extract | Wiederherstellen | | borg mount | Archiv mounten | | borg prune | Alte Backups löschen | | borg check | Integrität prüfen |
| Option | Wirkung | |--------|---------| | --compression | Kompression wählen | | --exclude | Dateien ausschließen | | --stats | Statistiken anzeigen | | --progress | Fortschritt anzeigen |
| Retention | Bedeutung | |-----------|-----------| | --keep-daily | Tägliche behalten | | --keep-weekly | Wöchentliche behalten | | --keep-monthly | Monatliche behalten | | --keep-yearly | Jährliche behalten |
Fazit
BorgBackup ist eine ausgezeichnete Lösung für Server-Backups. Die Deduplizierung spart erheblich Speicherplatz bei häufigen Backups. Die integrierte Verschlüsselung schützt sensible Daten. Mit automatischer Rotation und SSH-Support eignet sich Borg ideal für automatisierte Backup-Strategien. Die Möglichkeit, Archive zu mounten, erleichtert die Wiederherstellung einzelner Dateien erheblich.