실무명령어# 267-1 : 원격서버와의 데이터동기화 및 복사를 위한 rsync 실무활용
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,516 조회
- 0 추천
- 목록
본문
실무명령어# 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데몬으로의 접근이
가능하겠지만
보안적인
측면에서는
바람직하지
않습니다. 따라서
가능하다면
허용할
서버에서의
접근만을
허용하도록
설정하시기
바랍니다.
[참고사항] |
그리고 다음과 같이 /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를 이용한 백업서버 실제구축에 대한 자세한 설명은 필자가 집필한 “리눅스 서버관리 실무바이블”책의 “리눅스 네트워크백업서버 구축 및 활용”편을 참조하시기 바랍니다.
관련자료
-
이전
-
다음