Files
M-Project/restore_script.sh
hyungi a820a164cb Fix: HTTPS Mixed Content 오류 수정 및 백업 시스템 구축
- Frontend: 하드코딩된 localhost API URL을 동적 URL 생성으로 변경
  - reports-daily.html: 3곳 수정 (프로젝트 로드, 미리보기, 보고서 생성)
  - issues-archive.html: 프로젝트 로드 함수 수정
  - issues-dashboard.html: 2곳 수정 (프로젝트 로드, 진행중 이슈 로드)
  - issues-inbox.html: 프로젝트 로드 함수 수정
  - daily-work.html: 프로젝트 로드 함수 수정
  - permissions.js: 2곳 수정 (권한 부여, 사용자 권한 조회)

- Backup System: 완전한 백업/복구 시스템 구축
  - backup_script.sh: 자동 백업 스크립트 (DB, 볼륨, 설정 파일)
  - restore_script.sh: 백업 복구 스크립트
  - setup_auto_backup.sh: 자동 백업 스케줄 설정 (매일 오후 9시)
  - 백업 정책: 최신 10개 버전만 유지하여 용량 절약

- Migration: 5장 사진 지원 마이그레이션 파일 업데이트

이제 Cloudflare 환경(m.hyungi.net)에서 HTTPS 프로토콜로 API 호출하여
Mixed Content 오류 없이 모든 기능이 정상 작동합니다.
2025-11-13 06:52:21 +09:00

106 lines
3.1 KiB
Bash
Executable File

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