From f656a3d9db62ffae3af867951e1f37a7630bcfb1 Mon Sep 17 00:00:00 2001 From: Jens Beckmann Date: Sun, 31 May 2026 17:29:44 +0000 Subject: [PATCH] =?UTF-8?q?readme.md=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme.md | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 readme.md diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..7464615 --- /dev/null +++ b/readme.md @@ -0,0 +1,134 @@ +# 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`.