Files
resman/scripts/backup-db.sh
T
2026-06-17 18:42:23 +02:00

31 lines
899 B
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
BACKUP_DIR="${BACKUP_DIR:-$ROOT_DIR/backups}"
DB_SERVICE="${DB_SERVICE:-db}"
DB_NAME="${DB_NAME:-resource_manager}"
DB_USER="${DB_USER:-resman}"
DB_PASSWORD="${DB_PASSWORD:-resmanpass}"
KEEP_DAYS="${KEEP_DAYS:-30}"
TIMESTAMP="$(date +%Y%m%d-%H%M%S)"
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}-${TIMESTAMP}.sql"
mkdir -p "$BACKUP_DIR"
cd "$ROOT_DIR"
echo "Creating database backup: $BACKUP_FILE"
docker compose exec -T "$DB_SERVICE" sh -c \
"MARIADB_PWD='$DB_PASSWORD' mariadb-dump --single-transaction --quick --routines --triggers -u '$DB_USER' '$DB_NAME'" \
> "$BACKUP_FILE"
gzip "$BACKUP_FILE"
if [[ "$KEEP_DAYS" =~ ^[0-9]+$ ]] && [[ "$KEEP_DAYS" -gt 0 ]]; then
find "$BACKUP_DIR" -name "${DB_NAME}-*.sql.gz" -type f -mtime +"$KEEP_DAYS" -delete
fi
echo "Backup finished: ${BACKUP_FILE}.gz"