rsync로 서버 파일 자동 동기화는 두 서버 사이에 파일을 일관되게 유지해야 할 때 가장 신뢰할 수 있는 방법입니다. 병원 사이트를 운영 서버와 스테이징 서버 두 곳에서 관리했는데, 수동으로 FTP를 이용해 동기화하다가 업로드 이미지 일부를 빠뜨린 적이 있었습니다. rsync로 자동화한 이후에는 “스테이징에는 있는데 운영에는 없는” 상황이 사라졌습니다.
# 로컬 → 로컬 동기화
rsync -avz /source/directory/ /destination/directory/
# 로컬 → 원격 서버 동기화
rsync -avz /local/path/ user@remote-server:/remote/path/
# 원격 서버 → 로컬 (다운로드)
rsync -avz user@remote-server:/remote/path/ /local/path/
옵션 설명:
-a: 아카이브 모드 (권한, 타임스탬프, 심볼릭 링크 등 보존)-v: 진행 상황 표시-z: 전송 중 압축--delete: 원본에 없는 파일을 대상에서 삭제 (주의해서 사용)rsync를 자동화하려면 비밀번호 없이 SSH 접속이 가능해야 합니다.
# 비밀번호 없는 SSH 키 생성
ssh-keygen -t ed25519 -f ~/.ssh/backup_key -N ""
# 원격 서버에 공개키 등록
ssh-copy-id -i ~/.ssh/backup_key.pub user@remote-server
#!/bin/bash
# /usr/local/bin/sync-uploads.sh
SRC="/var/www/html/wp-content/uploads/"
DST="backup-server:/backups/uploads/"
LOG="/var/log/rsync-sync.log"
rsync -avz --delete \
-e "ssh -i /root/.ssh/backup_key" \
"$SRC" "$DST" >> "$LOG" 2>&1
echo "$(date): 동기화 완료" >> "$LOG"
chmod +x /usr/local/bin/sync-uploads.sh
crontab에 등록:
# 매일 새벽 4시 실행
0 4 * * * /usr/local/bin/sync-uploads.sh
--delete 옵션은 원본에 없는 파일을 대상에서 삭제합니다. 백업 용도라면 이 옵션 없이 먼저 테스트하고, 실수로 중요 파일이 삭제되지 않는지 확인 후 적용하세요.
rsync의 강점은 증분 전송입니다. 이전에 전송한 파일은 변경된 부분만 다시 전송합니다. 대용량 업로드 폴더도 첫 전송 이후에는 빠르게 동기화됩니다.
AI가 초안을 생성하고, 의료기관 인프라 운영자가 1차 데이터 기반으로 최종 검수·승인합니다.
작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)