BankliPlus/temparea/solarbank/scripts/backup-database.sh
2025-08-13 18:05:26 +02:00

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!"