#!/bin/bash # Sriphat Data Platform - Daily Backup Script (Linux/Ubuntu) # Add to crontab: 0 2 * * * /opt/sriphat-dataplatform/backup-daily.sh set -e # Get script directory SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_PATH="$SCRIPT_DIR" BACKUP_DIR="/backups/sriphat-data" DATE=$(date +%Y%m%d-%H%M%S) BACKUP_FOLDER="$BACKUP_DIR/$DATE" echo "=== Sriphat Data Platform Backup Started ===" echo "Date: $DATE" echo "Backup Location: $BACKUP_FOLDER" echo "" # Create backup directory mkdir -p "$BACKUP_FOLDER" # Backup PostgreSQL echo "[1/5] Backing up PostgreSQL database..." docker exec postgres pg_dumpall -U postgres | gzip > "$BACKUP_FOLDER/postgres.sql.gz" echo "✓ PostgreSQL backup completed" # Backup 01-infra data echo "[2/5] Backing up Infrastructure data..." tar -czf "$BACKUP_FOLDER/01-infra-data.tar.gz" -C "$PROJECT_PATH" 01-infra/data 01-infra/letsencrypt echo "✓ Infrastructure backup completed" # Backup 04-ingestion data echo "[3/5] Backing up Airbyte data..." tar -czf "$BACKUP_FOLDER/04-ingestion-data.tar.gz" -C "$PROJECT_PATH" 04-ingestion/data echo "✓ Airbyte backup completed" # Backup 06-analytics data echo "[4/5] Backing up Superset data..." tar -czf "$BACKUP_FOLDER/06-analytics-data.tar.gz" -C "$PROJECT_PATH" 06-analytics/data echo "✓ Superset backup completed" # Backup config files echo "[5/5] Backing up configuration files..." cp "$PROJECT_PATH/.env.global" "$BACKUP_FOLDER/.env.global" cp "$PROJECT_PATH/06-analytics/superset_config.py" "$BACKUP_FOLDER/superset_config.py" echo "✓ Configuration backup completed" # Create final archive echo "" echo "Creating final backup archive..." cd "$BACKUP_DIR" tar -czf "backup-$DATE.tar.gz" "$DATE" BACKUP_SIZE=$(du -h "backup-$DATE.tar.gz" | cut -f1) echo "✓ Backup compressed: backup-$DATE.tar.gz ($BACKUP_SIZE)" # Remove uncompressed folder rm -rf "$BACKUP_FOLDER" # Clean old backups (keep 30 days) echo "" echo "Cleaning old backups (keeping last 30 days)..." find "$BACKUP_DIR" -name "backup-*.tar.gz" -mtime +30 -delete echo "✓ Old backups cleaned" # Summary echo "" echo "=== Backup Completed Successfully ===" echo "Backup file: backup-$DATE.tar.gz" echo "Size: $BACKUP_SIZE" echo "Location: $BACKUP_DIR" echo "" # Log echo "$DATE - Backup completed successfully - Size: $BACKUP_SIZE" >> "$BACKUP_DIR/backup.log"