RSYNC.

생각보다 많은 곳에 사용하는 기능이다.


백업, 배포, 등등등 생각보다 많은 장소에서 쓰인다.

LINUX 에서 파일을 복사하는 등의 작업을 하는 경우,

이어받기와 비슷한 느낌의 기능도 되어있기 때문에

(RSYNC 는 Server 와 Client 간 서로 다른 자료만 전달한다)

서버 개발자 또는 관리자라면 굉장히 긴밀하게 사용할 것이다.


RSYNC 를 사용하기 위해선 먼저 xinetd 와 rsync 가 설치되어 있어야 한다.

RSYNC는 굳이 버전에 큰 차이가 없으니 귀찮으니까 yum 으로 설치하려 한다.


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


위 명령어로 설치 여부를 확인 후 없으면 없는 것만 설치하자.

$ yum install rsync
$ yum install xinetd


xinetd 와 rsync 가 설치되었다면, rsync 설치 화면 으로 넘어간다.

$ vim /etc/xinetd.d/rsync


service rsync
{
disable = yes
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}

위 파일에 들어가면 아랫줄과 같은 부분이 있는데, disable 부분을 no 로 바꾸고 저장한다.



- SERVER 설정


rsync 는 rsync 포트 (기본 873) 를 사용해 전송하는 방식이 있고,

ssh 포트 (기본 22) 를 사용해 전송하는 방식이 있다.


873 포트를 이용한 전송방식은 아래와 같은 셋팅이 필요하다

$ vim /etc/rsync.conf

max connection = 10
log file = /var/log/rsync.log
timeout = 300

[test]
comment = rsync server test
path = /home/Service/test
read only = no
uid = root
gid = root
hosts allow = 127.0.0.1


맨 위 대괄호로 되어 있는 부분이 rsync 의 프로젝트 명이다.

host allow 는 보안을 위해 있는 부분인데, 입력하지 않으면 전체 오픈된다.

위 셋팅을 완료 후 rsync  서비스를 재시작 한다.


$ /etc/init.d/xinetd restart


위와 같이 생성했으면, client 에서 테스트를 해보자.


$ rsync -avz --progress --delete --exclude 'file_backup.sh' /home/Service/source/ 127.0.0.1::test

위 명령어 중 avz 는

a = archive 모드로 심볼링크, 퍼미션, 소유권 등을 보존

v = 진행상황을 상세히 보여줌

z = 전송 시 압축하여 전송


progress 는 진행상태를 보여주라는 뜻


delete 는 송신측과 수신측을 동일하게 유지 하기 위해 송신측에 없는 정보는 지우라는 명령어

누적 전송을 위해서는 delete 는 빼준다


exclude 는 전송 을 제외하고자 하는 폴더 또는 파일이다.



SSH 를 통해 전송하고자 하는 경우


$ rsync -avz --progress --delete --exclude 'file_backup.sh' /home/Service/source/ 127.0.0.1:/home/Service/backup

과 같이 맨 뒷부분을 수정해 준다.


끝.


혹시나 open failed : permission denied 과 같은 에러가 발생하면

selinux 쪽을 확인해 보자.


윈도우용으로도 cwrsync 라는 프로그램도 있으나, 현재 해당 프로그램이 유료화 된 상태인지라...

저작권이 두려워 차마 업로드는 못하고.......관심있으신 분은 댓글로 달아주세요

+ Recent posts