@echo off chcp 65001 > nul setlocal echo ===================================== echo DB SYNC START (chandj) echo ===================================== :: ===== 설정 ===== set REMOTE_USER=pro set REMOTE_HOST=114.203.209.83 set REMOTE_DB_NAME=chandj set REMOTE_DB_USER=pro set REMOTE_DB_PASS=sampass set LOCAL_DB_NAME=chandj set LOCAL_DB_USER=root set LOCAL_DB_PASS=root set DUMP_FILE=chandj_dump.sql set TIMESTAMP=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2% set TIMESTAMP=%TIMESTAMP: =0% set BACKUP_FILE=chandj_backup_%TIMESTAMP%.sql :: ================= :: 기존 덤프 파일 백업 (있는 경우) if exist %DUMP_FILE% ( echo [0/3] 기존 덤프 파일 백업 중... copy %DUMP_FILE% %BACKUP_FILE% > nul if errorlevel 1 ( echo ⚠️ 백업 실패 (계속 진행) ) else ( echo ✅ 백업 완료: %BACKUP_FILE% ) ) echo [1/3] 원격 DB 덤프 생성 중... echo 원격 서버(%REMOTE_USER%@%REMOTE_HOST%) SSH 비밀번호를 입력하세요... ssh %REMOTE_USER%@%REMOTE_HOST% "mysqldump --single-transaction --routines --triggers -u %REMOTE_DB_USER% -p%REMOTE_DB_PASS% %REMOTE_DB_NAME%" > %DUMP_FILE% if errorlevel 1 ( echo ❌ 원격 덤프 실패 if exist %BACKUP_FILE% ( echo 원본 파일 복구: %BACKUP_FILE% -^> %DUMP_FILE% copy %BACKUP_FILE% %DUMP_FILE% > nul ) pause exit /b 1 ) :: 덤프 파일 크기 확인 for %%A in (%DUMP_FILE%) do set FILE_SIZE=%%~zA if %FILE_SIZE% LSS 1000 ( echo ❌ 덤프 파일이 너무 작습니다 (%FILE_SIZE% bytes). 덤프가 실패했을 수 있습니다. pause exit /b 1 ) echo ✅ 덤프 완료: %DUMP_FILE% (%FILE_SIZE% bytes) echo [2/3] 로컬 DB 복원 중... echo 로컬 MySQL 비밀번호를 입력하세요... mysql -u %LOCAL_DB_USER% -p%LOCAL_DB_PASS% %LOCAL_DB_NAME% < %DUMP_FILE% if errorlevel 1 ( echo ❌ 로컬 DB 복원 실패 if exist %BACKUP_FILE% ( echo 원본 파일 복구: %BACKUP_FILE% -^> %DUMP_FILE% copy %BACKUP_FILE% %DUMP_FILE% > nul ) pause exit /b 1 ) echo [3/3] 정리 중... :: 백업 파일 삭제 (선택사항 - 주석 해제하면 삭제) :: del %BACKUP_FILE% > nul 2>&1 echo ===================================== echo ✅ DB SYNC COMPLETE echo ===================================== echo 덤프 파일: %DUMP_FILE% if exist %BACKUP_FILE% ( echo 백업 파일: %BACKUP_FILE% ) pause endlocal