리눅스를 사용하면서 원격지에 있는 자료를 백업, 동기화 하는 대표적인 방법중 하나인 Rsync 를 알아보자.

원본 데이터를 가진 호스트를 서버라 하고, 그 외의 모든 호스트를 클라이언트라 하자.

먼저 서버측 설정을 해보자

 

 

서버측 설정

먼저 서버상에 xinetdrsync가 설치되어 있는지 확인한다.

 

rpm -qa | grep rsync
rpm -qa | grep xinetd

만약 설치되어 있지 않으면 yum 으로 설치하고

( yum install rsync, yum install xinetd )

그 다음 rsync를 xinetd 를 이용하여 실행시키기 위해 /etc/xinetd.d/rsync 를 수정한다.

# default: off # description: The rsync server is a good addition to an ftp serve as it \ # allows crc checksumming etc. service rsync { #disable = yes ## 기본적으로 'yes'가 되어 있는데 이걸 'no'로 변경 disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }

기본적으로 rsync 를 사용하려면 방화벽에서 873포트를 열어 주어야 한다. 그후 iptables restart 진행

/etc/init.d/iptables restart

 

이제 rsync의 환경 설정 파일을 생성해야 된다.

이 파일에는 클라이언트가 백업을 할 수 있도록 특정 디렉토리를 설정해 준다.

vi /etc/rsyncd.conf

[leeahngw]                       -- 서비스명                                                                                                                                
path=/home                     -- 백업할 자료가 있는 경로
comment=HomeBackup      -- 설명
uid=root                           -- 파일을 전송하는 사용자의 id, 기본값은 nobody
gid=root                           -- 파일을 전송하는 사용자의 그룹 id, 기본값은 nobody
use chroot=yes                 -- 위의 path를 root 디렉토리로 사용. 보안상 필요하다
read only=yes                   -- 읽기 전용
hosts allow=192.168.1.111   -- 호스트별 접속허용. 기본값은 all host이므로 보안을 유지하려면 반드시 설정한다.
max connections=1            -- 동시 접속자수
timeout 600                        -- 클라이언트에서 접근시 타임아웃시간, anonymous로 운영하는 경우 설정을 해야 클라이언트가 죽었을 때
                                            서버에서 접속을 해야 클라이언트가 죽었을 때 서버에서 접속을 해체할 수 있다. 보안상 hosts allow와
                                            use chroot는 설정해줄 것을 권장한다.

디렉토리를 더 추가하려면 위 형식에 맞게 더 적어주면 된다.

 

 

클라이언트 설정

사용법

rsync -avz 서버IP::서비스명 백업 디렉토리

 

rsync -avz serverIP::leeahngw /backup

 

여기서 ::에 주목해야 한다. :: 다음에는 서비스 명을 적어야 하고, 만약에 : 하나만 적는다면 ssh 나 rsh 을 통하여

원격 백업을 진행 한다는 것이다. rsync 포트로 전송하려면 :: 두개를 적어줘야 한다.

두번째 백업시에는 변경된 파일만 전송하게 된다.

 

 

SSH를 사용한 원격 백업

rsync 명령어를 이용하는데 ssh포트를 이용 하고자 한다면 따로 환경 파일을 만들어야 한다거나

하는 수고로움이 없다. 따라서 급하게 rsync 를 해야될때는 22번 포트를 이용해서 원격 백업을

많이 진행한다.

 

rsync -avz -e ssh hostname(IP):/타겟경로 /백업받을경로
rsync -avz -e "ssh -p 22" 192.168.1.112:/home/ /backup/

 

-a : archive mode 심볼릭 링크, 속성, 퍼미션, 소유권등을 보존한다
-v : verbose 진행상황을 상세하게 보여준다.
-z : compress 전송시 압축을 수행한다.
-u : update only 새로운 파일을 덮어쓰지 않는다.
-e : 복사를 위한 원격접속쉘 프로그램을 설정한다.
--delete : 서버측에 없고 클라이언트측에만 있는 파일을 지운다.

 

 

마지막 정리!! 이것만 기억하세요

서버 IP설정 다음에 ':'가 1개만 들어간다면 ssh나 rsh을 이용하는것(따라서 서버 패스워드를 묻는다.)

'::' 2개가 들어간다면 TCP 873포트를 이용한다 (서버에서 rsync 서비스로 제공하고 있는걸 받기 때문에 패스워드를 묻지 않는다, 대신 설정 파일에 허용되어 있어야 함)