강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

실무명령어# 267-1 : 원격서버와의 데이터동기화 및 복사를 위한 rsync 실무활용

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

 

실무명령어# 267-1 : 원격서버와의 데이터동기화 복사를 위한 rsync 실무활용

 

rsync rcp 같은 방법으로 원격지서버의 파일을 복사할 있는 유용한 유틸리티입니다. , 명령어는 rcp 대체하여 사용되는 것으로서 원격백업과 데이터동기화에 사용될 있으며 특히 여러대의 서버에서 rsync 이용하여 데이터동기화를 시킨 후에 부하분산을 위한 방법으로도 사용될 있습니다.

 

이런 의미에서 “remote sync” 약어로 rsync라는 단어를 사용합니다. 현재 많은 서버관리자들이 원격백업과 데이터동기화를 위해 rsync 사용하고 있으며 필자 또한 간단한 쉘스크립트와 cron 이용하여 원격자동백업으로 활용하고 있습니다.


명령어위치 : /usr/bin/rsync

rsync 정상적으로 실행이 되려면 /etc/services파일내에 다음과 같은 행의 주석처리를 제거하셔야 합니다. 물론 대부분의 경우 주석처리가 되어있지 않지만 리눅스 설치초기에 보안설정단계에서 /etc/services파일내의 불필요한 서비스에 주석처리를 해두는 경우가 많기 때문에 살펴보시기 바랍니다.

 

rsync           873/tcp                         # rsync

rsync           873/udp                         # rsync


그리고 만약 /etc/hosts.allow파일내의 rsyncd 접근가능설정을 해두시기 바랍니다.

 

rsyncd : 192.168.0.100

 

위의 설정은 /etc/hosts.allow파일내에서 rsyncd데몬에 대한 192.168.0.100에서의 접근허용을 설정한 것입니다. 만약 모든 서버에서 rsyncd데몬에 의한 rsync서비스가 가능하도록 설정하려면 다음과 같이 하시기 바랍니다 .

 

rsyncd : ALL

 

위와 같이 하시면 모든 서버에서 rsync 이용한 rsyncd데몬으로의 접근이 가능하겠지만 보안적인 측면에서는 바람직하지 않습니다. 따라서 가능하다면 허용할 서버에서의 접근만을 허용하도록 설정하시기 바랍니다.
 

[참고사항]
rsyncd
데몬이 설치되어 있지않으신 분들은 rsyncd를 설치 하셔야합니다. rsyncd의 설치부분의 설명을 필자가 집필한 리눅스 서버관리 실무바이블책의 리눅스 네트워크백업서버 구축 및 활용편을 참조하시기 바랍니다.

 

그리고 다음과 같이 /etc/xinetd.d/디렉토리에 rsync파일의 설정을 확인하시기 바랍니다. 아래의 예를 참조하여 여러분들의 서버에 설정되어 있는 내용을 확인하시기 바랍니다. 불가피할 경우에는 필자와 동일하게 설정하셔도 무방합니다.

 

[root@file xinetd.d]# cat /etc/xinetd.d/rsync

service rsync

{

        disable         = no

        socket_type     = stream

        wait            = no

        user            = root

        server          = /usr/bin/rsync

        server_args     = --daemon

        log_on_failure  += USERID

}

[root@file xinetd.d]#


만약 /etc/xinetd.d/rsync파일을 새로 만들었거나 또는 수정하셨다면 수정된 내용의 적용을 위하여 반드시 /etc/rc.d/init.d/xinetd 다음과 같이 재시작하시기 바랍니다.

 

[root@ file root]# /etc/rc.d/init.d/xinetd restart

Stopping xinetd: [  OK  ]

Starting xinetd: [  OK  ]

[root@ file root]#

 

이제 rsync 사용에 있어 가장 중요한 설정이 남아있습니다. , rsync 설정파일인 /etc/rsyncd.conf파일입니다.

 

[root@file root]# cat /etc/rsyncd.conf

[BIBLE]

path = /backup

comment = BIBLE

uid = nobody

gid = nobody

use chroot = yes

read only = yes

hosts allow = 192.168.0.111

max connections = 10

timeout = 30

[root@file root]#

 

위의 /etc/rsyncd.conf파일을 간단히 설명하면 다음과 같습니다. , 설정은 rsync 서버스될 rsync서버의 설정파일 내용입니다.

 

[BIBLE]

서비스이름. , rsyncd서버에서 서비스할 각각의 서비스이름입니다. 가장 중요한 설정으로서 rsync 서비스를 구분하는 서비스이름입니다. 따라서 이름은 절대로 중복되어서는 않됩니다.


path = /backup

백업데이터가 저장되어 있는 디렉토리경로입니다. 또한 동기화시킬 대상 데이터가 저장된 경로를 지정하시면 됩니다.


comment = BIBLE

간단한 설명문입니다. 서비스할 이름이나 서버이름 또는 대상 데이터의 성격을 가진 이름등을 임의대로 입력하시면 됩니다.


uid = nobody

rsync 데이터를 전송할 때의 user 명입니다.

 

gid = nobody

rsync 데이터를 전송할 때의 group 명입니다.


use chroot = yes

path에서 설정한 경로를 루트경로로 사용할 것인가(yes) 말것인가(no) 결정합니다. 보안을 위해 yes 설정할 것을 권해드립니다.


read only = yes

대상서버에 write 허용하시려면 no 설정하십시요. , 백업서버에서 백업대상서버로 데이터를 가져가기만하므로 일반적으로는 read only 설정하면 되기 때문에 yes 설정하시면 됩니다. 보안을 위해서 yes 설정할 것을 권해드립니다.


hosts allow = 192.168.0.111

rsync 접근허용할 서버의 IP주소입니다. 현재서버로 rsync접근한 서버의 IP주소를 입력하시면 됩니다. , rsync클라이언트의 IP주소입니다.


max connections = 10

rsync 동시에 접속할 있는 동시접속자 수입니다.


timeout = 30

rsync 접속한 후에 타임아웃할 초단위 시간입니다. , 여기서 지정한 시간동안 아무런 작업이 없을 경우에는 연결을 종료시키게 됩니다.

 

 

이제 rsync 이용하여 데이터를 가져오는(백업하는) 예를 보도록 하겠습니다. , 현재 서버의 IP주소가 192.168.0.111(rsync클라이언트)이며 백업데이터가 저장되어 있는 백업대상서버의 IP주소가 192.168.0.100(rsync서버)입니다.

아래의 예는 rsync명령어를 이용하여 192.168.0.100서버(rsync서버) 접속하여 /etc/rsyncd.conf파일의 [BIBLE]서비스항목에 설정된 위치의 데이터를 가져와서 현재서버(192.168.0.111) /backup디렉토리에 저장하라는 명령입니다.

 

[root@command backup]# rsync -avz 192.168.0.100::BIBLE /backup

receiving file list ... done

./

apache.tar.gz

mysql.tar.gz

wrote 100 bytes  read 18078952 bytes  3287100.36 bytes/sec

total size is 18072700  speedup is 1.00

[root@command backup]#

[root@command backup]# ls -l

total 17688

-rw-r--r--    1 root     root     13181554 Mar 25 18:10 apache.tar.gz

-rw-r--r--    1 root     root      4891146 Mar 25 18:10 mysql.tar.gz

[root@command backup]#

 

위의 예는 rsync 정상적으로 수행된 예로서 원격지서버(rsync서버) 데이터를 현재서버(rsync클라이언트) 가져오는 예입니다.

만약 여러분께서 자동적으로 하루에 한번씩 위의 데이터를 가져오도록 설정하고자 하신다면 cron 이용하여 rsync 정해진 시간에 자동으로 실행하도록 설정해 두시면 됩니다.

 

앞서 말씀드린 바와 같이 rsync 이용한 백업서버 실제구축에 대한 자세한 설명은 필자가 집필한 리눅스 서버관리 실무바이블책의 리눅스 네트워크백업서버 구축 활용편을 참조하시기 바랍니다.

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,159 명
  • 현재 강좌수 :  36,519 개
  • 현재 접속자 :  289 명