rsync 란?


 

1. Rsync란?

Network을 통해서 데이터 백업을 하는 툴이다. 기존 RCP를 보완하고, 현재 SCP(SSH)를 통해서 보안을 유지할 수 있다.
이 command는 웹 서버의 부하를 분산하기 위해서 remote sync(copy)를 하기 위한 용도로 개발되었다.

– RSYNC Memory 사용 비율
File당 100byte의 메모리가 소요된다. 파일 사이즈에 상관없이 파일 수에 의존하며 1000,000 files이 있을 경우 100Mbyte의 메모리가 소요된다. 또한 option에 따라서 메모리가 더 소요될 수 있다.

– 서비스 설정의 기본
* 서비스 포트: 873
* 내부 사용 Shell (RSH,SSH) 초기 configuration에서 선택 적용할 수 있다. 현재 Default로 Remote shell은 SSH를 적용하고 있다.
* /etc/rsyncd.conf, 각종 rsync option을 설정해 주는 부분이다.

– RSYNC에서 사용되는 Algorithm의 구성
* Rolling Checksum (16-bit hash of the 32-bit rolling checksum)
* Checksum searching 은 3단계에 나누어서 데이터를 비교한다.

– RSYNC 란 무엇인가?
”rsync Algorithm”을 사용해서 원격지 파일을 가장 빠른 방법으로 가져오게 된다.
단순히 건너편 원격지의 파일 차이점만을 보내는 것에 의해 운영이 된다.
전체 파일정보를 가져와서 처리하는 것이 없이 진행 된다. 이것은 언뜻 보기에 두개의 파일을 local access하는 것 없이 파일 비교를 한다는 것이 이해가 안될지 모르지만 “rsync Algorithm”을 확인하면 이것이 가능하다는 것을 알 수 있다.

– RSYNC Server 취약성 점검
* netstat를 사용해서 현재 TCP port 873을 점검한다. 아무런 값이 없다면 rsync server가 동작하지 않는 것이다.

2. Rsync Algorithm
알파서버 그리고 베타서버가 있다고 가정한다. 알파서버는 파일 A에 access하고 베타서버는 파일 B에 access한다. 그리고 그 파일 두개는 “similar”하다. 두 서버사이는 느린 네트워크로 연결되어 있다. (느린 네트워크에서 동작한다는 가정 하에 진행)
Checksum만을 가지고서 변경된 블록과 동일한 블록에 대한 reference만을 전송하는 것으로 네트워크 속도가 느린 환경에서 변경된 데이터의 빠른 복사가 가능하게 된다.

The rsync algorithm consists of the following steps:
1) 베타 서버가 S bytes의 overlapping되지 않은 고정된 블록사이즈에 연속으로 file B를 분할한다. (S bytes는 500~1000사이의 가장 최적의 상태)
2) 베타 서버에서는 이들 블록을 두개의 checksum으로 계산한다. Rolling 32-bit checksum, strong 128-bit MD4 checksum으로 계산한다.
3) 베타 서버가 알파서버에게 이들 checksum값을 전송한다.
4) 알파서버는 B블록의 하나를 가지고서 동일한 weak checksum과 strong checksum을 가진 S bytes 길이의 모든 블록을 파일 A에서 찾는다. 이것은 rolling checksum의 특수한 성질을 이용해서 가장 빠른 single pass로 진행된다.
5) 알파서버는 베타에게 A파일 copy를 구성하기위한 instruction을 보낸다. 각각의 instruction은 B의 블록 reference또는 문자데이타이다. 문자데이터는 B블록과 일치하지 않는 A의 부분들로 전송된다. (전송될 때는 checksum과 Block index들을 위한 작은 양의 데이터를 포함한다).

결과적으로 베타서버는 A를 복사해서 가지게 된다. 이것은 B에서 발견되지 않은 A의 부분들에 한정해서다. 그리고 이 Algorithm은 네트워크 부하를 최소화하기 위해서 단지 한번의 round trip만을 사용해서 전송한다.

참고)
파일의 변경부분만을 가지고서 변경 블록만을 전송하는 방식이 실제 데이터의 consistency를 보장하지는 못한다. 변경된 파일이 있을 경우 이 파일을 전체 전송하는 방식이 아니기 때문에 전송 중에 네트워크 장애로 인한 또는 Checksum 에러로 인한 파일 데이터의 consistency를 보장할 수 없다.

2.1 RSYNC Algorithm Picture.
전제: 두개 파일 A와 B는 유사하다.
Rsync-comki

 


This entry was posted in System, Util/Tools and tagged , . Bookmark the permalink.

One Response to rsync 란?

  1. Pingback: rsync으로 백업하기 | Apollo89.com

댓글 남기기