본문 바로가기

Linux

SH키를 이용한 RSYNC 백업법

320x100
A 서버 : 백업대상 서버 (원본서버) A서버계정:suhan
B 서버 : 백업진행 서버 (백업서버) B서버계정:inkaftp

시나리오: B 서버는 A 서버의 특정 계정으로 자동로그인 하여 A 의 내용을 B로 Rsync 한다.
======================================================================================

1> 키생성
B 서버에서 키를 생성해보도록 하겠다. 
키는 생성하는 위치가 중요한것이 아니라 개인키를 가진쪽이 공개키를 가진쪽으로 접속한다.

[inkaftp@edutotal ~]$ 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 same passphrase again: 
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 inkaftp@edutotal.com

RSA 방식으로 키를 만들었으며 , 패스워드는 넣지 않았다.

.pub 파일이 공개키이며 이파일은 접속을 당할 서버 즉 A서버의 접속할 계정에 심어야 된다.


2> 공개키를 전송한다.
#scp /home/inkaftp/.ssh/id_rsa.pub suhan@A서버아이피:~/.ssh/authorized_keys 
(키가여러개일때는 뒤에 숫자를 붙인다 keys2...)
.ssh 디렉이 없으면 먼저 만들어두도록 한다

패스워드 묻어볼것이다... 중략...


3> B서버에서 A 서버로 접속테스트 해본다.
# ssh -i /home/inkaftp/.ssh/id_rsa suhan@A서버아이피
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 

정상접속이 된다면 성공이다.


4> RSYNC 에 걸어보자

서버가 여러개일 경우 관리를 위해 개인키 id_rsa 파일을 알아보기 쉽게 계정과 서버아이피로 이름을바꾼후에 -i 옵션으로 로딩한다. 
# mv /home/inkaftp/.ssh/id_rsa /home/inkaftp/.ssh/suhan_AServer

#rsync -avzrt --delete -e \"ssh -i /home/inkaftp/.ssh/suhan_AServer\" suhan@A서버아이피:/home/suhan/www /home/inkaftp/backup
#rsync -avzrt --delete --rsh=\"ssh -i /home/inkaftp/.ssh/suhan_AServer -l suhan\" A서버아이피:/home/suhan/www /home/inkaftp/backup

위의 2개 모두 정상 동작할것이다.


5> B서버의 inkaftp Cron 에 등록한다.
[inkaftp#B서버]$ vi /home/inkaftp/rsync_cron_exe.sh
#!/bin/bash
rsync -avzrt --delete -e \"ssh -i /home/inkaftp/.ssh/suhan_AServer\" suhan@A서버아이피:/home/suhan/www /home/inkaftp/backup
만든 파일에 실행권한을 준다.

[inkaftp#B서버]$ crontab -e
30 4 * * * /home/inkaftp/rsync_cron_exe.sh | mail -s [백업알리미] 내멜주소 <=결과를 메일로 보내준다.


PS. 서버내에 공간이충분하고 파티션이나 드라이버가나눠져 있다면 매일 매일 내부백업을 해두는것도 도움이 될것이다.
vi /etc/cron.daily/rsync_exe.sh
#!/bin/bash
rsync -avzrt --delete /home/mainweb/www /home1


만약 보안상의 이유로 키에 패스워드를 걸경우는 expect 를 사용하면 자동화가 가능하다
320x100

'Linux' 카테고리의 다른 글

NIS 서비스 구축하기 - Centos -  (0) 2010.11.26
NIS 관련  (0) 2010.11.25
MYSQL 초기 구축  (0) 2010.11.23
NIS 서버 및 클라이언트의 설정 및 관리  (1) 2010.11.22
MySQL 에러  (5) 2010.11.22