rsync의 세 가지 전송 방식 개요
rsync는 데이터 전송을 위한 유연한 도구로, 다음 세 가지 주요 모드를 지원한다:
- 로컬 복사 모드: 로컬 파일 시스템 내에서 파일 또는 디렉터리 간 복사 수행 (cp와 유사)
- 원격 전송 모드: 원격 서버와의 연결을 통해 데이터를 전송하며, 증분 백업 및 차이 백업 기능 제공 (scp와 달리 효율적)
- 지속적 서비스 모드 (Daemon): rsync를 배경 서비스로 실행하여 보안성과 관리 용이성을 높임
1. 로컬 복사 모드
로컬 환경에서 파일이나 폴더를 복사할 때 사용.
rsync [옵션] [원본 경로] [대상 경로]
-t: 시간 정보 유지-r: 하위 디렉터리 포함 재귀 복사- 자주 사용하는 옵션 조합:
-avzP
예시 1: 임시 디렉터리의 압축 파일을 마운트된 디렉터리로 이동
[root@rsync opt]# rsync /tmp/etc.tar.gz /mnt/
예시 2: 루트 디렉터리 전체를 백업 대상으로 복사
[root@rsync opt]# rsync -r /root/ /mnt/
2. 원격 전송 모드
원격 호스트와의 텍스트 기반 전송을 가능하게 함.
데이터 전송 (푸시):
rsync [옵션] [로컬 파일] [사용자]@[호스트]:[원격 경로]
예시: 3.txt 파일을 원격 서버에 업로드
[root@rsync tmp]# rsync -avzP 3.txt root@172.16.1.51:/opt/
데이터 다운로드 (풀링):
rsync [옵션] [사용자]@[호스트]:[원격 경로] [로컬 경로]
예시: 원격 서버의 3.txt 파일을 로컬로 다운로드
[root@rsync tmp]# rsync -avzP root@172.16.1.51:/opt/3.txt /tmp/
3. 지속 서비스 모드 (Daemon 방식)
보안성과 관리 용이성을 위해 권장되는 방법.
서비스 설정 절차 (서버 측)
- 설정 파일 작성 (
/etc/rsyncd.conf)uid = rsync gid = rsync port = 873 fake super = yes use chroot = no max connections = 200 timeout = 600 ignore errors read only = false list = false auth users = rsync_backup secrets file = /etc/rsync.passwd log file = /var/log/rsyncd.log [backup] comment = backup area for oldboyedu path = /backup - 시스템 계정 생성
useradd rsync -r -M -s /sbin/nologin - 암호 파일 생성 및 권한 설정
echo 'rsync_backup:123456' > /etc/rsync.passwd chmod 600 /etc/rsync.passwd - 백업 디렉터리 생성 및 소유권 설정
mkdir /backup chown rsync.rsync /backup - 서비스 시작
systemctl start rsyncd
클라이언트 설정 절차
- rsync 설치
yum install rsync -y - 암호 입력 방식으로 전송
rsync -avzP /opt/3.txt rsync_backup@172.16.1.41::backup - 암호 파일 사용
echo "123456" > /etc/rsync.passwd chmod 600 /etc/rsync.passwd rsync -avzP /opt/3.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwd - 환경 변수 활용
export RSYNC_PASSWORD=123456 rsync -avzP /opt/3.txt rsync_backup@172.16.1.41::backup
4. 일반적인 오류 및 해결 방법
- Permission denied: 사용자 권한 부족. 서비스 계정 소유권 확인 필요
- Connection refused: rsyncd 서비스 미실행 또는 포트 873 차단.
systemctl status rsyncd확인 - Invalid password:
/etc/rsync.passwd파일 내용 또는 권한 오류. 반드시 600 권한 설정 필수 - Module not found: 설정 파일의
[backup]모듈 이름이 일치하지 않음. 클라이언트에서::backup로 접근했는지 확인 - Cannot access directory: 백업 경로(/backup)의 소유권 또는 권한 문제.
chown rsync.rsync /backup실행