#!/bin/bash # stop on error set -e DATE=$(date +"%Y-%m-%d") BACKUP_NAME="${DATE}.tar.gz" # dir of this script that will also work when called from elsewhere DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$DIR" || exit 1 # load .env variables if [ -f "$DIR/.env" ]; then export $(grep -v '^#' "$DIR/.env" | xargs) fi # --- PREPARE --- mkdir -p "${DIR}/backups" echo "Creating DB dump..." docker compose exec db mariadb-dump --no-tablespaces -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" > "db_dump_${DATE}.sql" echo "Creating tar.gz archive..." tar -czf "${DIR}/backups/${BACKUP_NAME}" --exclude='db' --exclude='.git' --exclude='static' --exclude='backups' --exclude='db_import' "." "db_dump_${DATE}.sql" echo "Cleaning up temp SQL dump..." rm "db_dump_${DATE}.sql" echo "Cleaning up local backups older than 7 days..." find "${DIR}/backups" -name "*.tar.gz" -type f -mtime +7 -delete echo "✅ Backup complete: ${DIR}/backups/${BACKUP_NAME}"