- 데이터가 있는곳은 ssh 서버 및 rsync 설치.
- 데이터를 백업할 곳은 ssh 클라이언트 및 rsync 설치.
- rsyn가 설치되어 있고, ssh 클라이언트가 설치되어 있으면,
원격백업 가능함.
- 호스트1은 백업할서버, 호스트 2는 데이터 서버 라고 가정할 경우.
rsync -avPz --delete --stats -l -t -e ssh root@호스트2의 서버 아피:/백업할 디렉토리/ /데이터를 저장할 호스트2 서버의 디렉토리.

예제) 호스트1의 home디렉토리 전체를 호스트2의 backup 디렉토리로
백업을 할 경우. (호스트2에서 호스트1의 ssh서버를 접근해야 함)

rsync -avPz --delete --stats -l -t -e ssh root@호스트1의아피:/home/ /backup
- 저렇게 할 경우 압축을 하고, 퍼미션 및 소유권은 그대로 유지하며, 심벌릭 링크는 심벌릭 링크 그대로 백업하고, 전송 속도 및 시간을 출력해주고, 마지막에 전송된 상태를 출력 해줌.
--delete는 옵션은 원본에는 없지만 그 전에 받은 백업본에 있을 경우 삭제해줌.
그래서, 원본과 항상 똑같이 백업이 되도록 함.

주의사항)
백업 할 곳의 디렉토리를 적을땐,
항상 /home/ 식으로 끝에 슬래쉬를 적어 줘야 함.
만약 /home이라고 할 경우 디렉토리 생성만 되고, 그 안에 있는 데이터는
백업이 되지 않음.

그리고, 위의 같이 명령어를 입력할 경우 그냥 ssh접속할때 처럼
루트의 비밀번호를 물어봄.
루트의 비번을 입력해주면, 바로 백업을 해준다.
루트의 비번을 입력하기가 귀찮을 경우는
두가지 방법이 있음.
첫번째는 인증키를 생성해서 해당 서버에 저장하면,
비밀번호를 물어보지 않음.
인증키 생성하는 방법은
ssh-keygen -d
이라고 할 경우
~/.ssh/id_dsa.pub 라는 파일이 생성됨.
이걸 원본 데이터가 있는 서버에 저장해줌.
방법은
scp -p .ssh/id_dsa.pub root@호스트명:~/.ssh/authorized_keys2
라고 하면 됨.

두번째 방법은 스크립트로 돌리는 방법이 있음.
#!/usr/bin/expect -f
log_user 0
spawn rsync -avPz --delete --stats -l -t -e ssh root@호스트1의 아피:/home /backup
expect "password: "
send "루트의 비번\n"
log_user 1
interact

저렇게 할경우 루트의 비번을 입력하지 않아도 루트의 비번을 전송해줌.

이상 rsync+ssh에 의한 미러 백업에 대한 방법론이었습니다...^^
2010/08/01 23:42 2010/08/01 23:42

Trackback Address :: https://youngsam.net/trackback/1290