58 lines
1.8 KiB
Bash
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
|
|
|