Search
🔄

Rsync 기반 원격 서버 디렉토리 동기화

데이터를 다른 서버로 옮겨야 할 때, 디렉토리 압축 → scp 전송 시, 시간도 오래걸리고, 증분 데이터에 대한 처리가 어렵습니다. 차라리 rsync 를 활용하여 디렉토리를 동기화하는 방식으로 처리 시, 동기화 이후 작업에도 용이합니다.
 비밀번호를 포함한 ssh 접속 명령어가 필요한 경우 설치.
dnf install sshpass
Bash
복사
원격지 서버 디렉토리 동기화 스크립트
_sync_from_remote.sh
#!/bin/bash # ----------------------------------- # sshpass + rsync 자동화 스크립트 # 로그 파일은 외부에서 지정 # ----------------------------------- # 원격 서버 설정 REMOTE_HOST="원격지서버호스트" REMOTE_USER="사용자계정(SSH)" REMOTE_PASS="비밀번호" SSH_PORT=22 # 다른 포트를 사용할 경우 수정하기 # 동기화할 경로: [원격 경로]=로컬 경로, 여기서 필요한 경로로 설정하기 declare -A SYNC_PATHS=( ["/target1"]="/target1" ["/target2"]="/target2" ) echo "[INFO] 🔁 rsync 시작: $(date)" for SRC in "${!SYNC_PATHS[@]}"; do DEST=${SYNC_PATHS[$SRC]} echo "" echo "[INFO] ⬇️ 동기화 중: ${REMOTE_HOST}:${SRC}/ -> ${DEST}/" sshpass -p "${REMOTE_PASS}" rsync -avzP \ -e "ssh -p ${SSH_PORT} -o StrictHostKeyChecking=no" \ "${REMOTE_USER}@${REMOTE_HOST}:${SRC}/" "${DEST}/" STATUS=$? if [ ${STATUS} -eq 0 ]; then echo "[SUCCESS] ✅ ${SRC} 동기화 완료" else echo "[ERROR] ❌ ${SRC} 동기화 실패 (exit code: ${STATUS})" fi done echo "" echo "[INFO] ✅ rsync 종료: $(date)"
Shell
복사
백그라운드 실행을 위한 실행 스크립트 :: 로그 파일 제어 포함
sync_from_remote.sh
#!/bin/bash # 현재 시간 기준 로그 파일명 생성 TIMESTAMP=$(date '+%Y%m%d_%H%M%S') LOG_FILE="log_remote-sync_${TIMESTAMP}.log" # 백그라운드 실행 + 로그 리디렉션 nohup ./_sync_from_remote.sh > "$LOG_FILE" 2>&1 &
Shell
복사
 실행하기!
# 스크립트 실행 권한 부여 chmod u+x _sync_from_remote.sh chmod u+x sync_from_remote.sh ./sync_from_remote.sh
Shell
복사