Linux
tar를 이용한 백업
스티브김스
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은 월요일...)로 나타낸다. 시간대를 잘 조정하여 사용하면 된다.<끝>