로컬 호스트 시스템을 백업하는 방법으로는 tar 아카이브를 이용하여 묶거나 압축하는 방법이 있고, cpio, dump, dd 유틸리티를 이용하여 하드 디스크를 백업하는 방법이 있다.
이번호에서는 이러한 유틸리티를 사용하지 않고, 미러링(Mirroring) 기능을 이용하여 로컬시스템 또는 원격서버의 데이터를 그대로 복사하여 백업하는 방법에 대해서 알아봅니다......
# 1. 미러링(Mirroring)
레드햇 리눅스 사이트의 다운로드 페이지에 보면 FTP 미러 사이트들이 많이 링크되어 있
음을 발견할 수 있다. 미러 사이트는 주 사이트의 데이터를 그대로 옮겨와 주 사이트와 똑
같은 서비스를 제공하는 것이다. 원격 서버의 데이터를 원본 그대로 복사해 와서 원격 서
버와 똑같은 데이터 상태를 유지시키는 것을 미러링(Mirroring) 이라 하는데 다른 표현으로
는 서버 동기화(server syncronization)라고도 한다.
미러링에 의해서 원격 서버의 데이터가 변하면 미러링 서버도 그에 따라서 변하게 되며
항상 미러링 서버는 원격 서버의 동일한 데이터 상태를 유지하게 된다. 미러링은 로컬 시스
템의 데이터를 백업할 때도 적용할 수 있으며 서버마다 동일한 데이터 구조를 유지하고자
할 때 이 방법이 사용된다.
# 2. 미러링 도구(rsync)
여러대의 서버를 분산하여 서버를 동기화하는데 rsync 유틸리티가 많이 사용된다.
rsync는 루트의 권한없이 서버로부터 데이터로 빠르게 전송받을 수 있으며, 원격 서버와
미러 서버와 전송 데이터를 비교하여 변화된 데이터를 저장할 수 있다.
또한 SSH를 이용하면 rsync 서버가 구축되어 있지 않아도 미러링을 할 수 있는 이점이 있
다.
# 3. rsync 설치
레드햇 리눅스 9에서는 최신 버전의 rsync RPM 패키지를 지원하므로 간단히 RPM 패키지
를 설치하여 사용한다. 그러면 우선, rsync 패키지가 설치되어 있는지를 확인해 본다...
[root@localhost root]# rpm -qa | grep rsync
rsync-2.5.5-4
[root@localhost root]# _ ----->대기중인 커서를 의미함.
상기 화면과는 달리 아무런 rsync 버전 정보가 표시되지 않는다면 rsync가 시스템에 설치
되어 있지 않는 것이므로, rsync-2.5.5-4.i386.rpm 패키지를 구해 다음과 같이 설치한다.
설치전에 반드시 미리 구한 패키지가 있는 디렉토리로 들어간후 설치하는것을 잊지 말자.
[root@localhost RPMS]# rpm -ivh rsync-2.5.5-4.i386.rpm
준비 중... ############################ [100%]
1 : rsync ############################ [100%]
[root@localhost RPMS]# _
@ [참고사항] - rsync RPM 패키지 설치시 의존성 오류가 나올때
rsync RPM 패키지는 redhat-lsb 패키지와 의존성을 가지므로, 설치시
의존성 오류가 나올 때는 redhat-lsb-1.3-1.i386.rpm을 먼저 설치한 후
에 rsync 패키지를 설치한다.
# 4. SSH를 이용한 원격 서버 데이터 미러링
rsync 서버를 구축하지 않은 상태에서 rsync로 SSH를 이용하여 데이터를 백업하는 방법
은 다음과 같다. rsync 사용법에 관한 자세한 것은 잠시 후에 살펴보기로 하자...
rsync -avzr --delete -e ssh 원격서버:데이터경로 백업경로
그러면 192.168.1.13 클라이언트에서 192.168.1.1 원격 서버의 FTP 데이터를 SSH를 이용
하여 미러링하는 방법은 다음과 같다...
[root@localhost root]# rsync -avz --delete -e ssh 192.168.1.1:/ftp/pub/redhat9/
/mirror/redhat9
root's password:
receiving file list ... done
./
shrike-i386-disc1.iso
shrike-i386-disc2.iso
shrike-i386-disc3.iso
wrote 64 bytes read 1855717755 bytes 2449792.50 bytes/sec
total size is 1855094784 speedup is 1.00
[root@localhost root]# _
원격 서버의 주소와 미러링하고자 하는 데이터의 경로를 지정한 후에 -e ssh 옵션을
사용하여 원격 서버에 접속을 하게 되면 패스워드를 묻게 되는데, 원격 서버의 루트 패스
워드를 입력한다. 만일 일반 사용자 계정으로 이 명령을 수행한다면 원격 서버에도 동일한
계정이 존재하여야 하며, 원격 서버의 계정 패스워드를 입력한다.
SSH로 원격 서버에 접속이 이뤄지면 rsync에 의해서 원격 서버의 데이터를 미러링 서버
의 지정된 경로로 다운로드됨을 볼 수 있다.
@ [ 참고사항 ] - SSH를 이용한 rsync 데이터 동기화를 위한 원격 서버의 환경
클라이언트에서 rsync로 SSH를 이용하여 원격 서버에 접속하기 전에
원격 서버는 반드시 SSH 서버가 작동하고 있어야 접속이 가능하다.
즉, /etc/init.d/sshd restart를 실행하여 클라이언트가 SSH 서버에 접
속할 수 있도록 미리 준비해 놓고 있어야 한다는 예기다....
# 5. rsync 서버 설정(/etc/rsyncd.conf)
앞서 SSH를 이용하여 미러링을 하는 방법에 대해 알아보았다. SSH 서버가 구축되지 않은
원격 서버에서는 클라이언트가 미러링할 수 있도록 rsync 서버를 구축해야 한다. rsync 서
버의 설정 파일은 /etc/rsyncd.conf 파일인데, 이 파일은 자동으로 생성되지 않으므로 사
용자가 직접 만들어 사용해야 한다. 이 파일의 설정 형식은 다음과 같다.
[rsync 서비스명]
comment = rsync서버에 대한 설명
path = 미러링될 데이터의 경로
uid = 사용자 ID
gid = 그룹 ID
use chroot = yes / no
read only = yes /no
host allow = 아이피주소
max connections = 최대접속횟수
timeout = 초단위의 시간
① [rsync 서비스명] : rsync 서비스의 이름(모듈명)이다. 사용자가 원하는 형태로 서비스명
을 지정할 수 있다. 예) rh90
② comment : rsync 서비스에 대한 설명이다. 예) Red Hat Linux 9.0 Mirror
③ path : 미러링 서비스 될 데이터의 경로를 지정한다. 예) /data/linux90
④ uid, gid : 각각 파일 전송하는 사용자와 그룹의 아이디로, 익명 접속이 가능하도록 기본값
은 nobody로 설정되어 있으므로 이 값을 그대로 사용한다.
⑤ use chroot : path로 지정된 경로를 root 상위 디렉토리로 사용한다. 사용자가 다른 상위
디렉토리로 접근하지 못하도록 하기 위해서 보안상 필요로 하므로 yes로 설
정한다.
⑥ read only : 클라이언트가 서버에서 데이터만 다운로드 하는 경우에는 이 옵션을 yes로 설
정하여 읽기 전용 권한을 부여해야 한다. 만일 업로드가 가능하도록 하려면
no로 설정하지만 특별한 경우가 아니라면 yes로 설정한다.
⑦ host allow : 접속 호스트를 제한하지 않으면 누구나 데이터를 가져갈 수 있기 때문에 익
명의 FTP 미러 서버가 아니라면 보안상 rsync 서버에 접속 가능한 호스트의
아이피를 지정하는 것이 안전하다.
⑧ max connections : 동시에 접속 가능한 접속횟수를 설정한다. 무제한은 0으로 설정한다.
⑨ timeout : 클라이언트의 접속이 idle 상태에 있을 때 접속을 끊어버릴 시간을 설정한다.
기본값은 60초이다.
다음은 지금까지 살펴본 설정을 가지고 작성한 /etc/rsyncd.conf 예제 설정 파일이다.
[root@localhost /]# cat > /etc/rsyncd.conf
[rh9iso]
comment = Red Hat Linux 9 ISO Mirror
path = /data/ftp/pub/redhat9
uid = nobody
gid = nobody
use chroot = yes
read only = yes
host allow = 192.168.1.13
max connections = 5
timeout = 60
[root@localhost /]# _
# 6. /etc/xinetd.d/rsync 설정
rsync 서비스는 슈퍼데몬 xinetd에 의해서 작동하기 때문에 /etc/xinetd.d/rsync 파일을
설정해 주어야 한다. RPM 패키지 설치시 이 파일이 제공되므로 이 파일 가운데에서 다음
화면과 같이 disable = yes를 disable = no로 변경한다.
-------------------------------------------------------------------------------
root@localhost:/
-------------------------------------------------------------------------------
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
log_on_failure += USER ID
}
_ ----->대기중인 커서를 의미함.
~
[영어][완성][두벌식] 11,0-1 모두
--------------------------------------------------------------------------------
그런 다음 xinetd 슈퍼 데몬을 다시 실행하여 rsync서비스가 작동될 수 있도록 한다.
[root@localhost /]# /etc/init.d/xinetd restart
xinetd 를 정지함 : [ 확인 ]
xinetd (을)를 시작합니다 : [ 확인 ]
[root@localhost /]# _
rsync 서비스는 873 서비스 포트를 이용하므로, 텔넷으로 이 포트로 접속하여 rsyncd 정
보가 나오는지를 확인한다. 만일 접속이 이뤄지지 않는다면 방화벽을 점검하거나
/etc/rsyncd.conf 파일의 설정이 정확한지를 체크한다.
[root@localhost /]# telnet localhost 873
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1)
Escape character is '^]' .
@RSYNCD: 26
_ ----->대기중인 커서를 의미함.
# 7. rsync 사용법
SSH를 이용하여 rsync 미러링하는 방법에서 간단히 명령의 쓰임에 대해서 이미 살펴봤다.
그러면 rsync의 사용법에 대해서 자세히 알아보자.........
rsync [옵션] rsync서버주소::서비스명 미러경로
rsync에서 자주 사용되는 옵션은 -avzr이다. -a 옵션은 아카이브 모드이며, -v 옵션은
처리과정을 화면상에 출력되도록 하는 것이고, -z는 전송시 압축모드이며, -r 옵션은 하위
디렉토리를 의미하는 옵션이다. 그외 자세한 옵션은 man 페이지를 참고하자.
그러면 rsync로 미러링하는 방법을 연습해 보기로 하자....^_^*
7-1. rsync 서비스 모듈(서비스명과 설명) 알아보기
앞서 작성한 /etc/rsyncd.conf 예제 파일을 통하여 원격 rsync 서버에서 어떤 서비스를
현재 제공하는지를 알아보고자 할 때는 다음과 같은 명령을 실행한다.
rsync 서버주소::
[root@localhost root]# rsync 192.168.1.1::
rh9iso Red Hat Linux 9 ISO Mirror
[root@localhost root]# _
이 때 출력되는 것은 /etc/rsyncd.conf 파일에서 서비스명(모듈명)과 comment로 설정
된 메시지이다.
7-2. 로컬 시스템 데이터 백업
rsync를 이용하여 로컬 시스템의 데이터를 백업하려면 다음과 같은 명령을 사용한다.
rsync -avzr --delete 백업소스경로 백업될경로
--delete 옵션은 rsync서버의 백업할 데이터와 클라이언트의 데이터와 비교하여 변경
된 데이터를 추가하거나 삭제하고자 할 때 사용하는 데이터 비교 옵션이다.
그러면 /rh9hwp 디렉토리에 있는 파일을 /mirror/rh9hwp_backup 디렉토리로 백업해
보자.........
[root@localhost root]# rsync -avzr /rh9hwp/ /mirror/rh9hwp_backup
building file list ... done
created directory /mirror/rh9hwp_backup
./
맨드레이크 9.1.hwp
명령어사전 .hwp
제1부설치편 (60-151p).hwp
제2부 (152-731p).hwp
제3부 (732-1115p).hwp
wrote 36854994 bytes read 100 bytes 1890004.82 bytes/sec
total size is 42531514 speedup is 1.15
[root@localhost root]# ls /mirror/rh9hwp_backup
맨드레이크 9.1.hwp 제1부설치편 (60-151p).hwp 제3부 (732-1115p).hwp
명령어사전 .hwp 제2부 (152-731p).hwp
[root@localhost root]# _
/mirror/rh9hwp_backup 디렉토리로 데이터가 백업되고 있음을 확인할 수 있다.
7-3. 원격 서버의 데이터 백업
rsync -avz 서버주소::모듈명(서비스명) 백업될경로
이번에는 원격 서버의 레드햇리눅스9 배포판 이미지 파일을 미러링을 해보자.... 먼저
rsync 서버주소::를 실행하여 모듈명을 확인하여 원격 서버에 접속해 미러링되게 하면
된다.
[root@localhost root]# rsync 192.168.1.1::
rh9iso Red Hat Linux 9 ISO Mirror
[root@localhost root]# rsync -avz 192.168.1.1::rh9iso /mirror/redhat9
receiving file list ... done
./
shrike-i386-disc1.iso
shrike-i386-disc2.iso
shrike-i386-disc3.iso
wrote 118 byets read 1855717775 bytes 4995202.94 bytes/sec
total size is 1855094784 speedup is 1.00
[root@localhost root]# _
=====================================================================
참고자료 :
http://www.taejun.pe.kr/board2/read.php3?table=linuxinfo&no=28&page=1
rsync 이용 동기화하기 (박명순님 pms89@hitel.net 글)
레드햇 리눅스 6 서버 - 파워북 출판사, 번역판중 rdist 관련 자료
man page - rsync(1), rsyncd.conf(5)
0. 들어가며
서버 클러스터링으로 여러대의 서버를 운영하는 경우 각 호스트간의 자료
를 공유해야합니다. 공유기법에는 NFS도 있지만 NFS의 경우는 네트웍 트래
픽을 무척이나 높이므로 그 대신 rdist나 rsync를 이용할 수 있습니다. 이
글에서는 rsync를 이용하여 각 호스트간의 자료를 동기화하는 방법을 설명
합니다.
1. rsync란 무엇인가?
rsync는 rcp와 비슷한 동작을 하는 프로그램으로 rcp보다 더 다양한 옵션
이 있고, 더 효율적으로 데이터를 전송합니다. (출발지와 목적지 사이에
다른 부분만을 전송) 파일크기의 변화나 시간의 변화등을 이용 동기화를
합니다.
주요 특징은 다음과 같습니다.
ㅇ 링크, device, 소유자, 그릅, 허가권 복사 지원
ㅇ GNU tar와 비슷한 exclude, exclude-from 옵션 지원
ㅇ rsh 또는 ssh 등 사용가능
ㅇ root 권한이 필요없음
ㅇ anonymous 또는 인증 rsync 서버 지원(미러링에 유용함)
2. rsync 설정
ㅇ 일반적인 배포판의 경우 프로그램이 들어있음. 다음과 같이 확인후 없
으면 프로그램 설치
# rpm -qa | grep rsync
rsync-2.3.1-2
ㅇ rsync 2.3.1 이전 버전의 경우 "보안버그"가 있으므로 이전 버전이 설
치되어있다면 반드시 "2.3.1 이상 버전으로 업데이트"해야함
ㅇ 동기화에 사용하는 프로토콜 : rsh, ssh를 사용할 수 있음. 이를 사용
하지 않더라도 원격 rsync 서버에 TCP 포트 873을 이용 접속할 수 있음. 8
73 포트를 이용할 경우 inetd.conf 에 추가로 설정을 해야합니다.
rsync stream tcp nowait root /usr/bin/rsync rsyncd --daem
on
--daemon은 대몬모드로 시작한다는 이야기이며 /etc/rsyncd.conf파일을 필
요로 합니다.
또한 /etc/services 에 다음 내용이 있는지 확인하고 없으면 추가합니다.
rsync 873/tcp # rsync
추가하고 나서는 inetd 대몬을 다시 띄워야겠지요?
# kill -HUP inetd_pid
만약 ssh나 rsh를 사용하는 경우에는 inetd.conf를 수정할 필요가 없습니
다.
3. 설정파일 : /etc/rsyncd.conf
예제를 보겠습니다. 다음 예제의 호스트를 www1이라고 하겠습니다.
# cat /etc/rsyncd.conf
[web]
path = /home/www/htdocs
comment = web
uid = nobody
gid = nobody
use chroot = yes
read only = yes
hosts allow = www2.taejun.pe.kr
max connections = 3
timeout 600
[web] 서비스명
path 서비스할 디렉토리
comment 설명
uid 파일전송하는 사용자의 id. 기본값은 nobody
gid 파일전송하는 사용자의 그룹 id. 기본값은 nobody
use chroot 위의 path를 root 디렉토리로 사용. 보안상 필요함.
read only 읽기전용
hosts allow 호스트별 접속허용. 기본값은 all host이므로 보안을 유지하
려면 반드시 설정함
max connections 동시접속자수
timeout 클라이언트에서 접근시 타임아웃시간. anonymous 로 운영하는 경
우 설정을 해야 클라이언트가 죽었을 때 서버에서 접속을 해체할 수 있음.
* put(클라이언트에서 서버로 올리는 경우)을 사용하기위해서는 read only
= no 로 설정을 해야됩니다.
이 외에도 여러 가지 옵션이 있지만 실제로은 위의 옵션정도가 자주 사용
됩니다. 현재 rsync 자체적으로 암호화는 지원하지 않으며 사용자 인증만
지원합니다. 추후에는 SSL을 지원할 예정이며, 만약 암호화를 사용하려면
ssh를 사용하면 됩니다.
4. rsync 사용하기
(접근 클라이언트를 www2.taejun.pe.kr이라고 가정함)
rsync -avz --delete www1.taejun.pe.kr::web /home/taejun/~public_html
-a는 아카이브 모드. 심볼릭 링크, 속성, 퍼미션, 소유권 등 보존
-v 상세하게 보여움
-z 전송시 압축을 함.
--delete www1.taejun.pe.kr에서 web에 해당하는 내용(/home/www/htdocs)
을 ww2.taejun.pe.kr 의 /home/taejun/~public_html 로 가져오면서 www1
(서버)에는 없는 내용은 www2에서 삭제함. 만약 www2 차원에서 생성한 파
일을 보관하려면 옵션 없앰.
rsync -avz foo:src/bar /data/tmp
다음 내용은 foo라는 호스트에서 src/bar 안의 내용을 지역호스트의 /data
/tmp 디렉토리로 옮기는 것입니다.
여기서 알아두어야 할 것이 있습니다.
만약 위에서 src/bar/ 라고 하면 어떻게 달라질까요? bar 는 그 디렉토리
자체까지 포함해서 가져옵니다. 그렇지만 bar/ 라고 뒤에 디렉토리 표시를
하면 그 디렉토리안에 있는 내용만 가지고 옵니다. 상당히 결과가 달라질
수 있겠지요.
또한 : 과 ::의 차이는 무엇일까요? : 은 rsh나 ssh를 사용하는 것이며 ::
은 rsync 자체에서 지원하는 기능을 이용 자료를 가져오는 것으로 873 TCP
포트를 사용합니다. 상당히 헷갈리지요? : 에서 기본은 rsh를 이용하지만
-e ssh 옵션을 이용하여 ssh를 사용할 수 있습니다. ssh를 사용하려면 비
밀번호를 입력해야하는데 이것도 파일형태로 만들어서 옵션에서 지정해주
면 됩니다. 이에 대해서는 따로 설명하지는 않으며 man page를 참고하세
요.
-avz 등의 옵션이 있는데 이중 중요한 옵션만 설명을 하겠습니다.
-v verbose (자세하게 보여줌)
-a archive mode
-u update only(새로운 파일을 덮어쓰지 않음)
--delete 서버쪽에 없고 클라이언트쪽에만 있는 파일을 지움
-z compress (전송시 압축을 함)
--daemon 대몬 모드로 운영함 (이건 inetd.conf에 지정할 때 필요함)
-a 는 -rlptg 와 동일합니다.
-r recursive (하위 디렉토리까지 포함)
-l 심볼릭 링크 재생성
-p 퍼미션 업데이트
-t 변경시간 전송 (이것이 없으면 전송한 시간으로 바뀜)
-g 그룹이름 변경
일반적으로 rsync는 길이와 time-stamp를 이용 파일을 비교합니다.
이제 쉘 스크립트를 만들고 cron에 등록을 하여 주기적으로 데이터를 동기
화하면 됩니다.
5. 마치며
기본적으로 암호화를 지원하지 않는 것이 아쉽고 약간은 불편합니다. ssh
를 쓰는 것도 한가지 대안이지만 비밀번호를 넣어야하고 일일이 넣기 귀찮
으면 파일형태로 지정할 수 있는데 이런 방법도 보안문제가 생길 여지가
있겠지요.
위에서 말을 한 대로 예전 패키지에는 보안 버그가 있으니 반드시 최근 패
키지로 업데이트를 하는 것! 잊지 마세요.
출처 : Tong - Gold_Sky님의 Linux 통

최고관리자
07-07-06 16:13
0개
19회
일반문서
RSYNC 사용법
댓글목록
등록된 댓글이 없습니다.