티스토리 뷰

리눅스/기본

[기초] crontab 활용

Seob 2014. 7. 30. 11:18
반응형




번에는 crond 데몬에 대해 배워보겠습니다.


심화가 아닌 기초적인 설명만 하겠습니다.



crond 데몬은 아주 유용하게 쓰입니다.


어떻게 쓰이냐에 따라 천지차별이죠.



저 같은 경우는 시간을 동기화 시키는데에 쓰이고


가끔 백업에 사용되기도 합니다.






이번에 제가 설명드리고하자는건 백업에 대한 설명으로 드리겠습니다.




■ Crond 데몬 활용하기


업하기 위한 폴더와 파일을 생성하도록 하겠습니다.


기본적인 폴더에서 백업을 하려고 했는데 용량이 여의치 않아서 간단한 폴더를 생성하겠습니다.



[root@seob /]# mkdir seob  

[root@seob /]# cd seob

[root@seob seob]# touch min.txt

[root@seob seob]# echo "Hello. Min" >> min.txt 

[root@seob seob]# cat min.txt 

Hello. Min


위 명령어에 대한 설명


/ 폴더 아래에 seob 이라는 폴더를 생성후 min.txt 라는 일반 파일을 생성했습니다.


그리고 그 파일안에 Hello. Min 이라는 문구를 넣었습니다.



그리고 난 뒤 crond 데몬을 활용하여 매시간 1분에 백업을 하도록 설정하겠습니다.



[root@seob home]# cat /etc/crontab 

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/


# For details see man 4 crontabs


# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name command to be executed


기본적인 crontab에 대한 내용입니다.


여기에 언제, 누가, 어떠한 명령으로, 무엇을 실행하는지 작성하시면 됩니다.


기본적으로 주석되어 설명이 되어있기 때문에 설명은 생략하겠습니다.



우리는 매시간 1분마다 백업을 하기 위하니깐 다음과 같이 작성해줍니다.


[root@seob home]# cat /etc/crontab 

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/


# For details see man 4 crontabs


# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name command to be executed

01 * * * * root run-parts /etc/cron.hourly


매시간 1분마다 /etc/cron.hourly 폴더 안에 있는 스크립트를 root 권한으로 실행하라


라는 표기입니다.




※ 알고가기


/etc/cron.*에는 여러가지가 있습니다.


cron.daily/   cron.hourly/  cron.monthly/ cron.weekly/


이렇게 네가지로 구분되며


cron.daily = 하루


cron.hourly = 시간


cron.weekly = 주


cron.monthly = 달


이렇게 구분이 됩니다.


시간에 따른 스크립트를 안에 넣어주시면 됩니다.



그리고 난 뒤 백업을 할 스크립트를 작성해주셔야합니다.


[root@seob /]# cat /etc/cron.hourly/backup.sh 

#!/bin/bash


time="$(date)"   ##### time 이라는 변수를 생성하고 date 명령어를 time 변수에 삽입


tar zcvf /home/backup-"$time".tar.gz /seob

##### /seob 이라는 폴더를 tar.gz으로 압축을 묶고 /home 폴더 아래에 backup-"현재 시간".tar.gz으로 압축


[root@seob /]# chmod 755 /etc/cron.hourly/backup.sh ##### backup.sh 파일의 권한을 755로 변경


crond이 실행되면 cron.hourly에 있는 스크립트가 실행되기 때문에


/etc/cron.hourly에 backup.sh 이라는 스크립트를 만들어 줍니다.


여기서 중요한 것은 스크립트의 권한은 755 혹은 777 로 주세요.


안전성을 고려하신다면 755로 주세요.



이렇게까지 모두 완료되었으면 crond 데몬을 실행합니다.


[root@seob /]# service crond start

Starting crond:                                            [  OK  ]

[root@seob /]# chkconfig crond on



그리고 매시간 1분에 home 폴더로 이동해봅니다.


[root@seob home]# ls

backup-Wed Jul 30 11:01:00 KST 2014.tar.gz


저희가 만든대로 생성이 되었습니다.


문제는.. 띄어쓰기 때문에 압축해제가 되지 않네요.


이름을 aaa.tar.gz로 변경하고 압축을 풀겠습니다.


[root@seob home]# mv backup-Wed\ Jul\ 30\ 11\:01\:00\ KST\ 2014.tar.gz aaa.tar.gz

[root@seob home]# tar zxvf aaa.tar.gz 

seob/

seob/min.txt

[root@seob home]# ls

aaa.tar.gz  seob

[root@seob home]# cd seob

[root@seob seob]# cat min.txt 

Hello. Min


백업이 정상적으로 되었습니다.


min.txt 파일에 있던 내용도 그대로 잘 출력 되네요.











제는 시간에서의 띄어쓰기인데.....


[root@seob /]# cat /etc/cron.hourly/backup.sh 

#!/bin/bash


time="$(date)"   ##### time 이라는 변수를 생성하고 date 명령어를 time 변수에 삽입


tar zcvf /home/backup-"$time".tar.gz /seob

##### /seob 이라는 폴더를 tar.gz으로 압축을 묶고 /home 폴더 아래에 backup-"현재 시간".tar.gz으로 압축


이 부분에서 


time="$(date)" 부분을 time="$(date +%y%m%d)"로 변경해주세요.


그럼 이렇게 저장이 됩니다.


[root@seob home]# ls

backup-140730.tar.gz

[root@seob home]# tar zxvf backup-140730.tar.gz 

seob/

seob/min.txt


띄어쓰기가 없으니 압축도 잘 풀어지네요.



이상으로 기초 crontab 활용에 대해 설명을 마치겠습니다.


반응형
댓글
공지사항
최근에 올라온 글