■ 동기화 (인터넷을 통한 서버간 동기화)
(요약) 어떤 특정 컴퓨터에 반영된 내용과 서로 동일한 상태로 유지하게 하기 위한 것
■ 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 디렉토리로 동기화시키겠다.
'Linux' 카테고리의 다른 글
Linux Ubuntu 16.04.2 LTS samba(삼바서버) 설치 해보기 (1) (0) | 2017.06.22 |
---|---|
(30)★ ssh key 를 사용하여 로그인 없이 로그인하기 (0) | 2017.05.16 |
(28) 원격제어(ssh) (0) | 2017.05.14 |
(28)★★ tail 명령어로 access.log 와 error.log 로그 확인하기 (0) | 2017.05.13 |
(27)★★ 웹서버는 storage(HDD, SSD)에서 어떻게 파일을 읽어올까? (0) | 2017.05.13 |