readme.md hinzugefügt
This commit is contained in:
@@ -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 <dbname>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 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`.
|
||||||
Reference in New Issue
Block a user