[ tar를 이용한 백업 (3) ]
O 백업 시나리오
여러분이 서버 관리자라고 하자. 그러면 백업은 서버 관리자로서 필수
사항이다. 제일 처음에 완전백업(full backup)을 받는다. 시스템의 모든
파일을 백업받는다는 말이다. 다음처럼.
$ tar -c -v -M -f /dev/st0 /
완전백업본을 만약에 대비해서 2개 정도 만들어 둬도 좋다. 그리고
정기적으로 완전백업본을 받아 두는 것도 좋을 것이다.
완전백업을 받았으면, 월별 백업, 주별 백업, 일별 백업을 받는다. 각각
지난달 1일 이후, 지난 주 월요일, 어제 이후로 바뀐 파일들을 백업 받는
것이다.
월별로 백업 받기 위해서 부분 백업 스크립트를 하나 작성하자. 매달
1일에 돌리는 것으로 한다. 파일명은 month_back.sh로 하자.
#!/bin/bash
NOW=`date +"%d %b %Y"`
THEN=`cat /.last_month`
tar -c -v -M -G -f /dev/st0 -V "Backup monthly from \"$THEN\" to
\"$NOW\"" \
-N "$THEN" /
echo $NOW > /.last_month
주별로 백업 받기 위해서 부분 백업 스크립트를 작성하면 다음과 같다.
월별 백업과 거의 같다. 매주 월요일날 돌리는 것으로 한다. 파일명은
week_back.sh로 하자.
#!/bin/bash
NOW=`date +"%d %b %Y"`
THEN=`cat /.last_week`
tar -c -v -M -G -f /dev/st0 -V "Backup monthly from \"$THEN\" to
\"$NOW\"" \
-N "$THEN" /
echo $NOW > /.last_week
하루 하루 부분 백업 받기 위해서는 다음과 같다. 파일명은 day_back.sh로
한다.
#!/bin/bash
NOW=`date +"%d %b %Y"`
THEN=`cat /.last_day`
tar -c -v -M -G -f /dev/st0 -V "Backup monthly from \"$THEN\" to
\"$NOW\"" \
-N "$THEN" /
echo $NOW > /.last_day
스크립트는 거의 같다. 중요한 것은 각각의 스크립트를 주기적으로 한달에
한번, 한 주에 한 번, 하루에 한번 실행시키면 된다. 정기적으로 무언가를
하기 위해 우리는 cron 유틸리티를 활용하면 된다.
다음처럼 해서 간단히 cron에 작업을 등록할 수 있다.
# chown root.root month_back.sh week_back.sh day_back.sh
# chown u+x month_back.sh week_back.sh day_back.sh
# cp month_back.sh /etc/cron.monthly
# cp week_back.sh /etc/cron.weekly
# cp day_back.sh /etc/cron.daily
위와 같이 하면 한달에 한번 /etc/cron.monthly의 month_back.sh을
실행한다.
week_back.sh과 day_back.sh은 한주에 한번, 하루에 한번 crond에 의해
실행된다.
하루에 한번 실행될 때 몇시 몇분에 실행될 것인가를 정해주기 위해
/etc/crontab을 편집하면 된다.
[cornerstone@sylee:/etc/cron.daily] cat /etc/crontab
1 SHELL=/bin/bash
2 PATH=/sbin:/bin:/usr/sbin:/usr/bin
3 MAILTO=root
4 HOME=/
5
6 # run-parts
7 01 * * * * root run-parts /etc/cron.hourly
8 00 1 * * * root run-parts /etc/cron.daily
9 00 3 * * 0 root run-parts /etc/cron.weekly
10 00 5 1 * * root run-parts /etc/cron.monthly
위의 파일에서 7행에서 10행까지를 알아보자. 작업을 적어주는 양식은
<분> <시> <일> <월> <요일> <실행할명령어>
이다. 7행은 매시간 실행할 작업을 /etc/cron.hourly라는 디렉토리에서
찾아서 실행하라는 것이다. 매시 1분에 실행된다. 8행은 매일 새벽 1시에
/etc/cron.daily라는 디렉토리내의 스크립트를 실행하라는 것이다. 9행인
경우에는 매월, 매일 새벽 3시에 무엇을 할 것 같지만 5번째 필드인
<요일>필드의 값이 0 이므로 1주일에 한번 일요일에 /etc/cron.weekly
디렉토리내의 스크립트를 실행하라는 것이며, 시간은 새벽 3시이다. 10행은
독자의 해석에 맡기겠다.
참고로 <분>은 0-59, <시>는 0-23, <날짜>는 0-31, <달>은
0-12(0또는
12는 12월, 1은 1월...), <요일>은 0-7(0과 7은 일요일, 1은 월요일...)로
나타낸다.
시간대를 잘 조정하여 사용하면 된다.<끝>