From 57affff7d11044748eb2c2f73171f3f3a185ab16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=B6rdle=20Bot?= Date: Sun, 23 Nov 2025 10:52:05 +0100 Subject: [PATCH] feat: Add database backup with rotation to deploy script. --- scripts/deploy.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/scripts/deploy.sh b/scripts/deploy.sh index f3b6287..6298a52 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -3,6 +3,49 @@ set -e echo "๐Ÿš€ Starting optimized deployment..." +# Backup database +echo "๐Ÿ’พ Creating database backup..." + +# Try to find database path from docker-compose.yml or .env +DB_PATH="" + +# Check if docker-compose.yml exists and extract DATABASE_URL +if [ -f "docker-compose.yml" ]; then + DB_PATH=$(grep -oP 'DATABASE_URL=file:\K[^\s]+' docker-compose.yml | head -1) +fi + +# Fallback to .env if not found +if [ -z "$DB_PATH" ] && [ -f ".env" ]; then + DB_PATH=$(grep -oP '^DATABASE_URL=file:\K.+' .env | head -1) +fi + +# Remove any quotes and resolve path +DB_PATH=$(echo "$DB_PATH" | tr -d '"' | tr -d "'") + +if [ -n "$DB_PATH" ]; then + # Convert container path to host path if needed + # /app/data/prod.db -> ./data/prod.db + DB_PATH=$(echo "$DB_PATH" | sed 's|/app/|./|') + + if [ -f "$DB_PATH" ]; then + # Create backups directory + mkdir -p ./backups + + # Create timestamped backup + BACKUP_FILE="./backups/$(basename "$DB_PATH" .db)_$(date +%Y%m%d_%H%M%S).db" + cp "$DB_PATH" "$BACKUP_FILE" + echo "โœ… Database backed up to: $BACKUP_FILE" + + # Keep only last 10 backups + ls -t ./backups/*.db | tail -n +11 | xargs -r rm + echo "๐Ÿงน Cleaned old backups (keeping last 10)" + else + echo "โš ๏ธ Database file not found at: $DB_PATH" + fi +else + echo "โš ๏ธ Could not determine database path from config files" +fi + # Pull latest changes echo "๐Ÿ“ฅ Pulling latest changes from git..." git pull