# 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 ```bash 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) ```bash 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 ```bash # 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 ``` ### Schritt 4 – Ersten Backup-Test ausführen ```bash sudo -u borgbackup /opt/borg-backup/scripts/backup-postgres.sh ``` ### Schritt 5 – Systemd-Timer aktivieren ```bash sudo systemctl enable --now borg-backup.timer sudo systemctl list-timers borg-backup.timer ``` --- ## Verwendung ### Backup manuell starten ```bash sudo -u borgbackup /opt/borg-backup/scripts/backup-postgres.sh ``` ### Logs ansehen ```bash journalctl -u borg-backup.service -f ``` ### Verfügbare Archive auflisten ```bash sudo -u borgbackup /opt/borg-backup/scripts/restore-postgres.sh --list ``` ### Datenbank wiederherstellen ```bash # 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 ```bash sudo -u borgbackup /opt/borg-backup/scripts/verify-backup.sh ``` --- ## Wichtige Hinweise ### Borg-Key sichern! Nach dem ersten Backup unbedingt den Encryption-Key sichern: ```bash 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`.