데이터를 다른 서버로 옮겨야 할 때, 디렉토리 압축 → scp 전송 시, 시간도 오래걸리고, 증분 데이터에 대한 처리가 어렵습니다.
차라리 rsync 를 활용하여 디렉토리를 동기화하는 방식으로 처리 시, 동기화 이후 작업에도 용이합니다. 
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
복사
