#!/bin/bash # Database backup script for SolarBank IoT Dashboard # This script creates automated backups of the PostgreSQL database set -e # Load environment variables if [ -f .env.prod ]; then export $(cat .env.prod | grep -v '#' | awk '/=/ {print $1}') else echo "Error: .env.prod file not found" exit 1 fi # Configuration BACKUP_DIR="./backups" DATE=$(date +%Y%m%d_%H%M%S) BACKUP_FILE="solarbank_backup_$DATE.sql" CONTAINER_NAME="solarbank-db-prod" # Create backup directory if it doesn't exist mkdir -p $BACKUP_DIR echo "Starting database backup..." # Create backup docker exec $CONTAINER_NAME pg_dump -U $POSTGRES_USER -d $POSTGRES_DB > "$BACKUP_DIR/$BACKUP_FILE" # Compress backup gzip "$BACKUP_DIR/$BACKUP_FILE" echo "Backup completed: $BACKUP_DIR/$BACKUP_FILE.gz" # Clean up old backups (keep last 30 days) find $BACKUP_DIR -name "solarbank_backup_*.sql.gz" -mtime +30 -delete echo "Old backups cleaned up (kept last 30 days)" # Optional: Upload to S3 if configured if [ ! -z "$BACKUP_S3_BUCKET" ]; then echo "Uploading backup to S3..." aws s3 cp "$BACKUP_DIR/$BACKUP_FILE.gz" "s3://$BACKUP_S3_BUCKET/database-backups/" echo "Backup uploaded to S3" fi echo "Backup process completed successfully!"