U E D R , A S I H C RSS

Zero Page Server/Mirroring

(from http://222.122.13.152/bbs/board.php?bo_table=pl_linux&wr_id=153 )

로컬 호스트 시스템을 백업하는 방법으로는 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]#  _
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.3945 sec