75 lines
2.3 KiB
Bash
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"
|