Files
vexplor/deploy/onpremise/scripts/backup.sh
2025-12-28 18:19:08 +09:00

58 lines
1.8 KiB
Bash

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