Variablen ausgelagert, weil sauberer

This commit is contained in:
Patrick Asmus
2026-06-07 20:02:33 +02:00
parent 15b67ab1ee
commit c45bf64738
5 changed files with 107 additions and 39 deletions
+22 -15
View File
@@ -3,27 +3,34 @@
## Ablauf
1. Das Script ermittelt das Projektverzeichnis.
2. Es legt Backup- und Log-Verzeichnis an.
3. Es prüft benötigte Kommandos und freien Speicher.
4. Es stoppt Docker mit `docker compose down`.
5. Es erstellt ein `tar.gz`-Archiv des Projektordners.
6. Es startet Docker mit `docker compose up -d`.
7. Es lädt das Archiv per SFTP hoch.
8. Es verschickt bei Erfolg oder Fehler eine Mail, sofern Mailversand konfiguriert ist.
9. Es löscht das lokale Archiv, außer `KEEP_LOCAL_BACKUP=true` ist gesetzt.
2. Es lädt `docker-backup-sftp-uploader.conf` aus demselben Verzeichnis.
3. Es legt Backup- und Log-Verzeichnis an.
4. Es prüft benötigte Kommandos, Pflichtwerte und freien Speicher.
5. Es stoppt Docker mit `docker compose down`.
6. Es erstellt ein `tar.gz`-Archiv des Projektordners.
7. Es startet Docker mit `docker compose up -d`.
8. Es lädt das Archiv per SFTP hoch.
9. Es verschickt bei Erfolg oder Fehler eine Mail, sofern Mailversand konfiguriert ist.
10. Es löscht das lokale Archiv, außer `KEEP_LOCAL_BACKUP=true` ist gesetzt.
## Konfiguration
Die Konfiguration liegt standardmäßig in `docker-backup-sftp-uploader.conf` neben dem Script. Alternativ kann ein anderer Pfad über `CONFIG_FILE` angegeben werden:
```bash
CONFIG_FILE="/etc/docker-backup-sftp-uploader.conf" ./docker-backup-sftp-uploader.sh
```
| Variable | Standard | Beschreibung |
| --- | --- | --- |
| `SFTP_HOST` | `sftp.example.com` | Hostname des SFTP-Servers |
| `SFTP_HOST` | Pflichtwert | Hostname des SFTP-Servers |
| `SFTP_PORT` | `22` | Port des SFTP-Servers |
| `SFTP_USER` | `user` | SFTP-Benutzer |
| `SFTP_PASS` | `Tpassw0rd` | SFTP-Passwort |
| `SFTP_REMOTE_DIR` | `/uploads` | Zielverzeichnis auf dem SFTP-Server |
| `SFTP_USER` | Pflichtwert | SFTP-Benutzer |
| `SFTP_PASS` | Pflichtwert | SFTP-Passwort |
| `SFTP_REMOTE_DIR` | Pflichtwert | Zielverzeichnis auf dem SFTP-Server |
| `MAIL_TO` | leer | Empfängeradresse; leer deaktiviert Mailversand |
| `MAIL_FROM` | leer | Optionaler Absender für `mail -r` |
| `BACKUP_DIR` | Ordner neben dem Projekt | Lokales Ziel für Archive |
| `BACKUP_DIR` | leer = Ordner neben dem Projekt | Lokales Ziel für Archive |
| `LOG_DIR` | `${BACKUP_DIR}/logs` | Lokales Ziel für Logs |
| `KEEP_LOCAL_BACKUP` | `false` | Lokales Archiv nach Lauf behalten |
| `MIN_FREE_MB` | `1024` | Zusätzlicher freier Speicher, der neben der Quellgröße vorhanden sein muss |
@@ -56,7 +63,7 @@ Wenn keine Mail ankommt:
Das Archiv wird bewusst nicht in `/tmp` erstellt, weil `/tmp` auf vielen Systemen als kleiner tmpfs-Mount eingerichtet ist. Für große Projekte sollte `BACKUP_DIR` auf ein Dateisystem mit ausreichend freiem Speicher zeigen, zum Beispiel:
```bash
BACKUP_DIR=/srv/backups/mein-projekt ./docker-backup-sftp-uploader.sh
BACKUP_DIR="/srv/backups/mein-projekt"
```
Das Script prüft vor dem Docker-Stopp grob, ob genug Platz vorhanden ist. Der Mindestbedarf entspricht ungefähr der Quellgröße plus 10 Prozent Reserve plus `MIN_FREE_MB`.
@@ -66,5 +73,5 @@ Der SFTP-Upload schreibt zuerst `${BACKUP_FILE}.part` und benennt die Datei nach
## Cron-Beispiel
```cron
0 3 * * * SFTP_HOST=backup.example.com SFTP_USER=backup SFTP_PASS='secret' SFTP_REMOTE_DIR=/uploads MAIL_TO=admin@example.com BACKUP_DIR=/srv/backups/mein-projekt /pfad/zum/docker-backup-sftp-uploader.sh
0 3 * * * /pfad/zum/docker-backup-sftp-uploader.sh
```