2026-05-31 17:37:15 +00:00
2026-05-31 17:28:57 +00:00
2026-05-31 17:36:33 +00:00
2026-05-31 17:37:15 +00:00
2026-05-31 17:29:44 +00:00

Borg PostgreSQL Pull Backup

Pull-basiertes Borg Backup für PostgreSQL, läuft auf einem Raspberry Pi.

Verzeichnisstruktur

borg-backup/
├── config/
│   └── backup.conf          ← Konfiguration (anpassen!)
├── scripts/
│   ├── setup.sh             ← Einmaliges Setup (als root)
│   ├── backup-postgres.sh   ← Backup-Hauptskript
│   ├── restore-postgres.sh  ← Wiederherstellung
│   └── verify-backup.sh     ← Integritätsprüfung
└── systemd/
    ├── borg-backup.service  ← Systemd-Service
    └── borg-backup.timer    ← Systemd-Timer (täglich 02:30)

Schnellstart

Schritt 1 Dateien deployen

sudo cp -r borg-backup/ /opt/borg-backup
sudo nano /opt/borg-backup/config/backup.conf   # Konfiguration anpassen!

Schritt 2 Setup ausführen (auf dem Pi)

sudo /opt/borg-backup/scripts/setup.sh

Das Skript gibt am Ende die Befehle aus, die auf dem PostgreSQL-Server einzurichten sind.

Schritt 3 PostgreSQL-Server einrichten

# Auf dem PostgreSQL-Server:
sudo apt install borgbackup
sudo useradd -m -s /bin/bash borgclient
sudo mkdir -p /home/borgclient/.ssh
# Öffentlichen SSH-Schlüssel des Pi einfügen (wird vom setup.sh ausgegeben):
sudo nano /home/borgclient/.ssh/authorized_keys
sudo chmod 700 /home/borgclient/.ssh
sudo chmod 600 /home/borgclient/.ssh/authorized_keys
sudo chown -R borgclient:borgclient /home/borgclient/.ssh

# sudo für pg_dump erlauben:
sudo visudo -f /etc/sudoers.d/borgclient
# Inhalt (je Datenbank eine Zeile):
# borgclient ALL=(postgres) NOPASSWD: /usr/bin/pg_dump --format=custom --no-password <dbname>

Schritt 4 Ersten Backup-Test ausführen

sudo -u borgbackup /opt/borg-backup/scripts/backup-postgres.sh

Schritt 5 Systemd-Timer aktivieren

sudo systemctl enable --now borg-backup.timer
sudo systemctl list-timers borg-backup.timer

Verwendung

Backup manuell starten

sudo -u borgbackup /opt/borg-backup/scripts/backup-postgres.sh

Logs ansehen

journalctl -u borg-backup.service -f

Verfügbare Archive auflisten

sudo -u borgbackup /opt/borg-backup/scripts/restore-postgres.sh --list

Datenbank wiederherstellen

# In neue Datenbank wiederherstellen:
sudo -u borgbackup /opt/borg-backup/scripts/restore-postgres.sh \
    --archive myapp_production-2025-01-15T02:30 \
    --database myapp_production_restored

# Als .pgdump-Datei extrahieren:
sudo -u borgbackup /opt/borg-backup/scripts/restore-postgres.sh \
    --archive myapp_production-2025-01-15T02:30 \
    --output-dir /tmp/restore

Repository-Integrität prüfen

sudo -u borgbackup /opt/borg-backup/scripts/verify-backup.sh

Wichtige Hinweise

Borg-Key sichern!

Nach dem ersten Backup unbedingt den Encryption-Key sichern:

sudo -u borgbackup borg key export /backup/borg-repo ~/borg-key-backup.txt
# Datei sicher aufbewahren (z.B. verschlüsselter USB-Stick, Passwortmanager)

Passphrase sichern!

Die BORG_PASSPHRASE aus backup.conf sicher aufbewahren.
Ohne Key + Passphrase sind alle Backups unbrauchbar!


Retention Policy (Standard)

Zeitraum Aufbewahrung
Täglich 7 Tage
Wöchentlich 4 Wochen
Monatlich 6 Monate

Anpassbar in config/backup.conf über KEEP_DAILY, KEEP_WEEKLY, KEEP_MONTHLY.

S
Description
No description provided
Readme 40 KiB
Languages
Shell 100%