#!/bin/bash # M 프로젝트 복구 스크립트 # 사용법: ./restore_script.sh /path/to/backup/folder set -e if [ -z "$1" ]; then echo "❌ 사용법: $0 <백업폴더경로>" echo "예시: $0 /Users/hyungi/M-Project/backups/20251108_152538" exit 1 fi BACKUP_FOLDER="$1" if [ ! -d "$BACKUP_FOLDER" ]; then echo "❌ 백업 폴더가 존재하지 않습니다: $BACKUP_FOLDER" exit 1 fi echo "🔄 M 프로젝트 복구 시작" echo "📁 백업 폴더: $BACKUP_FOLDER" # 백업 정보 확인 if [ -f "$BACKUP_FOLDER/backup_info.txt" ]; then echo "📋 백업 정보:" cat "$BACKUP_FOLDER/backup_info.txt" echo "" fi read -p "⚠️ 기존 데이터가 모두 삭제됩니다. 계속하시겠습니까? (y/N): " -n 1 -r echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then echo "❌ 복구가 취소되었습니다." exit 1 fi # 1. 서비스 중지 echo "🛑 서비스 중지 중..." cd /Users/hyungi/M-Project docker-compose down # 2. 기존 볼륨 삭제 echo "🗑️ 기존 볼륨 삭제 중..." docker volume rm m-project_postgres_data m-project_uploads 2>/dev/null || true # 3. 데이터베이스 컨테이너만 시작 echo "🚀 데이터베이스 컨테이너 시작 중..." docker-compose up -d db # 데이터베이스 준비 대기 echo "⏳ 데이터베이스 준비 대기 중..." sleep 10 # 4. 데이터베이스 복구 if [ -f "$BACKUP_FOLDER/database_backup.sql" ]; then echo "📊 데이터베이스 복구 중..." docker exec -i m-project-db psql -U mproject mproject < "$BACKUP_FOLDER/database_backup.sql" echo "✅ 데이터베이스 복구 완료" else echo "❌ 데이터베이스 백업 파일을 찾을 수 없습니다." fi # 5. Docker 볼륨 복구 if [ -f "$BACKUP_FOLDER/postgres_volume.tar.gz" ]; then echo "💾 PostgreSQL 볼륨 복구 중..." docker run --rm -v m-project_postgres_data:/data -v "$BACKUP_FOLDER":/backup alpine tar xzf /backup/postgres_volume.tar.gz -C /data echo "✅ PostgreSQL 볼륨 복구 완료" fi if [ -f "$BACKUP_FOLDER/uploads_volume.tar.gz" ]; then echo "📁 업로드 볼륨 복구 중..." docker run --rm -v m-project_uploads:/data -v "$BACKUP_FOLDER":/backup alpine tar xzf /backup/uploads_volume.tar.gz -C /data echo "✅ 업로드 볼륨 복구 완료" fi # 6. 설정 파일 복구 if [ -f "$BACKUP_FOLDER/docker-compose.yml" ]; then echo "⚙️ 설정 파일 복구 중..." cp "$BACKUP_FOLDER/docker-compose.yml" ./ if [ -d "$BACKUP_FOLDER/nginx" ]; then cp -r "$BACKUP_FOLDER/nginx/" ./ fi if [ -d "$BACKUP_FOLDER/migrations" ]; then cp -r "$BACKUP_FOLDER/migrations/" ./backend/ fi echo "✅ 설정 파일 복구 완료" fi # 7. 전체 서비스 시작 echo "🚀 전체 서비스 시작 중..." docker-compose up -d # 8. 서비스 상태 확인 echo "⏳ 서비스 시작 대기 중..." sleep 15 echo "🔍 서비스 상태 확인 중..." docker-compose ps echo "🎉 복구 완료!" echo "🌐 프론트엔드: http://localhost:16080" echo "🔗 백엔드 API: http://localhost:16000" echo "📊 데이터베이스: localhost:16432"