#!/bin/bash
# ============================================
# Vexplor 백업 스크립트
# Cron에 등록하여 정기 백업 가능
# ============================================

set -e

INSTALL_DIR="/opt/vexplor"
BACKUP_DIR="/opt/vexplor/backups"
DATE=$(date +%Y%m%d_%H%M%S)

# 백업 디렉토리 생성
mkdir -p $BACKUP_DIR

echo "=========================================="
echo "  Vexplor 백업 시작 - $DATE"
echo "=========================================="

cd $INSTALL_DIR

# 1. PostgreSQL 데이터베이스 백업
echo "[1/3] 데이터베이스 백업..."
docker compose exec -T database pg_dump -U vexplor vexplor > "$BACKUP_DIR/db_$DATE.sql"
gzip "$BACKUP_DIR/db_$DATE.sql"
echo "  → $BACKUP_DIR/db_$DATE.sql.gz"

# 2. 업로드 파일 백업
echo "[2/3] 업로드 파일 백업..."
docker cp vexplor-backend:/app/uploads "$BACKUP_DIR/uploads_$DATE" 2>/dev/null || echo "  → 업로드 폴더 없음 (스킵)"
if [ -d "$BACKUP_DIR/uploads_$DATE" ]; then
    tar -czf "$BACKUP_DIR/uploads_$DATE.tar.gz" -C "$BACKUP_DIR" "uploads_$DATE"
    rm -rf "$BACKUP_DIR/uploads_$DATE"
    echo "  → $BACKUP_DIR/uploads_$DATE.tar.gz"
fi

# 3. 환경 설정 백업
echo "[3/3] 환경 설정 백업..."
cp "$INSTALL_DIR/.env" "$BACKUP_DIR/env_$DATE"
cp "$INSTALL_DIR/docker-compose.yml" "$BACKUP_DIR/docker-compose_$DATE.yml"
echo "  → $BACKUP_DIR/env_$DATE"
echo "  → $BACKUP_DIR/docker-compose_$DATE.yml"

# 4. 오래된 백업 정리 (30일 이상)
echo ""
echo "[정리] 30일 이상 된 백업 삭제..."
find $BACKUP_DIR -type f -mtime +30 -delete 2>/dev/null || true

# 완료
echo ""
echo "=========================================="
echo "  백업 완료!"
echo "=========================================="
echo ""
echo "백업 위치: $BACKUP_DIR"
ls -lh $BACKUP_DIR | tail -10

