14274e6260f1c937e81df8556f70f3dcc61c14d9
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.
Description
Languages
Shell
100%