rsync를 이용한 원격백업

준비물: rsync를 이용할 수 있는 유닉스 박스 두대(box1, box2라 임의로 명하겠음)

참고사이트: http://troy.jdmz.net/rsync/index.html

먼저 box1의 화일을 box2에서 카피하고자 한다면, 다음과 같은 명령을 내려서 테스트 해 보자.

$ rsync -avz -e ssh user@box1:/home/user /home/

rsync가 정상적으로 작동한다면

Warning: the RSA host key for ‘box1’ differs from the key for the IP address ‘xxx.xxx.xxx.xxx’
Offending key for IP in /user/.ssh/known_hosts:1
Matching host key in /user/.ssh/known_hosts:5
Are you sure you want to continue connecting (yes/no)?

요런 메시지를 볼 수 있으며, 비밀번호를 제대로 입력했다면 화일들이 복사되는 모습을 볼 수 있을 것이다.

다음은 자동화를 위한 과정이다. 자동화를 위해서는 비밀번호 부분을 해결해야 한다. 자동화과정중에 비밀번호를 일일이 입력할 수는 없으니까.

box2에서

# ssh-keygen -t dsa

로 키를 생성한다. public key와 public key는 디폴트로 .ssh 디렉토리 아래에 생성되며 각각 id_dsa, id_dsa.pub 이다.

생성된 공개키(id_dsa.pub)를 box1으로 전송한다.

# scp /root/.ssh/id_dsa.pub root@box1:/root/

box1에서는 다음과 같은 작업을 한다.

# mv id_dsa.pub .ssh/

# touch authorized_keys (root/.ssh/에 화일이 없을때. 있으면 생략)
# chmod 600 authorized_keys
# cat id_dsa.pub >> authorized_keys

접속을 확인해서 비밀번호를 묻는지 확인한다. 여기서는 키 생성시 비밀번호를 입력하지 않았기때문에 바로 접속이 되어야 한다.

자, 이제 비밀번호 없이 rsync를 사용할 수 있는지 테스트를 해 보자.

#rsync -avz -e ssh root@box1:/home/source /home/target/

아무 문제가 없다면 target디렉토리 아래에 source디렉토리가 생성되어 화일들이 전송된 것을 볼 수 있다.

이제 이것을 자동화하여 cron에 등록하면 정해진 시간에 백업을 받을 수 있다.

스크립트내용 ====================================

#!/bin/sh
RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
KEY=/root/.ssh/id_dsa
RUSER=root
RHOST=box1
RPATH=/home
LPATH=/home/backup/

#$RSYNC -az -e “$SSH -i $KEY” $RUSER@$RHOST:$RPATH $LPATH
$RSYNC -az -e $SSH $RUSER@$RHOST:$RPATH $LPATH

end of 스크립트 =========================================

위의 스크립트를 적당한곳에 생성한 후 crontab -e 명령을주고

0 4 * * * /[above script]

를 등록

그러면 매일 4시에 스크립트가 자동으로 실행되며 백업을 실시할 것이다.

답글 남기기

Your email address will not be published.