rsync는 Linux 환경에서 원격으로 파일을 복사할 때 가장 빠르고 정밀하게 제어할 수 있는 도구임
설치
- Linux
bash sudo apt install rsync
- macOS
- 시스템에 기본으로 설치되어 있는 rsync가 있을 수도 있지만 brew로 설치할 수 있음
bash brew install rsync
서버 설정
/etc/rsyncd.conf나 /usr/local/etc/rsyncd.conf 파일을 작성해야 함
Linux의 경우, /etc, macOS의 경우, /usr/local/etc에 설정 파일이 위치해 있다고 가정함
모듈명
path=복사대상디렉토리경로
comment=설명
list=true or false
read only=true or false
uid=root
- R은 모듈명인데, 보통 대문자로 지정함
- uid는 서버 호스트에서 복사대상 디렉토리 경로에 접근할 수 있는 사용자 ID를 지정하면 됨(보통 root)
- read only는 false로 하게 되면 서버 호스트에 파일을 write할 수 있고, true로 하게 되면 읽기 전용으로 동작함
다음의 예제를 참고할 것
R
path=/home/userid
comment=my home directory
list=true
read only=false
uid=root
서버 실행 방법
설정 파일이 정상적으로 작성되었는지 모르겠다면 foreground daemon으로 실행할 수 있음
sudo rsync --daemon --no-detach
설정 파일이 정상적으로 작성되었는지 확인되었다면 background daemon으로 실행해두면 됨
sudo rsync --deamon
클라이언트 실행 방법
서버 호스트의 /home/userid 디렉토리 밑에 src 디렉토리가 존재한다고 가정하면
cd temp
rsync -avzr 서버호스트주소::R/src .
클라이언트 호스트의 temp 디렉토리에 src 디렉토리가 생성되고 서버 호스트의 /home/userid/src 디렉토리가 통째로 복사됨
반대로 서버 호스트에 파일을 업로드할 수도 있음
rsync -avzr test.tar.gz 서버호스트주소::R/src/test/
서버 호스트의 /home/userid/src/test 디렉토리에 test.tar.gz 파일이 업로드됨
rsync로 대용량 파일을 복사하다보면 네트웍이나 디스트 IO에 부하가 발생할 수 있는데, IO 대역폭을 제한할 수 있는 기능이 있음
rsync -avzr --bwlimit=1m 서버호스트주소::R/src .
초당 전송 속도를 1MB로 제한함. 단위 기호를 생략하면 KB 단위임