Engineer's tipLinux

lsync + rsync 를 이용한 디렉토리 동기화

실시간 동기화 라고 할 수도 있지만..  실제로는 원본 디렉토리에 파일이 생성된 직후 rsync가 실행되어 백업 서버로 동기화 하기 때문에 파일이 copy되는 동안의 시간차 발생함.

 

1. rsync 설치, 설치 확인 (백업서버)

[root@vm2 sdir]# yum install rsync

[root@vm2 sdir]# rpm -qa | grep rsync

rsync-3.0.6-4.el5_7.1

2. rsync 활성화 (백업서버)

[root@vm2 data]# vi /etc/xinetd.d/rsync

# default: off

# description: The rsync server is a good addition to an ftp server, as it \

#       allows crc checksumming etc.

service rsync

{

disable = no

socket_type     = stream

wait            = no

user            = root

server          = /usr/bin/rsync

server_args     = –daemon

log_on_failure  += USERID

}

3. rsyncd.conf 설정 (백업서버)

[root@vm2 data]# vi /etc/rsyncd.conf

[data_sync]

path=/data/sdir                  <– 접근을 허용할 디렉토리(백업디렉토리)

hosts allow=192.168.122.20       <– 접근을 허용할 서버 IP, 여러대를 동기화 할 경우 , 로 IP 추가

uid=0

gid=0

use chroot=yes

read only=no

[root@vm2 data]# mkdir /data/sdir

[root@vm2 data]#

[root@vm2 data]# /etc/init.d/xinetd restart

xinetd 를 정지 중:                                         [  OK  ]

xinetd (을)를 시작 중:                                     [  OK  ]

[root@vm1 data]#

 

 

4. lsyncd 설치 (원본서버)

[root@vm1 yum.repos.d]# yum install lsyncd

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

* base: ftp.daum.net

* extras: ftp.daum.net

* rpmforge: ftp.riken.jp

* updates: ftp.daum.net

Setting up Install Process

Resolving Dependencies

–> Running transaction check

—> Package lsyncd.i386 0:2.0.4-1.el5.rf set to be updated

–> Processing Dependency: lua for package: lsyncd

–> Running transaction check

—> Package lua.i386 0:5.1.4-2.el5.rf set to be updated

–> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================

Package                      Arch                       Version                               Repository                      Size

====================================================================================================================================

Installing:

lsyncd                       i386                       2.0.4-1.el5.rf                        rpmforge                       149 k

Installing for dependencies:

lua                          i386                       5.1.4-2.el5.rf                        rpmforge                       242 k

Transaction Summary

====================================================================================================================================

Install       2 Package(s)

Upgrade       0 Package(s)

Total download size: 391 k

Is this ok [y/N]: y

Downloading Packages:

(1/2): lsyncd-2.0.4-1.el5.rf.i386.rpm                                                                        | 149 kB     00:00

(2/2): lua-5.1.4-2.el5.rf.i386.rpm                                                                           | 242 kB     00:00

————————————————————————————————————————————

Total                                                                                               243 kB/s | 391 kB     00:01

Running rpm_check_debug

Running Transaction Test

Finished Transaction Test

Transaction Test Succeeded

Running Transaction

Installing     : lua                                                                                                          1/2

Installing     : lsyncd                                                                                                       2/2

Installed:

lsyncd.i386 0:2.0.4-1.el5.rf

Dependency Installed:

lua.i386 0:5.1.4-2.el5.rf

Complete!

[root@vm1 yum.repos.d]#

– yum 으로 실치가 불가능할 경우 아래와 같이 rpmforge의 레포지터리를 추가하거나, rpm 파일을 다운로드 받아서 설치

[root@vm1 yum.repos.d]# cat /etc/yum.repos.d/rpmforge.repo

[rpmforge]

name = Red Hat Enterprise $releasever – RPMforge.net – dag

#baseurl = http://apt.sw.be/redhat/el5/en/$basearch/dag

mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge

#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge

enabled = 1

protect = 0

gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag

gpgcheck = 0

5. lsyncd.conf 파일 생성 (원본서버)

settings = {

logfile = “/var/log/lsyncd.log”,               <– 로그파일 경로 설정

statusFile = “/var/log/lsyncd-status.log”,     <– lsyncd 상태 로그 경로

delay = 1,

}

sync{

default.rsync,

source= “/data/sdir”,                          <– 동기화 할 원본 디렉토리

rsyncOpts= “-avz”,

target= “192.168.122.184::data_sync”           <– backup 경로, rsyncd.conf 파일에 지정된 서비스명

}

sync{

default.rsync,

source= “/data/sdir”,                          <– 동기화 할 원본 디렉토리

rsyncOpts= “-avz”,

target= “192.168.122.150::data_sync”,          <– backup 경로, rsyncd.conf 파일에 지정된 서비스명

}

==============================================

– 백업서버가 2EA 이상일 경우, 아래와 같은 형식으로 작성해도 됨.

[root@vm1 sdir]# cat /etc/lsyncd.conf

settings = {

logfile = “/var/log/lsyncd.log”,               <– 로그파일 경로 설정

statusFile = “/var/log/lsyncd-status.log”,     <– lsyncd 상태 로그 경로

delay = 1,

}

targetlist = {

“192.168.122.184::data_sync”,                      <– backup 경로, rsyncd.conf 파일에 지정된 서비스명

“192.168.122.150::data_sync”                       <– backup 경로, rsyncd.conf 파일에 지정된 서비스명

}

for _, server in ipairs(targetlist) do

sync{ default.rsync,

source=”/data/sdir/”,                          <– 동기화 할 원본 디렉토리

target=server,

rsyncOpts= “-avz”,

}

end

6. lsyncd 데몬 실행 (원본서버)

[root@vm1 sdir]# /etc/init.d/lsyncd restart

lsyncd (을)를 시작 중:                                     [  OK  ]

7. 동기화 테스트

– 원본 서버의 source 디렉토리(/data/sdir) 에서 파일을 생성/삭제하면서, 백업서버의 target 디렉토리가 정상적으로 동기화 되는지 확인

8. 여러대의 서버를 서로 상호간 동기화 설정을 하기 위해서는

– 원본 서버에 백업서버와 동일하게 rsyncd.conf 파일을 생성하여 백업서버에서 접근이 가능하도록 설정

– 백업서버에 원본과 동일하게 lsyncd를 실행하고 백업 디렉토리에 생성/삭제된 파일이 원본서버로 동기화 되도록 설정

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다