Files
aurbis/tasks/backup/aurbis-dump-akatosh.sh.j2
2026-07-19 17:35:55 +02:00

32 lines
1.2 KiB
Django/Jinja

#!/bin/bash
# {{ ansible_managed }}
# Dump application databases to {{ backup_dump_dir }}
# for pickup by the backup host
set -euo pipefail
umask 077
DEST={{ backup_dump_dir }}
mkdir -p "$DEST"
# MariaDB stacks: dump via the stack's `db` service using its own env creds.
dump_mariadb() { # <stack dir under /opt> <output file>
docker compose -f "/opt/$1/docker-compose.yml" exec -T db sh -c \
'exec mariadb-dump --single-transaction --quick --routines --events \
-u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' \
| gzip > "$DEST/$2.tmp"
mv "$DEST/$2.tmp" "$DEST/$2"
}
dump_mariadb nextcloud nextcloud.sql.gz
dump_mariadb gitea gitea.sql.gz
dump_mariadb hdwiki mediawikidb.sql.gz
# Authentik PostgreSQL (docker compose)
docker compose -f /opt/authentik/docker-compose.yml exec -T postgresql \
pg_dump -U authentik -d authentik | gzip > "$DEST/authentik.sql.gz.tmp"
mv "$DEST/authentik.sql.gz.tmp" "$DEST/authentik.sql.gz"
# Drone CI sqlite (online-safe consistent copy)
sqlite3 /opt/drone/drone/database.sqlite ".backup '$DEST/drone.sqlite.tmp'"
mv "$DEST/drone.sqlite.tmp" "$DEST/drone.sqlite"
date --iso-8601=seconds > "$DEST/LAST_DUMP"