서버 운영 관리 [ Tip ]

rsync 사용

 

rsync 는 리눅스 시스템에서 가장 많이 사용하는 백업 및 동기화 명령어입니다.

리눅스 cp 명령어는 중복파일 체크시 건너뛰거나 덮어씌우기가 전부이지만 rsync 는 속성 그대로 복사, 파일 변경 여부, 삭제 여부 등을 체크 할 수 있어서

사용자의 입맛에 맞게 데이터 백업을 할 수 있는 리눅스 사용자들이 많이 사용하는 백업 명령어 중에 하나입니다.

 

특징

마스터 (원본데이터) --> 슬레이브 (백업) 개념으로 데이터를 복사 및 동기화 하기 위한 프로그램입니다.

scp 명령어와 다르게 복사하다가 네트워크가 끊어지더라도 파일을 체크하여 복사가 안된것만 알아서 복사할 수도 있습니다.

∗ rsync 명령어를 잘못 사용하는 경우 원본데이터가 삭제 될 수 있으니 동기화 작업전에 꼭 백업을 진행한뒤 동기화를 진행하도록 합니다.

 

주의할점

1. 명령을 거꾸로 실행하여 슬레이브의 데이터가 마스터의 원본데이터를 덮어씌우는 일이 없도록 주의합니다.

2. --delete 옵션 사용시 마스터 서버의 원본데이터가 삭제되는경우 슬레이브도 동일하게 삭제를 시키기 때문에 옵션 사용에 주의를 합니다.

3. 실시간 동기화가 되는것이 아니므로 실시간 동기화를 원한다면 스케줄러 (cron) 에 등록하여 일정시간 (최소 1분) 반복적으로 실행되게 해야합니다.

4. "3번 항목" 사용시 마스터 -> 슬레이브 로의 데이터 전송이므로 자료 업데이트는 무조건 마스터 원본데이터쪽에서만 갱신을 해줘야 합니다.

 

 

rsync 설치 및 설정


 

설치

$ yum install rsync

 

확인 (rsync 설치가 되어 있어야 합니다)

$ rpm -qa |grep rsync

rsync-3.0.6-12.el6.x86_64

 

 

마스터 서버 (원본데이터) 설정


리눅스에서는 xinetd 라는 슈퍼데몬이라고 불리는 데몬이 있는데 설정파일을 열어서 rsync 부분을 활성화 합니다.

 

# /etc/xinetd.d/rsync 수정

disable = yes → disable = no

 

# /etc/rsyncd.conf (파일생성)

[home] ; 백업서비스 이름

path = /home ; 백업할 자료가 있는 경로

comment = HomeBackup ; 코멘트

uid = root ; 파일을 전송하는 사용자 ID, 디폴트 nobody

gid = root ; 파일을 전송하는 사용자 그룹 id, 디폴트 nobody

use chroot = yes ; path 를 root 디렉토리로 사용, 보안상 필요

read only = yes ; 읽기전용

hosts allow = IP ; 호스트별 접속 허용, 디폴트는 all host

max connections = 1 ; 동시접속자수

timeout 600 ; 클라이언트 접근시 타임아웃시간, anoymous 운영시 설정이 되어 있어야 클라이언트가 죽었을때 접속해제 가능

∗ rsync 설정을 home 이라는 이름으로 해둔걸 기억합니다. 

 

슈퍼데몬 재시작

$ /etc/init.d/xinetd restart

 

이것까지 진행했다면 원본쪽 마스터서버에서 설정은 끝이 났습니다.

 

 

슬레이브 서버 (복사받는쪽) 설정


 

슬레이브 (복사받을 서버) 에서는 아래와 같은 명령어로 데이터를 복사 해올 수 있습니다. 

$ mkdir /home/test 복사 받을 경로의 디렉토리 생성

$ rsync -avzPog 마스터서버아이피::rsync이름 /home/test/

∗ 스케줄러 cron 에 등록하여 주기적으로 백업 받을 수도 있습니다.

  

cron 에 rsync 백업 받아오기 간단 설정 (슬레이브 설정)

$ cd /etc/cron.hourly/

$ vi rsync.sh

$ chmod 700 rsync.sh

$ /etc/init.d/crond restart

 

rsync.sh 내용

#!/bin/bash

rsync -avzPog 마스터서버아이피::rsync이름 /home/test/

 

위와 같이 설정하면 1시간에 1번씩 백업을 받아온다. 백업주기에 맞게 hourly, daily, weekly, monthly 선택해서 생성하면 됩니다.

 

 

NOTE

rsync 는 TCP 873번 포트 또는 TCP 22번 포트를 이용합니다. (방화벽 및 ELCAP 에서 필터링 해제 필요)

"::" 는 TCP 873포트로 사용합니다. ex) 123.123.123.123::homebackup 

":"는 TCP 22포트를 사용합니다. ex) 123.123.123.123:/home/iwinv

 

한 번 데이터 복사나 백업인 경우는 그냥 cp 명령어나 scp 가 편하지만 일정한 주기로 계속 백업을 하여 동기화 하고자 한다면 rsync 를 사용하는것이 좋은 선택입니다.

 

 

관련링크