1. 개요

rsync 설치 방법 등은 있는 것 같은데 이것이 무엇인지!? 에 대해서는 없는 것 같아 정리해보았습니다.
이 글에서는 사용법보다는 개념과 특징을 중점으로 기술합니다.

2. rsync (remote synchronization)란 무엇인가?

rsync is a utility for efficiently transferring and synchronizing files across computer systems,
by checking the timestamp and size of files.
...라고 하네요! (위키피디아에서 발췌)
 
rsync는 samba 의 핵심 개발자인 Andrew Tridgell 이 만든
local과 remote 간에 데이타 동기화를 위한 유틸리티입니다.  
 
부연 설명하자면,
출발지와 목적지 사이에 다른 부분만을 전송을 하는데요,
파일크기의 변화나 시간의 변화 등을 이용하여 동기화를 합니다.
 
전송시에 네트워크 대역폭을 최소화하는 델타 인코딩 알고리즘을 사용하기 때문에
빠르고 효율적으로 데이터를 동기화할 수 있다고 하네요. 
이 알고리즘을 이용해서 변경이 일어난 부분만 전송하는 것이구요.
 
rsync 패키지에는 client와 server 프로그램이 모두 포함되어 있습니다.
보통 ssh 프로토콜을 기반으로 사용하는데요, (기존 ssh 포트를 사용하므로 방화벽 오픈 등의 작업 없이 사용가능)
별도의 server 데몬으로 구동도 가능합니다. (TCP/UDP 873 포트 사용)

3. rsync 주요 특징

 
- 링크, device, 소유자, 그릅, 허가권 복사 지원
- GNU tar와 비슷한 exclude, exclude-from 옵션 지원
- rsh 또는 ssh 등 사용가능
- root 권한이 필요없음
- anonymous 또는 인증 rsync 서버 지원(미러링에 유용함) 

4. rsync 활용

rsync 는 쓰기가 간편하고 속도가 빠른 동기화 유틸리티이기에
두 서버간에 파일을 전송하는 rcp, scp를 대체할 수 있고
데이타 백업(data backup), 원격 사이트 미러링(Remote Site mirroring) 등의 용도로도 활용할 수 있습니다.
 
제가 관리하는 시스템 중에서도 어플리케이션 담당자가 소스 관리에 rsync를 쓰고 있네요. :)