1. rsync |
rsync 는 원격에서 미러링 서버를 구축할때 사용되는 유틸이다.
옵션에 따라 파일의 수정 날짜를 비교해서 수정된 파일만 업데이트 할 수 있기 때문에 처음 한 번만 풀 백업 해두면 그 다음 부턴 아주 빠른 속도로 업데이트 할 수 있다.
2. 백업 계획 |
백업 계획은 서버들로부터 새벽 4시경에 1차 백업서버로 매일 백업을 받고, 1주 단위로 1차 백업 서버의 데이터를 일요일 새벽 5시에 2차 백업 서버로 전송받는다.
3. rsync 확인 |
백업 대상이 되는 서버들에 rsync 가 설치되어 있는지 확인해보고 없으면 rpm 바이너리를 받아서 설치한다.
#rpm -qa rsync
rsync-2.6.3-1
rsync 는 ssh 를 이용한 방법과 873포트를 이용한 접속 방법이 있다.
#grep rsync /etc/services
여기서는 873 포트를 이용해서 xinetd 데몬으로 동작하도록 설정한다.
초기에는 default 로 xinetd 에서 rsync 가 disable 로 설정되어있으므로 아래와 같이 열어준다.
#vi /etc/xinetd.d/rsync
service rsync
{
disable = no => (disable 부분을 no 로 설정해야 활성화 됨)
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
또는
#chkconfig rsync on
xinetd의 재시작
#/etc/init.d/xinetd restart
4. 백업 대상 시스템 설정 |
rsync 의 설정파일은 /etc/rsyncd.conf 인데 rsync 설치후에도 존재하지 않는다.
백업할 대상은 /home 파티션과 대부분의 설정이 들어있는 /etc 전체로 했다.
#vi /etc/rsyncd.conf
[home] =>rsync 에서 사용할 alias name
path = /home =>실제 디렉토리 절대 경로
comment = home directory
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = ***.***.***.*** =>접근을 허용할 백업 서버 ip
max connections = 1
timeout = 300
[etc]
path = /etc
comment = config-dir
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = ***.***.***.***
max connections = 1
timeout = 300
이렇게 해서 저장하면 설정은 끝났다.
슈퍼 데몬을 재시작하고
#/etc/rc.d/init.d/xinetd restart
포트가 열려있는지 netstat 이나 telnet 명령으로 873포트를 확인해본다.
#telnet localhost 873
Trying 127.0.0.1...
Connected to localhost.
Escape character is `^]`.
]#netstat -na | grep LISTEN
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN
873 포트가 보인다면 설정은 OK
이제 백업 대상 서버들의 설정은 끝났고, 1차 백업 서버를 세팅할 차례다.
5. 백업 서버의 설정 |
백업할 서버 역시 rsync가 설치 되어있는지 확인해보고 없으면 설치한다.
1차 백업 서버에 접속한 상태로 아까 세팅해 놓은 백업 당할 서버에 rsync
포트로 접속이 가능한지 테스트 해본다.
]#telnet ***.***.***.*** 873
Trying 127.0.0.1...
Connected to ***.***.***.***.
Escape character is `^]`.
이렇게 대기 상태면 OK
만약 connect refuse 가 나오면 백업당할 서버의 세팅을 처음부터 다시 살펴본다.
이제 백업 과정을 기록할 로그 파일을 수동으로 만들 것 이다.
적당한 디렉토리( 예를 들면 /data/rsync-log)를 생성하고 파일을 기록할 수 있도록 권한을 조정한다.
cron 에 등록해서 하루에 1번 새벽 4시에 백업하기로 했으므로 우선
/etc/crontab 을 수정한다.
#vi /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
01 4 * * * root run-parts /etc/cron.daily
00 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
/etc/cron.daily 디렉토리에 있는 놈들을 매일 새벽 4시1분에 실행 하도록 되었다.
이제 /etc/cron.daily 에 백업 스크립트만 생성하면 된다.
#vi backup.sh
#!/bin/sh
startbackup=`date +%Y%m%d%H%M%S`
touch /data/rsync-log/159.backup.log
echo $startbackup.start >> /data/rsync-log/159.backup.log
rsync -avz 192.168.179.169::home_directory /data/169/home/
rsync -avz 192.168.179.169::etc /data/169/etc/
endbackup=`date +%Y%m%d%H%M%S`
echo $endbackup.end >> /data/rsync-log/159.backup.log
위의 설정은 백업을 시작할때 날짜를 이름으로 가지는 빈파일 /data/rsync-log/159.backup.log를 생성하고 백업이 끝난후에 다시 같은 위치에 시간이 기록된 파일을 생성시켜서 나중에 백업에 걸린 시간을 비교할 수 있게 되어 있다.
-a는 아카이브 모드. 심볼릭 링크, 속성, 퍼미션, 소유권 등 보존
-v 전송 상태를 보여줌
-z 전송시 압축을 함.
특정 시간 백업의 설정
crontab의 설정이 아닌 특정 시간(매주 일요일 2시 20분)에 백업을 원할 경우 앞서 만든 backup.sh 파일을 /etc에 넣고
/etc/cron.d 디렉토리에 backup 파일을 아래와 같이 생성한다.
#vi backup
20 2 * * 0 root /etc/backup
6. 2차 백업 서버 설정 |
2차 백업 서버를 세팅은 1차 백업서버의 /data 디렉토리를 2차 서버에 백업하는 방법으로 위 방법을 참고로 구성할 수 있다.