62 lines
1.6 KiB
Bash
62 lines
1.6 KiB
Bash
|
|
#!/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!"
|