3.1 KiB
Dokumentation
Ablauf
- Das Script ermittelt das Projektverzeichnis.
- Es lädt
docker-backup-sftp-uploader.confaus demselben Verzeichnis. - Es legt Backup- und Log-Verzeichnis an.
- Es prüft benötigte Kommandos, Pflichtwerte und freien Speicher.
- Es stoppt Docker mit
docker compose down. - Es erstellt ein
tar.gz-Archiv des Projektordners. - Es startet Docker mit
docker compose up -d. - Es lädt das Archiv per SFTP hoch.
- Es verschickt bei Erfolg oder Fehler eine Mail, sofern Mailversand konfiguriert ist.
- Es löscht das lokale Archiv, außer
KEEP_LOCAL_BACKUP=trueist 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:
CONFIG_FILE="/etc/docker-backup-sftp-uploader.conf" ./docker-backup-sftp-uploader.sh
| Variable | Standard | Beschreibung |
|---|---|---|
SFTP_HOST |
Pflichtwert | Hostname des SFTP-Servers |
SFTP_PORT |
22 |
Port des SFTP-Servers |
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 |
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 |
Voraussetzungen
Auf dem Server müssen diese Kommandos verfügbar sein:
dockertargzipsshpasssftp- optional
mail
Mailversand
Das Script nutzt das lokale Kommando mail. Auf Debian/Ubuntu kann dafür zum Beispiel mailutils, bsd-mailx oder ein passendes Mail-Relay wie msmtp eingerichtet sein.
Wenn keine Mail ankommt:
- prüfen, ob
MAIL_TOgesetzt ist - prüfen, ob
mailinstalliert ist:command -v mail - einen manuellen Test ausführen:
echo test | mail -s "Test" empfaenger@example.com - lokale Mail-Logs prüfen, zum Beispiel
/var/log/mail.log - falls
MAIL_FROMProbleme macht, testweise leer lassen
Speicherplatz und große Dateien
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:
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.
Der SFTP-Upload schreibt zuerst ${BACKUP_FILE}.part und benennt die Datei nach erfolgreichem Upload um. Dadurch bleibt auf dem Zielserver erkennbar, ob ein Upload vollständig abgeschlossen wurde.
Cron-Beispiel
0 3 * * * /pfad/zum/docker-backup-sftp-uploader.sh