System Admin

본문 바로가기
사이트 내 전체검색


RedHat Linux >> System Administration for Redhat Linux
[목차]
제2장 쉘 프로그래밍

    14. 자동 백업(cron/crontab 이용)


쉘프로그램과 cron명령을 이용하면 반복되는 작업을 자동으로 해줄 수 있습니다. 예로서 중요한 데이터를 자동으로 매일 백업을 받게 해주고 백업 받은 결과를 메일로 보내주는 쉘 프로그램을 한번 만들어보도록 하겠습니다.

가. crontab 명령

자동으로 무슨일을 하게 하려면 먼저 cron 명령에 대해서 알아야 합니다.

crontab -l 하면 현재 cron 파일의 내용이 보입니다.

[root@w3 profile.d]# crontab -l
no crontab for root

[root@w3 profile.d]#

 

또 crontab -e 하면 vi 에디터가 떠서 cron 파일의 내용을 수정할 수 있습니다.

cron 파일은 /var/spool/cron밑에 계정이름과 동일한 이름으로 되어 있습니다. 기본적으로 root는 cron 파일이 동작 가능합니다. 하지만 개인 계정으로 cron을 동작시키려면, root권한으로 /etc/cron.allow에 등록해 주어야 합니다.

 

나. cron 파일의 형식

cron파일의 형식은 다음과 같습니다.

분    시    일    월     요일  실행할 명령

여기서 요일은 0-7입니다. 0또는 7이 일요일이고, 1,2,3,4,5,6 순으로 월화수목금토입니다.

각필드는 여러개의 값을 동시에 가질 수 있습니다.

분 필드에 0,15,30,45라고 콤마로 연결해 놓으면 '0분, 15분, 30분, 45분'에 동작하라는 의미입니다. 요일 필드에 1-5라고 한다면, 월요일부터 금요일까지의 의미입니다.

*를 사용하면 '모든, 매'라는 의미입니다. 날짜에 *라고 하면 매일 의미이고, 월에 *라고 입력하면, 모든 달에 해당됩니다.

구체적인 예를 들어보면,

0 1 * * *  mail jklee@leelab.co.kr < /tmp/message.txt

라고 하면 매일 새벽 1시 0분에 /tmp/message.txt라는 파일의 내용을 해당 주소로 메일을 보내게 됩니다.

 

다. 백업

백업은 보통 tar와 gzip을 이용합니다.

tar 명령에 z옵션을 첨가하면, 파일을 묶고 압축까지 한번에 해줍니다.

# cd /

# tar cvfz home.tgz /home

라고 하면, /home/디렉토리 밑에 있는 모든 파일(계정)을 home.tgz로 현재 디렉토리에 압축해 줍니다.

파일을 풀려면, 반대로 하면 됩니다.

# tar xvfz home.tgz

현재디렉토리에 풀리며, 속성이 보전됩니다.

 

라. 자동 백업

위의 작업을 월수금토 새벽 4시30분마다 한다면,

# crontab -e

30 4 * * 1,3,5,6 tar czvf /home.tgz /home

이라고 해주면 됩니다.

 

이번에는 백업 내용과 백업이 되었다는 메시지를 메일로 자동으로 보내도록 하는 간단한 쉘 프로그램을 만들어 봅시다.

# cd /
# vi backup_mail

#!/bin/sh
cd /
tar czvf home.tgz /home
echo "Subject: backup is finished on " 'date' > /backup.message
echo >> /backup.message
tar tzvf home.tgz >> /backup.message
mail jklee@leelab.co.kr < /backup.message

# chmod 700 backup_mail

이제 본 backup_mail을 매주 cron 파일에서 실행해 주면 됩니다. 월수금토 새벽 4시 30분 마다 실행한다면, /var/spool/cron/root파일에 다음과 같이 적어줍니다.

# crontab -e

30 4 * * 1,3,5,6 /backup_mail

그러면, 매주 월수금토 정해진 시간에 백업이 이루어지고, 메일이 자동으로 발송됩니다.

 

 

 

[목차]

개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.