Rsync를 활용한 서버 간 파일 동기화 가이드

개요

rsync는 LAN 또는 WAN 환경에서 여러 서버 간 파일을 효율적으로 동기화하는 도구입니다. 핵심은 'rsync 알고리즘'으로, 전체 파일을 매번 전송하지 않고 변경된 부분만 전송하여 속도와 대역폭을 크게 절약합니다. 본 가이드에서는 rsync 데몬을 이용한 다양한 동기화 시나리오를 다룹니다.

시나리오 1: 비밀번호 없이 읽기 전용 동기화

서버 설정 (데이터 제공자)

1. rsync 설치

sudo yum -y install rsync

2. 설정 파일 생성 (/etc/rsyncd.conf)

# 전역 설정
pid file = /var/run/rsyncd.pid
port = 873
lock file = /var/run/rsyncd.lock
log file = /var/log/rsync.log
uid = root
gid = root

# 모듈 설정 (공유 이름: public_data)
[public_data]
path = /srv/rsync/public_data   # 공유할 실제 디렉토리
use chroot = no
max connections = 10
read only = yes
write only = no
list = no
ignore errors = yes
timeout = 120

3. 데몬 실행 및 디렉토리 생성

sudo /usr/bin/rsync --daemon
sudo mkdir -p /srv/rsync/public_data
# 필요 시 테스트 파일 생성: echo "test" > /srv/rsync/public_data/sample.txt

클라이언트 설정 (데이터 수신자)

1. rsync 설치

sudo yum -y install rsync

2. 동기화 명령 실행

# 기본 동기화
rsync -avz root@192.168.1.98::public_data /local/backup/

# 대역폭 제한 (50KB/s) 및 진행률 표시
rsync -avz --bwlimit=50 --progress root@192.168.1.98::public_data /local/backup/

시나리오 2: 인증을 통한 읽기 전용 동기화

서버 설정

1. 설정 파일에 인증 추가

# ... (전역 설정 동일)
[auth_data]
path = /srv/rsync/auth_data
use chroot = no
max connections = 5
read only = yes
list = no
ignore errors = yes
timeout = 120
auth users = syncuser
secrets file = /etc/rsyncd.secrets

2. 비밀번호 파일 생성 및 권한 설정

echo "syncuser:MySecretPass1" | sudo tee /etc/rsyncd.secrets
sudo chmod 600 /etc/rsyncd.secrets
sudo mkdir -p /srv/rsync/auth_data

클라이언트 설정

1. 비밀번호 파일 준비

echo "MySecretPass1" > ~/rsync_pass.txt
chmod 600 ~/rsync_pass.txt

2. 동기화 명령 실행

# 파일로 비밀번호 전달
rsync -avz --progress --password-file=~/rsync_pass.txt syncuser@192.168.1.98::auth_data /local/auth_backup/

# 환경 변수 사용
export RSYNC_PASSWORD="MySecretPass1"
rsync -avz --progress syncuser@192.168.1.98::auth_data /local/auth_backup/

시나리오 3: 쓰기 가능 동기화 (클라이언트 -> 서버)

서버 설정

1. 쓰기 모듈 설정

[write_data]
path = /srv/rsync/write_data
use chroot = no
read only = no      # 쓰기 허용
list = no
ignore errors = yes
timeout = 120
auth users = syncuser
secrets file = /etc/rsyncd.secrets

2. 디렉토리 생성

sudo mkdir -p /srv/rsync/write_data

클라이언트

# 로컬 파일을 서버로 전송 (--delete는 서버에 없는 로컬 파일 삭제)
export RSYNC_PASSWORD="MySecretPass1"
echo "backup data" > /tmp/upload_test.txt
rsync -avz --progress --delete /tmp/upload_test.txt syncuser@192.168.1.98::write_data

시나리오 4: IP 접근 제한

서버 설정

[restricted_data]
path = /srv/rsync/restricted_data
# ... (기타 설정)
hosts allow = 192.168.2.32 10.0.0.0/24   # 특정 IP 및 대역만 허용
# hosts deny = 0.0.0.0/0                  # 필요 시 모든 접근 차단 후 allow만 허용

고급 옵션 예시

사용자 정의 포트

rsync -avz --port=8731 --progress /local/data/ syncuser@192.168.1.98::auth_data

전송 속도 제한 (100KB/s)

rsync --bwlimit=100 -avz --progress /local/data/ syncuser@192.168.1.98::auth_data

SSH 터널을 통한 rsync

rsync -e "ssh -p 22" -avz --progress /local/data/ syncuser@192.168.1.98:~

이러한 설정들은 기본적인 rsync 데몬 활용법을 보여줍니다. 실제 운영 환경에서는 보안을 위해 chroot 사용, 최소 권한 원칙 적용, 방화벽 설정 등을 추가로 고려해야 합니다.

태그: rsync linux 서버동기화 파일동기화 시스템관리

7월 17일 19:33에 게시됨