#!/bin/bash # Database backup script for spotlight.cam # Usage: ./scripts/backup-db.sh [dev|prod] set -e # Default to development if no argument provided ENV=${1:-dev} # Configuration DATE=$(date +%Y%m%d_%H%M%S) BACKUP_DIR="./backups" # Create backup directory if it doesn't exist mkdir -p "$BACKUP_DIR" # Set container name based on environment if [ "$ENV" = "prod" ]; then DB_CONTAINER="slc-db-prod" DB_NAME="spotlightcam" BACKUP_FILE="$BACKUP_DIR/backup_prod_$DATE.sql" else DB_CONTAINER="slc-db" DB_NAME="spotlightcam" BACKUP_FILE="$BACKUP_DIR/backup_dev_$DATE.sql" fi echo "๐Ÿ”„ Starting database backup..." echo "๐Ÿ“ฆ Environment: $ENV" echo "๐Ÿ—„๏ธ Container: $DB_CONTAINER" echo "๐Ÿ’พ Backup file: $BACKUP_FILE" # Check if container is running if ! docker ps --format '{{.Names}}' | grep -q "^${DB_CONTAINER}$"; then echo "โŒ Error: Container $DB_CONTAINER is not running" exit 1 fi # Create backup docker exec "$DB_CONTAINER" pg_dump -U spotlightcam "$DB_NAME" > "$BACKUP_FILE" # Check if backup was successful if [ $? -eq 0 ]; then BACKUP_SIZE=$(du -h "$BACKUP_FILE" | cut -f1) echo "โœ… Backup completed successfully!" echo "๐Ÿ“Š Backup size: $BACKUP_SIZE" echo "๐Ÿ“ Location: $BACKUP_FILE" else echo "โŒ Backup failed!" exit 1 fi # Keep only last 7 days of backups echo "๐Ÿงน Cleaning old backups (keeping last 7 days)..." find "$BACKUP_DIR" -name "backup_*.sql" -mtime +7 -delete # Count remaining backups BACKUP_COUNT=$(find "$BACKUP_DIR" -name "backup_*.sql" | wc -l) echo "๐Ÿ“š Total backups: $BACKUP_COUNT" echo "โœจ Done!"