Mehrstufiges Abbild mit Standalone-Ausgabe, eigener Migrationsdienst, Worker als ESM-Buendel, LXC-Installer fuer Proxmox, Reverse-Proxy-Beispiele, Sicherungsskript und Zustandspruefung. Stapel gebaut und mit Agent-Durchlauf geprueft. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
39 lines
1.3 KiB
Bash
Executable File
39 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Sichert Datenbank und hochgeladene PDFs von ProxLedger.
|
|
#
|
|
# ./backup.sh /pfad/zum/sicherungsordner
|
|
#
|
|
# Für regelmäßige Sicherungen in die Crontab eintragen, z. B. täglich um 02:30 Uhr:
|
|
# 30 2 * * * /opt/proxledger/deploy/backup.sh /var/backups/proxledger
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
ZIEL="${1:-/var/backups/proxledger}"
|
|
AUFBEWAHRUNG_TAGE="${AUFBEWAHRUNG_TAGE:-30}"
|
|
STAND=$(date +%Y%m%d-%H%M%S)
|
|
COMPOSE_VERZEICHNIS="${COMPOSE_VERZEICHNIS:-/opt/proxledger}"
|
|
|
|
mkdir -p "$ZIEL"
|
|
cd "$COMPOSE_VERZEICHNIS"
|
|
|
|
echo "Sichere Datenbank …"
|
|
docker compose exec -T postgres pg_dump -U "${POSTGRES_USER:-proxledger}" "${POSTGRES_DB:-proxledger}" \
|
|
| gzip > "${ZIEL}/datenbank-${STAND}.sql.gz"
|
|
|
|
echo "Sichere hochgeladene Dateien …"
|
|
docker compose run --rm -T --entrypoint tar web -czf - /data/uploads > "${ZIEL}/uploads-${STAND}.tar.gz" 2>/dev/null || true
|
|
|
|
echo "Sichere Konfiguration …"
|
|
cp .env "${ZIEL}/env-${STAND}.txt"
|
|
chmod 600 "${ZIEL}/env-${STAND}.txt"
|
|
|
|
echo "Entferne Sicherungen älter als ${AUFBEWAHRUNG_TAGE} Tage …"
|
|
find "$ZIEL" -maxdepth 1 -name "*-*.sql.gz" -mtime "+${AUFBEWAHRUNG_TAGE}" -delete
|
|
find "$ZIEL" -maxdepth 1 -name "*-*.tar.gz" -mtime "+${AUFBEWAHRUNG_TAGE}" -delete
|
|
find "$ZIEL" -maxdepth 1 -name "env-*.txt" -mtime "+${AUFBEWAHRUNG_TAGE}" -delete
|
|
|
|
echo "Fertig: ${ZIEL}"
|
|
ls -lh "$ZIEL" | tail -n 5
|