YesYo.com MintState Forums
뒤로    YesYo.com MintState BBS > Tech > Linux
검색
멤버이름    오토
비밀번호 
 

미러링(mirroring)

페이지 정보

작성자 MintState 댓글 0건 조회 13,199회 작성일 08-11-05 13:18

본문

미러링(mirroring)

명경백 : kbmyung@kebi.com

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

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를 발견하였다.

■사용환경

사용환경은 아래와 같다.

[linux@test bin]$ uname -a
Linux test .loggroup.com 2.2.16-22 #1 Tue Aug 22 16:16:55 EDT 2000 i586 unknown
[linux@test 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

[linux@log linux]$ uname -a
Linux log.loggroup.com 2.2.16-22 #1 Tue Aug 22 15:48:40 EDT 2000 i486 unknown
[linux@test 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의 소스를 받았다.
[root@log /root]# whoami
root
[root@log /root]# gzip -d rsync-2.4.6.tar.gz
[root@log /root]# tar xvf rsync-2.4.6.tar
[root@log /root]# cd rsync-2.4.6

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

[root@log rsync-2.4.6]# ./configure
[root@log rsync-2.4.6]# make
[root@log rsync-2.4.6]# make install
[root@log rsync-2.4.6]# make clean
[root@log rsync-2.4.6]# cd /usr/local/rsync/
[root@log 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란 항목을 추가해야 할 것이다.
[root@log 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 디렉토리가 없으므로 아래의 명령으로 다음 디렉토리를 만들어 주어야 한다.

[root@test /root]$ mkdir /usr/local/rsync/{log,etc}

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

4.1 rsyncd.conf
[root@test /root]# cat /usr/local/rsync/etc/rsyncd.conf



4.2 motd
[root@test /root]# cat /usr/local/rsync/etc/motd
Welcome to the kbmyung anonymous rsync archives.

Contact kbmyung@kebi.com
linux@phpgroup.com if you have problems.

------

4.3 syslog.conf
[root@test /root]# mkdir /usr/local/rsync/log
[root@test /root]# echo “local3.info /usr/local/rsync/log/rsync.log” >> /etc/sy
slog.conf
[root@test /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 컴퓨터에서

[root@test /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 컴퓨터에서 실행하면 아래와 같이 나온다.

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

Contact kbmyung@kebi.com | linux@phpgroup.com if you have problems.

------

ftp            ftp area

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


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

[root@log /root]$ mkdir /home/mirroring
[root@log /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 컴퓨터에서 먼저 데몬을 실행 시킨다.

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

6.1 ssh 를 사용한 미러링(mirroring)
IP 주소가 192.168.1.4인 log 컴퓨터에서 아래의 명령을 실행해 본다.
[root@log rsync]# mkdir /mirror
[root@log /mirror]# /usr/local/rsync/bin/rsync -av -e ssh 192.168.1.1::ftp /mirror/

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

댓글목록

등록된 댓글이 없습니다.

Total 360건 14 페이지
Linux 목록
번호 제목 글쓴이 조회 날짜
100 MintState 13346 11-05
99 MintState 13452 11-05
98 MintState 13776 11-05
97 MintState 14041 11-05
96 MintState 12826 11-05
95 MintState 14111 11-05
94 MintState 11962 11-05
93 MintState 13240 11-05
92 MintState 14146 11-05
91 MintState 12659 11-05
90 MintState 12974 11-05
89 MintState 15408 11-05
열람중 MintState 13200 11-05
87 MintState 11455 11-05
86 MintState 14066 11-05
85 MintState 20516 11-05
84 MintState 13199 11-05
83 MintState 14229 11-05
82 MintState 15795 11-05
81 MintState 15393 11-05
게시물 검색
모바일 버전으로 보기
CopyRight ©2004 - 2024, YesYo.com MintState. ™