47 lines
1.1 KiB
Bash
Executable File
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}"
|