Files
sriphat-dataplatform/backup-daily.sh

75 lines
2.3 KiB
Bash

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