← 전체 목록
서버백업운영

rsync 자동화로 서버 파일 동기화 실수와 누락을 없앱니다

ℹ️ 본 글은 정보 제공 목적이며, 광고·제휴 링크가 포함될 수 있습니다.

rsync로 서버 파일 자동 동기화는 두 서버 사이에 파일을 일관되게 유지해야 할 때 가장 신뢰할 수 있는 방법입니다. 병원 사이트를 운영 서버와 스테이징 서버 두 곳에서 관리했는데, 수동으로 FTP를 이용해 동기화하다가 업로드 이미지 일부를 빠뜨린 적이 있었습니다. rsync로 자동화한 이후에는 “스테이징에는 있는데 운영에는 없는” 상황이 사라졌습니다.

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: 원본에 없는 파일을 대상에서 삭제 (주의해서 사용)

SSH 키 기반 자동화

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곳 인프라 전담)