33 lines
970 B
Bash
Executable File
33 lines
970 B
Bash
Executable File
#!/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}" |