rsync 에는 ssh 를 이용하여 원격서버에 접속하여 동기화를 하는 기능이 있습니다.

대략의 내용은 아래와 같습니다.
rsync -azrtv --delete --stats -e "ssh -i /root/.ssh/개인키" 원본서버계정@원본서버주소:원본경로/ /백업경로/

그럼. 자세히...

일단 접속하기 위한 원격주소의 계정 정보가 필요합니다.
즉 ssh 로 원격서버로 로그인을 하는것입니다.
하지만 crontab을 이용하여 자동으로 스케쥴링을 하려면은 암호를 입력하는 단계가 걸림돌이죠
바로 자동로그인을 해야된다는 의미입니다.

그러기위해서는 ssh 키를 이용하는데
먼저 키를 생성합니다. 주의 할점은 개인키를 가진쪽이 공개키를 가진쪽으로 접속한다는 것입니다.
즉... 접속대상서버가 아니라 접속을 시도하는 백업서버에서 키를 만든다는 것입니다.
[~]$ ssh-keygen -d -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/inkaftp/.ssh/id_rsa):
Created directory '/home/inkaftp/.ssh'.
Enter passphrase (empty for no passphrase): <ENTER>
Enter same passphrase again: <ENTER>
Your identification has been saved in /home/inkaftp/.ssh/id_rsa.
Your public key has been saved in /home/inkaftp/.ssh/id_rsa.pub.
The key fingerprint is:
11:ce:7a:2d:60:0d:09:b3:2a:8b:3f:de:9a:8f:96:20 root@nhn.com

아무것도 입력하지않고 엔터만 두번누르면 RSA 방식의 키가 생성됩니다.

.ssh/id_rsa
.ssh/id_rsa.pub

위와 같은 파일이 생성된것을 발견할 수 있습니다.

그다음으로는 공개키를 전송합니다.
#scp /root/.ssh/id_rsa.pub 원본서버계정@원본서버아이피:~/.ssh/authorized_keys
원본서버계정에 .ssh 디렉토리가 없으면 미리 만들어둬야합니다.
패스워드를 입력하면 끝

(하지만 전 scp 가 잘되지 않아서 그냥...ftp 로 전송했습니다.)

그럼 접속이 잘되는지 확인해봅시다.
#ssh -i /root/.ssh/id_rsa 원본서버계정@원본서버아이피
RSA key fingerprint is 03:c0:4d:25:a6:5d:0c:41:70:a7:11:0e:f7:12:ee:c8.
Are you sure you want to continue connecting (yes/no)? yes <ENTER>
접속이 잘된다면 성공

이제 본격적으로 rsync를 사용해봅시다.
rsync -azrtv --delete --stats -e "ssh -i /root/.ssh/id_rsa" 원본서버계정@원본서버주소:원본경로/ /백업경로/

-a : 심볼릭 링크, 속성, 퍼미션, 소유권 등 보존
-v : 자세한 정보출력
-z : 전송시 압축
-r : 하위디렉토리포함
-e ssh : ssh를 이용한 rsync 동기화
--delete : 서버동기화후 원본에서 파일이 삭제되면 백업에서도 파일을 삭제
--stats : 결과출력

백업이 잘되면 자동화를 위하여 cron에 등록합니다.
먼저 rsync 명령을 실행할 .sh 파일을 만듭니다.
# vi ./rsync_cron.sh
rsync -azrtv --delete --stats -e "ssh -i /root/.ssh/id_rsa" 원본서버계정@원본서버주소:원본경로/ /백업경로/

파일을 만들고나서는 실행권한을 줍니다.
#chmod 755 ./rsync_cron.sh

crontab 을 실행합니다.
#crontab -e
30 4 * * * /root/rsync_cron.sh

참조
http://blog.naver.com/forioso?Redirect=Log&logNo=10025992292
Posted by 빨강토끼
TAG , ,