■ 동기화 (인터넷을 통한 서버간 동기화)

(요약) 어떤 특정 컴퓨터에 반영된 내용과 서로 동일한 상태로 유지하게 하기 위한 것


■ rsync

rsync : remote synchronizing 의 약자 

(요약) 서로 독립되어있는 컴퓨터들을 네트워크 혹은 인터넷을 통해서 동기화 할 수 있게 하는 프로그램

(상세) 원격 서버의 파일을 네트워크를 거쳐서 전송하는 실행 소프트웨어이다. 파일 전송 시 수신처의 컴퓨터에 있는 파일을 가는 블록으로 분할해서 블록마다 검사합(checksum)을 송신원의 컴퓨터에 보낸다. 이 때 송신원의 컴퓨터는 그것을 점검해서 파일의 차이만큼 전송하기 때문에 네트워크를 효율적으로 이용을 할 수 있고, 시큐어 셸(SSH)등과 병용할 수 있어서 파일 전송 시 보안도 확보할 수 있다. 동일한 실행 소프트웨어로는 원격 복사 프로토콜 (RCP)이 있는데 보다 강력한 복제 기능을 가지고 있다. 


■ rsync를 사용하여 로컬환경에서 실습 (한 대 컴퓨터에서 테스트)

# mkdir throwD 

# mkdir catchD 

디렉토리 2개를 생성하자.

throwD 디렉토리 밑에 test1 ~test10까지 10개 파일을 생성하자.

# cd throwD

# touch test{1,10}     // 중괄호를 사용하여 한꺼번에 파일 생성이 가능하다. 

# ls -l

throwD 디렉토리에 있는 파일들을 catchD 디렉토리로 rsync를 사용하여 동기화 시켜보자. 

(실질적으로 이 것은 동기화가 아니라 파일 복사 개념이다. 단지 rsync의 개념을 이해하기 위한 도움.)

#  rsync -a throwD/ catchD   

throwD 밑에 있는 모든파일들(디렉토리포함)을 catchD에 동기화 시킴.

※ 주의사항: # rsync -a throwD catchD 로 throwD 뒤에 / 를 입력하지 않으면 throwD 디렉토리 안에 catchD 디렉토리를 만들게 되는 것이므로 주의하자. 


■ rsync의 장점

효율적으로 동작한다. 

이미 존재하는 정보 즉, 일치하는 파일이 아닌 정보가 변경된 파일 및 일치하지 않는 구성(디렉토리, 파일) 에 대해서만 동기화가 진행된다.


■ rsync 옵션

-av : 새롭게 변경된 정보의 동기화된 파일에 대해서만 정보가 출력된다. 

-azP : 데이터를 압축해서 전송, 전송상황을 progress bar로 볼 수 있다.

z : 데이터를 전송 시 압축해서 전송

P : 전송되는 상황을 Progress Bar로 보여준다. 


■ rsync의 장점 실습

$ cd catchD

$ rm test2 test8

$ ls -l 

test1, test3, test4, test5, test6, test7, test9, test10 

$ cd trhowD

$ touch test23, test42

$ rsync -av throwD/ catchD

새롭게 변경된 정보의 동기화된 파일에 대해서만 정보가 출력된다. 

test2, test8, test23, test42 에 대한 정보가 전송

$ ls -l 

test1, test2, test3, test4, test5, test6, test7, test8, test9, test10, test23, test42


■ rsync를 사용하여 네트워크 환경에서 실습 (네트워크가 구성된 환경에서 테스트)

기본적으로 동기화 될 (전송될) 컴퓨터에 전송할 컴퓨터의 ssh 인증서가 설정되어있어야 한다.

$ rsync -azP ~/rsync/throwD/ chpark@192.168.0.65:~/rsync/catchD     

// host1 의 홈디렉토리 밑의 rsync 하위에있는 throwD 디렉토리 밑에 있는 모든 파일 및 구성 요소 (디렉토리, 파일) 들을 

/192.168.0.65 ip의 chpark 계정의  홈디렉토리 밑의 rsync 하위에 있는  catchD 디렉토리로 동기화시키겠다.


+ Recent posts