Rsync 명령어: 옵션 | 사용 예시
Rsync 명령어는 Remote sync의 줄임말로 원격에서 로컬, 로컬에서 로컬로의 파일 및 디렉토리를 복사하는 프로그램입니다.
rsync에는 두 가지 접속 방법이 있는데 SSH를 통해 접속하는 방법과 rsync 데몬을 통해 접속하는 방법입니다.
✅ rsync의 두 가지 접속 방법
🔲 SSH 사용
SSH를 통한 접속(:
사용)은 [rsync [옵션] user@host:/경로 /로컬경로]의 방법으로 이용되며 내부적으롤 SSH 프로토콜을 사용합니다. SSH를 사용하기 때문에 보안 연결은 암호화 되어 통신됩니다.
🔲 rsync 데몬을 통한 접속
rsync 데몬을 통한 접속(::
사용)은 [rsync [옵션] host::모듈 /로컬경로]의 방법으로 접속합니다. 873 포트가 기본 포트입니다. /etc/rsyncd.conf에 정의된 Module 이름을 사용합니다.
rsync 데몬이 직접 실행 중이 아닌 상태에서도 대상 리모트 서버에서 rsync 데몬 방식으로 rsync가 정상 실행되었다면, 이는 inetd, xinetd, 또는 systemd socket 슈퍼 데몬 방식으로 rsync가 요청 시 자동 실행되기 때문입니다.
슈퍼 데몬은 외부 요청을 대기하다가 해당 요청에 맞는 서비스를 필요할 때만 실행해주는 중간 관리자 역할의 서비스입니다.
구분 36792_a74499-28> |
SSH 방식 (:) 36792_5bf29c-2e> |
rsync 데몬 방식 (::) 36792_72ed0b-15> |
---|---|---|
접속 형식 36792_afbde4-c7> |
rsync [옵션] user@host:/경로 /로컬경로 36792_86e4c5-53> |
rsync [옵션] host::모듈 /로컬경로 36792_69d606-67> |
사용 포트 36792_ee97ae-cf> |
SSH 기본 포트 (보통 22번) 36792_08782d-03> |
rsync 기본 포트 873번 36792_578eef-72> |
보안 36792_f62905-6e> |
SSH를 통해 암호화된 통신 36792_e3ec40-98> |
기본적으로 암호화되지 않음 36792_f6ed7c-71> |
인증 방식 36792_57e12f-24> |
SSH 키 또는 비밀번호 |
별도 인증 설정 가능 (보통 IP 제한 등) 36792_bdb0c0-6d> |
설정 파일 36792_bf4fe1-dc> |
없음 (SSH 설정에 따름) 36792_904915-cc> |
/etc/rsyncd.conf 36792_0aa836-d4> |
데몬 실행 필요 여부 36792_ed7367-b0> |
불필요 36792_b2e169-fa> |
필요 (직접 실행 또는 슈퍼 데몬 방식) 36792_46e752-02> |
데몬 실행 방식 36792_2f8afc-3b> |
해당 없음 36792_cc009e-83> |
수동 실행 또는 inetd, xinetd, systemd socket 등 슈퍼 데몬에 의해 자동 실행 가능 36792_483473-90> |
rsync
├── 접속 방식
│ ├── SSH 방식 (: 사용)
│ │ ├── 형식: rsync [옵션] user@host:/원격경로 /로컬경로
│ │ └── 특징: SSH 프로토콜 사용, 암호화된 통신
│ ├── 데몬 방식 (:: 사용)
│ │ ├── 형식: rsync [옵션] host::모듈 /로컬경로
│ │ ├── 포트: 기본 873번 사용
│ │ ├── 설정: /etc/rsyncd.conf의 module 정의 필요
│ │ └── 실행 방식
│ │ ├── rsync 데몬 직접 실행
│ │ └── 슈퍼 데몬 방식
│ │ ├── inetd
│ │ ├── xinetd
│ │ └── systemd socket
│ └── 로컬 → 로컬 복사
│
└── 주요 특징
├── 효율적 동기화 (차이점만 전송)
└── 주요 옵션 (-a, -z, -v, -e 등)
✅ Rsync 설치
yum -y install rsync
✅ Rsync 기본 사용 방법
rsync options source destination
✅ Rsync 명령어 옵션
✅ Rsync 사용 예시: SSH
🔲원격에서 로컬 서버로 복사
rsync -avz root@192.168.45.239:/home/1server_data/html_Remote /home/2server_data
🔲로컬에서 원격 서버로 복사
rsync -avz /home/2server_data/로컬파일 root@192.168.45.239:/home/1server_data/
🔲 원격에서 로컬: 특정 디렉토리 및 파일 제외
rsync -avz --exclude 'html_Remote_Excertion' --exclude 'Exception_File' root@192.168.45.239:/home/1server_data/ /home/2server_data
🔲 원격에서 로컬: 특정 디렉토리/* , 파일 제외
🔲 원격에서 로컬: 특정 디렉토리 및 파일 제외
✅ Rsync 사용 예시: etc/rsync.conf
원격 서버의 conf 파일을 설정합니다.
[myhome]
path=/home
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = 192.168.45.182
CentOS 7에서 FirewallD 기본 활성화 상태라 873 포트를 허용 해 준 후 테스트를 진행했습니다.
firewall-cmd --permanent --add-port=873/tcp
firewall-cmd --reload
◻️SELinux 비활성화
퍼미션 오류 발생으로 원격 서버의 setenforce 0으로 SELinux를 비활성화 해 줍니다.
rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
rsync: change_dir "/1server_data" (in myhome) failed: Permission denied (13)
sent 8 bytes received 90 bytes 65.33 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1658) [Receiver=3.1.2]
rsync: read error: Connection reset by peer (104)
🔲 [원격] 모듈 확인
[root@localhost 2server_data]# rsync 192.168.45.239::
myhome
home
[root@localhost 2server_data]# rsync 192.168.45.239::myhome
drwxr-xr-x 4,096 2025/06/12 22:14:39 .
drwxr-xr-x 4,096 2025/06/12 22:21:10 1server_data
drwxr-xr-x 4,096 2025/06/12 22:14:39 2server_data
drwx------ 4,096 2025/06/12 21:07:44 testuser
drwx------ 4,096 2025/06/12 21:07:49 testuser2
drwx------ 4,096 2025/06/12 21:07:52 testuser3
🔲 [원격]>[로컬]
[root@localhost 2server_data]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
./
Exception_File
html_Remote/
html_Remote_Excertion/
sent 58 bytes received 332 bytes 780.00 bytes/sec
total size is 442 speedup is 1.13
[root@localhost 2server_data]#
🔲 [원격]>[로컬] —delete 옵션 사용
—delete 옵션은 원격에 없는 파일 및 폴더를 제거합니다.
rsync -avz --delete 192.168.45.239::myhome/1server_data/ /home/2server_data/
🔲 [원격]>[로컬] include, exclude 옵션 사용
복사할 파일을 추가하거나 제외 시킵니다.
rsync -avz --include '*..html' --exclude 'exclude.txt' 192.168.45.239::myhome/1server_data/ /home/2server_data/
🔲 [원격]>[로컬]: –max-size= | -min-size=
전송할 파일의 최대 크기 및 최소 기를 지정합니다.
rsync -avz --max-size='3M' --min-size='10k' 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
🔲 [원격]>[로컬]: Bandwidth 제한 설정
대역폭을 제한합니다. [ –bwlimit=Kbps]
대역폭을 100kb로 제한하면서 -P 옵션을 추가해서 진행 사항을 같이 확인합니다.
rsync -avzP --bwlimit=100 192.168.45.239::myhome/1server_data/ /home/2server_data/