Linux

Linux 팁 - rsync 를 이용하여 소중한 데이터를 백업하자.

starblood 2011. 10. 25. 10:51
데이터 백업은 아무리 강조해도 지나치지 않는다. 본인은 하드디스크의 신뢰성이 얼마나 좋은 지 잘 모른다.
하지만 하드디스크는 보통 2년 이내에 고장이 나는 것 같다.
그래서 제일 안전한 백업 방법은 데이터를 DVD 같은 read only 매체에 저장 하는 것이라고 생각한다.

하지만 하드디스크 만큼 편리한 저장매체는 없을 것이다.
그래서 이번에 나의 소중한 데이터를 rsync 를 이용하여 백업을 하게 되었다.

rsync 는 안전하게 데이터를 동기화 하는 방법을 제공하는데, 나는 백업할 데이터가 있는 PC 를 나의 Notebook, 백업한 데이터를 저장할 곳을 백업 서버(Ubuntu Linux Server)를 구성하여 데이터를 백업하였다.

백업을 하기위한 절차는 크게 두 단계로 나눌 수 있다.
첫 째, 백업명령을 순차적으로 실행할 shell script 작성
둘 째, 백업을 주기적으로 실행하도록 crond 설정

1. 백업 명령을 실행할 shell script 작성
backup.sh
 #!/bin/bash
 # Backup eclipse projects
 rsync -a -e ssh --delete /Users/starblood/project/eclipse/ starblood@192.168.20.92:/home/starblood/backup/eclipse/
 
위의  backup.sh 는  rsync 를 이용하여 archive mode 로 ssh remote shell 을 통하여 백업을 하되, /Users/starblood/project/eclipse/ 디렉토리(source) 아래에 있는 모든 데이터들을 192.168.20.92 Server 의 ~/home/starblood/backup/eclipse/(destination) 디렉토리 아래에 복사를 한다. 이 때 백업할 source 에 없는 디렉토리가 있으면 destination 디렉토리에서도 삭제를 수행하게 된다.

2. 백업을 주기적으로 실행하도록 crond 설정
crontab 명령어를 이용하여 crond 의 설정을 한다. 이때 -e (edit option) 옵션을 준다.
$ crontab -e 
 # Run backup script every Mon,Tue,Wed,Thu,Fri, 9:30 AM
 # m h  dom mon dow   command
 30 9 * * 1,2,3,4,5 /Users/starblood/script/backup.sh > /dev/null 2>&1  

여기서 > /dev/null 2>&1 은 standard out 과 standard error 를 모두 /dev/null (블랙홀) 로 보내서 무시하겠다는 의미이다.

여기까지 작업을 해 놓으면, 나의 Notebook 은 평일(월,화,수,목,금) 오전 9시 30분마다 백업을 수행한다.
여기서 ssh login 할때, 패스워드를 물어보지 않고 접속을 허용하게 설정을 해 놓아야 하는데, 이는 아래 사이트에서 자세하게 소개했으니 참고하도록 한다.

ssh 로그인시 패스워드 물어보지 않고 로그인 하기
http://www.linuxhorizon.ro/ssh-wo-passw.html


본인이 백업을 하기위해서 참고한 사이트 정보
http://www.mikerubel.org/computers/rsync_snapshots/