RedHat Linux >> System Administration for Redhat Linux
|
[목차] |
제2장 쉘 프로그래밍
14. 자동 백업(cron/crontab 이용) 쉘프로그램과 cron명령을 이용하면 반복되는 작업을 자동으로 해줄 수 있습니다. 예로서 중요한 데이터를 자동으로 매일 백업을 받게 해주고 백업 받은 결과를 메일로 보내주는 쉘 프로그램을 한번 만들어보도록 하겠습니다. 가. crontab 명령 자동으로 무슨일을 하게 하려면 먼저 cron 명령에 대해서 알아야 합니다. crontab -l 하면 현재 cron 파일의 내용이 보입니다. [root@w3 profile.d]# crontab -l [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 / #!/bin/sh # chmod 700 backup_mail 이제 본 backup_mail을 매주 cron 파일에서 실행해 주면 됩니다. 월수금토 새벽 4시 30분 마다 실행한다면, /var/spool/cron/root파일에 다음과 같이 적어줍니다. # crontab -e 30 4 * * 1,3,5,6 /backup_mail 그러면, 매주 월수금토 정해진 시간에 백업이 이루어지고, 메일이 자동으로 발송됩니다.
|
[목차] |