리눅스, 자료실, 성경검색, 추억의게임, 고전게임, 오락실게임, rootman, http://www.rootman.co.kr
* 54.196.42.8 *
| Home | Profile | Linux | 자료실 | zabbix | Mysql 5.6 | 갤러리 | 성경검색 | 해피니스 | 자유게시판 | 게시물검색 | L | O | R |    

 
[Doc/Faq] 미러링(mirroring) - rsync 서버 세팅
 작성자 : rootman
Date : 2002-10-21 20:07  |  Hit : 12,008  
미러링(mirroring)

명경백 :[email protected]


∼∼∼∼∼∼∼∼∼ 목 차 ∼∼∼∼∼∼∼∼∼∼

0. 미러링(mirroring) 이란?
■사용환경
1. rsync는 무엇인가?

2. rsync 특징
2.1 rsync 는 전체 디렉토리 트리와 파일 시스템을 업데이트 할 수 있다.
2.2 선택적으로 심볼릭 링크, 하드 링크, 파일 소유권, 권한, 장치와 시간을 유지할 수 있다.
2.3 설치하기 위해서 특별한 권한을 요구하지 않는다.
2.4 국제적인 정보루트로 다양한 파일들의 대기 시간을 단축한다.
2.5 rsh, ssh 또는 전송(transport)과 같은 직접 소켓(direct sockets)을 사용할 수 있다.
2.6 이상적인 미러링(mirroring)을 위한 익명의(anonymous) rsync를 지원한다.

3. rsync 컴파일(Compilation)
3.1 rsync 컴파일 방법
3.2 services에 rsync 추가하기

4. 설정 (Configuration)
4.1 rsyncd.conf
4.2 motd
4.3 syslog.conf
4.4 전역 옵션 설명(Global options)
4.5 지역/모듈 옵션(Local/Module options)

5. 사용법
5.1 서버(server) 실행
5.2 클라이언트(client) 실행

6. 고급 사용 예제
6.1 ssh 를 사용한 미러링(mirroring)

7. 후기

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼



0. 미러링(mirroring) 이란?

사전에 등록된 미러링(mirroring)은 무엇일까?

일반사전에는
mirror
-n.
1 거울; 〔光〕 반사경.

인터넷 사전에는

mirroring [미러링]
① 다른 지역에 있는 데이터의 복사본을 그대로 유지하는 것. 원본의 내용이 바뀌게 되면,
바뀐 내용을 다시 갖고 와서 항상 같은 데이터를 갖도록 유지한다. 유명한 FTP 지역의
경우 한 곳에 사용자들이 너무 몰리면 성능상의 문제가 발생하게 되는데,
이를 방지하기 위해 다른 곳에 이와 똑같은 데이터를 미러링해 두면 그 곳에 가까운
사용자들은 이를 사용할 것이므로 사용자들을 분산시키는 장점이 있다.
② 한 시스템의 내용과 똑같은 내용을 갖는 시스템을 별도로 유지하는 것. 만약 한 시스템이
고장 나게 되면 미러링한 다른 시스템을 대신 사용하면 된다. 고장 허
용 시스템에서
사용하는 방법 중의 하나이다.

라고 사전에 나온다. 요즘 인터넷에 찾아 다니다 보면 미러링(mirroring)
한다는 곳이 자주 보인다. “과연 나도 할 수 있을까?” 라는 의문에서 시
작해서 “한번 해 보아야겠다” 라는 의지로 인해, 찾아보게 되었다. “그
럼 과연 미러링(mirroring)하는 프로그램은 무엇이 있을까?” 필자가 원했
던 프로그램은 소스가 공개(open) 되어있고, 공짜(free)여야 한다는 가정
하에서 출발하였다. 이런 조건을 충족하고 간단하면서 훌륭한 프로그램으
로 rsync를 발견하였다.



■ 사용환경

사용환경은 아래와 같다.

[[email protected] bin]$ uname -a
Linux test .loggroup.com 2.2.16-22 #1 Tue Aug 22 16:16:55 EDT 2000 i586 unknown

[[email protected] linux]$ ifconfig eth1 | grep inet
inet addr:192.168.1.1
Bcast:192.168.1.255
Mask:255.255.255.0
wu-ftpd-2.6.1-6.i386.rpm
rsh-0.17-2.2.i386.rpm
rsh-server-0.17-2.2.i386.rpm
sysklogd-1.3.33-6.i386.rpm

[[email protected] linux]$ uname -a
Linux log.loggroup.com 2.2.16-22 #1 Tue Aug 22 15:48:40 EDT 2000 i486 unknown

[[email protected] linux]$ ifconfig eth0 | grep inet
inet addr:192.168.1.4 Bcast:192.168.1.255
Mask:255.255.255.0
wu-ftpd-2.6.1-6.i386.rpm
rsh-0.17-2.2.i386.rpm
rsh-server-0.17-2.2.i386.rpm
sysklogd-1.3.33-6.i386.rpm

미러링(mirroring)을 위해서 필자는 rsync를 사용하였고 이제부터 rsync에 대해 설명해 나가겠다.



1. rsync 는 무엇인가?

rsync는 많은 기능을 가지고 있는 rcp 의 대체이다.
rsync는 “rsync algorithm”을 사용하고 원격 파일을 동기화 시키는 매우 빠른 방법을 제공한다.
sync는 링크 파일 사이에서 양쪽 일련의 파일들이 미리 링크의 끝의 하나인 것을 요구하지 않고 단지 차이점만 보낸다.
첫째로 파일을 힐끔 보는 것은 불가능 한데, 왜냐면 두 파일 사이의 차이점을 계산하는 것은 양쪽 파일의 지역 억세스(local access)가 일반적으로 필요하기 때문이다.
rsync algorithm을 기술하는 기술적인 문서는 이 패키지에 포함되어 있다.



2. rsync 특징

2.1 rsync 는 전체 디렉토리 트리와 파일 시스템을 업데이트 할 수 있다.
2.2 선택적으로 심볼릭 링크, 하드 링크, 파일 소유권, 권한, 장치와 시간을 유지할 수 있다.
2.3 설치하기 위해서 특별한 권한을 요구하지 않는다.
2.4 국제적인 정보루트로 다양한 파일들의 대기시간을 단축한다.
2.5 rsh, ssh 또는 전송(transport) 과 같은 직접소켓(direct sockets)을 사용할 수 있다.
2.6 이상적인 미러링(mirroring)을 위한 익명의(anonymous) rsync 를 지원한다.



3. rsync 컴파일(Compilation)
3.1 rsync 컴파일 방법

아래 사이트 들에서 다운 받을 수 있다.

ftp://sunsite.auc.dk/pub/unix/rsync
ftp://ftp.sunet.se/pub/unix/admin/rsync
ftp://ftp.fu-berlin.de/pub/unix/network/rsync Or naturally
rsync://samba.anu.edu.au/rsyncftp/

필자의 경우,
http://rsync.samba.org/ftp/rsync/rsync-2.4.6.tar.gz에서 rsync-2.4.6의 소스를 받았다.
[[email protected] /root]# whoami
root
[[email protected] /root]# gzip -d rsync-2.4.6.tar.gz
[[email protected] /root]# tar xvf rsync-2.4.6.tar
[[email protected] /root]# cd rsync-2.4.6

필자의 경우 configure 파일의 ac_default_prefix=/usr/local 이 부분을 ac_default_prefix=/usr/local/rsync 로 변경하였다.

[[email protected] rsync-2.4.6]# ./configure
[[email protected] rsync-2.4.6]# make
[[email protected] rsync-2.4.6]# make install
[[email protected] rsync-2.4.6]# make clean
[[email protected] rsync-2.4.6]# cd /usr/local/rsync/
[[email protected] rsync]# ls -al ./bin/rsync
-rwxr-xr-x 1 root root 201127 Mar 19 02:31 ./bin/rsync

위에서와 보는 것과 같이 성공적으로 설치된 것을 볼 수 있다.
필자의 경우 기본환경 인 /usr/local/bin/에 rsync를 설치하지 않고, /usr/local/rsync/bin/rsync에 설치를 하였음으로 rsync를 실행하려면, PATH를 지정해 두어야 할 것이다.


3.2 services 에 rsync 추가하기

이와 함께 /etc/services 파일에 rsync 873/tcp란 항목을 추가해야 할 것이다.
[[email protected] rsync]# echo “rsync 873/tcp #rsync” >> /etc/services



4. 설정 (Configuration)

rsync 를 데몬 모드(daemon mode)로 사용할 때는, 하나의 설정파일을 사용하는데,
기본적으로 /etc/rsyncd.conf 이지만 --config FILE 옵션으로 바꿀 수 있다.

만일 “3.1 rsync 컴파일 방법”에서 ac_default_prefix 이 부분을 ac_default_prefix=/usr/local/rsync처럼 하였다
면, /usr/local/rsync/etc, /usr/local/rsync/log 디렉토리가 없으므로 아래의 명령으로 다음 디렉토리를 만들어 주어야 한다.

[[email protected] /root]$ mkdir /usr/local/rsync/{log,etc}

파일들의 설정 예제는 아래와 같다.



4.1 rsyncd.conf

[[email protected] /root]# cat /usr/local/rsync/etc/rsyncd.conf
motd file = /usr/local/rsync/etc/motd
log file = /usr/local/rsync/log/rsyncd.log
pid file = /usr/local/rsync/etc/rsyncd.pid
max connections = 0
syslog facility = local3

[ftp]
comment = ftp area
path = /var/ftp
read only = yes
list = yes
uid = nobody
gid = nobody
[tmp]
comment = temporary file area
path = /tmp
read only = no
list = no
hosts allow = 192.168.1.1/24 127.0.0.0/8


4.2 motd

[[email protected] /root]# cat /usr/local/rsync/etc/motd
Welcome to the kbmyung anonymous rsync archives.

[email protected]
[email protected] if you have problems.

------



4.3 syslog.conf

[[email protected] /root]# mkdir /usr/local/rsync/log
[[email protected] /root]# echo “local3.info /usr/local/rsync/log/rsync.log” >> /etc/syslog.conf
[[email protected] /root]# touch /usr/local/rsync/log/rsync.log



4.4 전역 옵션(Global options)
motd file:
이름들의 텍스트 파일이고, 오늘의 메세지며 이는 파일 전송이 시작되기 전에 클라이언트(client)에게 나타난다.
이것은 꼭 전역 섹션(global section)에 위치해야 한다.
보통 사이트 정보와 알림에 사용한다. 기본적으로는 motd 파일은 없다.

pid file:
pid file 옵션은 rsync 데몬 프로세스(process) id 를 pid file에 말해준다.

max connections:
max connections 옵션은 동시에 접속하는 최대 숫자를 지정한다.
어떤 클라이언트(client)라도 최고치에 도착하면 클라이언트에게 나중에 다시 접속하라는 메세지를 받는다.
기본적으로 0은 제한 없다는 것을 의미한다.


lock file:
lock file 옵션은 max connections를 유지할 때 지정하는 파일이다.
rsync서버(server)는 이파일로 최고 연결의 제한이 남지 않도록 보증하기 위해서
기록 감금(record locking)을 사용한다. 기본은 /var/run/rsyncd.lock이다.

syslog facility:
syslog 설비의 숫자의 값으로 로그 접속고 통계를 낸다. 이러한 값들은 보통
syslog 메뉴얼에 정의 되어 있다.



4.5 지역/모듈 옵션(Local/Module options)

comment:
모듈의 이름. 만일 리스트(list)가 yes로 지정되어 있다면, 클라이언트(client)가 확장된 모듈 리스트를 요청할 때 이름이 보여질 것이다.

path:
루트(root)의 파일 트리(file tree)를 정의한다. 이는 보여질 것이다.
Rsync는 이 디렉토리를 chroot로 지정할 것이다.

read only:
read only 옵션은 클라이언트(client)가 파일을 업로드(upload) 할 수 있는지 없는지 결정한다.
만일 read only가 true이라면 어떠한 업로드 시도도 실패할 것이다.
만일 read only가 불가(false)라면 서버에서 파일들에 대한 권한을 허락한다면, 업로드(upload)가 가능할 것이다.
기본은 모든 모듈에 대하여 읽기 전용(read only)이다.
인증이 적용되기 전까지는 read only를 yes로 설정할 것을 추천한다.

list:
클라이언트가 모듈들의 리스트를 요청했을시 모듈을 보여줄 것인지 지정한다.
list를 false 세팅으로서 숨겨진 모듈을 만들 수 있다. 모듈들을 위해서 기본적으로 리스트 할 수 있다.

uid:
rsync는 chroot가지고 있는 것처럼 수행한 후 user id를 바꿀 것이다. 익명(anonymous)의 접속을
위해서, 열려있는 id인 nobody로 열어야 할 것이다. 기본 사용자(user)는 “nobody” 이다.

gid:
rsync는 chroot 가지고 있는 것처럼 수행한 후 group id를 바꿀 것이다.
익명(anonymous)의 접속을 위해서, 열려있는 group인 nobody로 열어야 할 것이다.
기본 그룹(group)은 “nobody” 이다.

hosts allow:
호스트네임(hostname)(* 와 함께)이나 IP/mask의 모듈로 연결할 수 있는 호스트들의 리스트

hosts deny:
이 모듈에 연결할 수 없는 호스트들 리스트

auth users:
“auth users” 옵션은 이 모듈에 접속을 허락하는 사용자 이름의 리스트를 콤마(comma)와 공백(space)로 지정한다.
사용자 이름은 지역 시스템에 존재하지 않아도 된다.
“auth users”가 지정되어 있다면 클라이언트(client)는 사용자이름과 비밀번호를 이 모듈에 접속하기 위해서 제공해야 할 것이다.
이 교환을 위해서 사용되어지는 인증 프로토콜이 요구에 응답한다.
사용자이름들과 비밀번호들이 “secrets file” 옵션으로 지정되는 text 파일에 저장된다.
모든 사용자를 위해서 기본적으로 비밀번호 없이 접속할 수 있다.
(이것을 “익명(anonymous) rsync”라고 부른다).

secrets file:
“secrets file” 옵션은 인증을 위해서 사용되는 항상의 username:password를 포함하는 파일의 이름을 지정한다.
이 파일은 “auth users” 옵션이 지정되었을 때만 참조한다.
이 파일은 행 기반이고 :(single colon)으로 구분되는 한 쌍의 username:password를 포함하고 있다.
hash(#)로 시작하는 행은 주석으로 해석되고 생략된다.

비밀번호는 어떠한 문자로도 가능하지만, 많은 운영체제에서 클라이언트(client) 끝에서 치지는 패스워드의 길이의 제한을 주의해서, 8문자 보다 더 큰 패스워드는 동작하지 않을 것이다.
“secrets file”에는 기본 옵션이 없으므로, 이름을 지정해야 한다. ( /usr/local/rsync/etc/rsyncd.secrets 처럼)


5. 사용법
5.1 서버 실행
이제 IP 주소가 192.168.1.1인 test 컴퓨터에서

[[email protected] /root]# /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/etc/rsyncd.conf
명령으로 해서 rsync를 데몬모드(deamon mode)구동시킨다.


5.2 client 실행
이제 IP 주소가 192.168.1.4인 log 컴퓨터에서 실행하면 아래와 같이 나온다.

[[email protected] /root]$ /usr/local/rsync/bin/rsync -v 192.168.1.1::
Welcome to the kbmyung anonymous rsync archives.

[email protected] |[email protected] if you have problems.

------

ftp ftp area

필자의 경우 “4.1 rsyncd.conf” 파일에서 보면,

[tmp]
comment = temporary file area
path = /tmp
read only = no
list = no
hosts allow = 192.168.1.1/24 127.0.0.0/8

list 가 클라이언트가 모듈들의 리스트를 요청했을 시 모듈을 보여줄 것인지 지정하는데 list=no가 설정이 되어 있으므로 숨겨진 모듈로 동작해서, 위의 “5.2 client 실행”에서 보는 것과 같이 tmp는 나타나지 않지만 사용할 수 있다.

[[email protected] /root]$ mkdir /home/mirroring
[[email protected] /root]$ /usr/local/rsync/bin/rsync -av
192.168.1.1::ftp /home/mirroring/


이렇게 실행 시키면 log 컴퓨터의 /home/mirroring/ 디렉토리에 똑같이 미러링(mirroring)이 된다.
성공이다. 이로서 한 컴퓨터에서 rsync를 daemon 모드로 구동시키고 다른 한 컴퓨터에서 client로서 실행이 가능하므로 세세한 부분만 더 보안한다면 아주 좋은 미러링(mirroring)이 될 것 이라고 생각한다.



6. 고급 사용 예제

IP 주소가 192.168.1.1인 test 컴퓨터에서 먼저 데몬을 실행 시킨다.

[[email protected] /root]# /usr/local/rsync/bin/rsync --daemon --
config=/usr/local/rsync/etc/rsyncd.conf


6.1 ssh 를 사용한 미러링(mirroring)

IP 주소가 192.168.1.4인 log 컴퓨터에서 아래의 명령을 실행해 본다.
[[email protected] rsync]# mkdir /mirror
[[email protected] /mirror]# /usr/local/rsync/bin/rsync -av -e ssh 192.168.1.1::ftp /mirror/


후기
간단한 디렉토리를 만들어 사용하였지만, web 이나 ftp에서 사용하면 좋은 미러링 프로그램이 될 것이라 생각한다.
crond나 inetd나 xinetd를 이용하지 못한 점을 아쉽게 생각하며, 간단하면서도 이런 기능을 하는 rsync 를 볼 때 대단하다는 생각이 든다.

 
 

Total. 645
번호 분류 제목 작성자 등록일 조회수
645 기초강좌 NFS server unable to open connection to tcp6/udp6 networks rootman 09-27 2080
644 php [php] mssql ms-sql 한글 변환 끄적임.. 정리 rootman 03-29 3015
643 기초강좌 java vim 에서 자바 환경 만들기 rootman 02-16 2335
642 삭제예정 [xencenter] xenserver tool 설치 rootman 08-24 3277
641 mysql [mysql] Creating a File-Per-Table Tablespace Outside the Dat… rootman 08-03 3447
640 기초강좌 Centos Xwindow 설치 rootman 06-16 4305
639 php [php] highlight 함수 rootman 04-01 4162
638 qmail [qmail] qmail-scanner에 filtering 된 이메일 처리 rootman 02-14 4602
637 Shell [날짜] awk를 이용하여 unixtime의 시간 차 구하기 rootman 01-27 5348
636 기초강좌 centos에 그놈(gnome) 설치하기 rootman 01-10 5224
635 쉘(awk) [awk] shell 변수 사용하기 rootman 12-27 5091
634 기초강좌 서버 캐시 메모리 초기화하기 (drop_caches) rootman 12-11 5943
633 windows tips 그리드 제거 배치 스크립트 rootman 11-28 5660
632 기초강좌 패스워드 lockgin control rootman 09-06 4
631 windows tips win7 자동 로그인 설정하기 rootman 08-18 5320
 1  2  3  4  5  6  7  8  9  10    
AND OR