47 lines
1.2 KiB
Bash
Executable File
47 lines
1.2 KiB
Bash
Executable File
#!/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!" |