Files
eventlens/scripts/backup-db.sh
T
2026-04-26 16:35:45 +02:00

47 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
BACKUP_DIR="${BACKUP_DIR:-${PROJECT_DIR}/backups}"
if [[ ! -f "${PROJECT_DIR}/.env" ]]; then
echo ".env wurde in ${PROJECT_DIR} nicht gefunden." >&2
exit 1
fi
read_env_value() {
local key="$1"
local line
line="$(grep -E "^${key}=" "${PROJECT_DIR}/.env" | tail -n 1 || true)"
if [[ -z "${line}" ]]; then
echo "Wert ${key} wurde in ${PROJECT_DIR}/.env nicht gefunden." >&2
exit 1
fi
printf '%s' "${line#*=}"
}
DB_NAME="$(read_env_value DB_NAME)"
DB_USER="$(read_env_value DB_USER)"
DB_PASSWORD="$(read_env_value DB_PASSWORD)"
TIMESTAMP="$(date +%Y%m%d-%H%M%S)"
BACKUP_FILE="${BACKUP_DIR}/eventlens-${DB_NAME}-${TIMESTAMP}.sql.gz"
mkdir -p "${BACKUP_DIR}"
docker compose -f "${PROJECT_DIR}/docker-compose.yml" exec -T db \
mariadb-dump \
--single-transaction \
--quick \
--routines \
--triggers \
-u"${DB_USER}" \
"-p${DB_PASSWORD}" \
"${DB_NAME}" \
| gzip -c > "${BACKUP_FILE}"
echo "Backup erstellt: ${BACKUP_FILE}"