'리눅스 백업'에 해당되는 글 1건

  1. 2013.02.12 tar를 이용한 백업
Linux 2013. 2. 12. 10:49

[ 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은 월요일...)로 
나타낸다. 

시간대를 잘 조정하여 사용하면 된다.<끝>

//