예전에 ( http://forcecore.tistory.com/1127 아~~ 주 오래전에) rdiff-backup에 대해 소개한 적은 있지만 예제가 없어서 무용지물에 가까울 것이다. 스크립트를 제시하고 실전 예제를 보여주겠다?
스크립트
/root/script/cron/backup.sh :
#!/bin/bash
# have archived backup... :S
function backup
{
src=$1
dest=$2
RDIFF_BACKUP='/usr/bin/rdiff-backup'
$RDIFF_BACKUP \
--exclude $src/.snapshots \
$src $dest
$RDIFF_BACKUP \
--remove-older-than 2W \
--force $dest 2>&1
}
echo "Starting backup"
date
backup /etc /export/backup/etc
backup /root /export/backup/root
backup /home /export/backup/home
echo "Done backup"
date
요렇다.
/etc, /root, /home 정도는 백업을 해주는게 좋다, 전체 시스템을 백업하진 않아도.
/etc : 제어판 설정을 복사해두는 느낌으로 백업해둔다. 그러면 시스템을 새로 설치 해도, 에전에 썼던 좋은 세팅을 가져다 쓰기 좋다.
/root : 관리자 성형마다 다르겠지만, 시스템에 설치한 커스텀 패키지나, crontab 에 관리자 권한으로 실행하는 스크립트들을 나는 여기에 두는 편이다.
(위의 rdiff backup 스크립트만 해도 /root/script/cron/backup.sh 로 저장해두고, sudo crontab -e 로 root의 crontab에 작업을 걸어두는 편이다.)
/home : 당연히 백업해야 하는데... 필자는 snapper를 쓰기 때문에 (http://forcecore.tistory.com/1323) /home/.snapshots 디렉토리가 생긴다는 것이다. rdiff-backup이 스냅샷까지 복사하려고 들기 때문에 (그러면 실제 하드 용량의 10배? 100배?는 먹게 된다) 문제가 발생하는데 이를 위의 --exclude $src/.snapshots parameter 등록으로 막아준다.
위 스크립트는 한 컴퓨터 안에서 다른 디스크로 백업을 시키는 것이다. 물론 디렉토리 대신에 다른 서버의 디렉토리를 입력해주면 다른 서버로 백업이 이루어지게 될 것이다. 이렇게 한 경우 타 서버에 ssh로 자동로그인을 할 수 있어야 한다. ssh-copy-id 명령어를 쓰면 매우 간단히 할 수 있다:
http://marobiana.tistory.com/53
아래에 --remove-older-than 2W는 보면 감이 오겠지만, 2주 이상 된 내역은 없앤단 말이다.
스크립트 실행되게 하기
root로서 (sudo crontab -e 를 써도 된다)
# crontab -e
로 크론으로 작업을 걸자. 물론 /etc/cron.daily 에다가 걸어도 되는데 취향대로...
0 4 * * * /root/script/cron/backup.sh
새벽 4시에 실행되게 했다. 아무리 밤샘 작업을 하는 중이라도 보통은, 보통은... 4시 전에는 피곤해서 잘 것이다 -_-;; 그래서 새벽 4시로 시간을 정했다.
주의사항
스크립트를 만들고 나서 한 번은 수동으로 스크립트를 실행해서 문제가 있나 없나 체크하는게 좋다.
그리고 또 일주일 뒤 쯤에 백업이 성공적으로 되었는지 백업이 있는 곳에 들어가서 체크해보자. 그 어떠한 백업 프로그램을 써도 이 것은 적용된다.
그리고 가끔 생각날 때 백업이 되고 있나 체크해보자. 가끔씩 별 이유 없이 백업이 안 되는 경우가 있다 으아아아아 (그래서 백업이 필요한 때 없더라)
살리기
서버를 운영하다보면 꼭, 사용자들이 "나 파일 날려먹었어요, 어젠 있었는데" 라고 찾아온다. 그럴 땐 우쭐대면서 파일을 살려주자.
1. 스크립트가 실행된 후 24시간 내에 있었던 변화는 그냥 백업 폴더에 파일로서 있다. cp로 복사하면 그만이다.
2. rdiff-backup -r 3D /export/backup/home/[살려내고싶은파일/디렉토리] [살려낸것의 새 이름]
이런 식으로 살리게 된다. 실전에서 해봤더니 잘 된다. (후 이것도 실전으로 해봤다니)