CRON을 이용한 DB백업 > Linux

STUDY ROOM

Linux

CRON을 이용한 DB백업

페이지 정보

작성자 JMStudy 작성일06-01-16 21:16 조회6,179회 댓글0건

본문

###########################cron 정리##############################
cron 파일이 저장되는 장소
/var/spool/cron/사용자명 ( "/var/spool/cron/crontab/사용자명" 으로 되어 있을 수도 있다)

cron을 사용할 땐 crontab 이라는 명령을 이용해서 설정한다.
crontab의 형식은 다음과 같다.

분(minute) 시(hour) 날(day) 달(month) 요일(dayofweek) 명령(command)
***각항은 space로 구분됩니다***

#crontab -e

위와 같이 입력하면 vi 편집기가 열릴겁니다..
기본적으로 crontab의 편집기는 vi로 지정되어 있습니다.

cron을 이용해서 백업하는 방법은 두가지가 있다

첫번째:
0 12 * * sun tar cvfz /root/backup.tar.gz /usr/local/apache/htdocs
이거는 여기서 바로 명령어을 날리는거고
두번째:
0 12 * * sun /home/test/test.sh
이거는 실행파일을 찾아서 실행시크는 방법이다
그러므로 /home/test/test.sh 이라는 파일이 존재햐겠죠

/var/spool/cron에 가보면 사용자 이름으로 cron 파일이 있을 것이다.

위의 내용은 일요일 12시마다 /usr/local/apache/htdocs의 내용을 backup.tar.gz라는 파일로 백업을 하라는 것입니다.
앞의 0은 분(minute)을 가리키고 12는 시(hour) 세번째 *는 날(day) 네 번째 *는 달(month)를 지정해 준겁니다..
*는 all을 의미합니다. 그러니까 매일, 매달 일요일 12시에 명령을 실행하라는 얘기지요...
분(minute), 시(hour), 요일(dayofweek)도 마찬가지로 *를 적용할 수 있습니다.
기억해 둘건 날짜와 관련된 항은 5개라는 것...

또 tar 라는 명령외에 다름 명령도 추가 해주고 싶을 땐 ";" 로 구분해서 ";" 뒤에 명령을 더 달아 주면 됩니다.

crontab -r ----> crontab에 설정된 것을 삭제해 주고 싶을 때(모두 삭제 됩니다)
crontab -l ----> 현재 설정되어 있는 crontab을 보고 싶을 때

1일부터 15일 까지로 날짜를 지정하고 싶을 땐 다음과 같이 하이픈을 이용할 수 있다.
0 1 1-15 * * [명령]
분, 시, 날, 달, 요일, 모두 적용할 수 있다.

1일과 7일 15일에 cron을 작동시킬 땐 콤마를 이용하면 된다.
0 1 1,7,15 * * [명령]
분, 시, 날, 달, 요일, 모두 적용할 수 있다.

매 5일 마다 실행하고 싶을 땐 슬래쉬(/)를 이용한면 된다.
0 1 /5 * * [명령]
분, 시, 날, 달, 요일, 모두 적용할 수 있다.
/ 안해줘도 달이 *로 표현되어 있어서 매달 실행된다. 하지만 좋은 습관을 들이기 위해..


#직접 크론을 사용한 예
1.첫번째 방법 (로컬에 백업하기)

=> 디비을 백업받기 위해서 새벽 4시에 크론을 이용하여 자동 백업을 할 것이다.
먼저 백업받을 디렉토리와 스크립트을 돌리는 디렉토리을 만든다

[root@server imars]# mkdir dbbackup
[root@server imars]# mkdir scripts
[root@server imars]# ll
total 8312
drwxr-xr-x 2 imars users 4096 Dec 20 11:30 dbbackup
drwxr-xr-x 23 imars users 4096 Dec 20 01:22 public_html
drwxrwxrwx 2 imars users 4096 Dec 20 12:20 scripts
[root@server imars]# cd scripts/
[root@server scripts]# vi dump_imars.sh

#!/bin/bash
cd /home/imars/dbbackup #백업받을 디렉토리로 이동
/usr/local/mysql/bin/mysqldump -u imars -p1234 imars > imars_$(date +%Y%m%d).sql #현재날짜로...
tar cvfz imars_$(date +%Y%m%d).tar.gz imars_$(date +%Y%m%d).sql #압축
rm -rf *.sql #그 전에 백업받은 파일과 현재 받은 확장자가 .sql인 모든 파일을 지운다 즉 압축한파일을 제외한 모든파일을 #지운다
~
~
~
~
~
:wq

[root@server scripts]# ll
total 4
-rwxrwxrwx 1 imars users 198 Dec 20 13:01 dump_imars.sh

이렇게 하면 백업받을수 있는 조건을 이룬것이다.
이제 크론을 이용해서 자동으로 백업받기을 처리하도록 하자

[root@server scripts]# crontab -e

0 4 * * * /home/imars/scripts/dump_imars.sh #항상 새벽 4시에 dump_imars.sh 파일을 실행한다고 선언한다.
~
~
~
:wq
"crontab.14683" 1L, 43C written
crontab: installing new crontab

[imars@server scripts]$ crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.14683 installed on Thu Dec 20 13:08:42 2001)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
0 4 * * * /home/imars/scripts/dump_imars.sh

이렇게 하면 모든처리가 된 것이다.

2.두번째 방법 (서버1의 디비백업파일을 서버2에서 ftp을이용해서 백업파일 가져오기)
=>이런경우 서버1에서 해야하는것은 위에 설명한 로컬에서 백업하는 방법하고 동일하다.
그렇다면 서버2에서 처리해야할것들에 대해서 설명드리겠습니다.

새벽 5시에 자동으로 ftp을 실행하게 해서 서버1의 파일을 복사해오도록 한다.

[dbbackup@mail dbbackup]$ mkdir imars
[dbbackup@mail dbbackup]$ ll
total 1624
drwxrwxr-x 4 dbbackup dbbackup 4096 Dec 20 11:15 imars
[dbbackup@mail dbbackup]$ cd imars
[dbbackup@mail imars]$ mkdir dbbackup
[dbbackup@mail imars]$ mkdir scripts
[dbbackup@mail imars]$ ll
total 8
drwxrwxr-x 2 dbbackup dbbackup 4096 Dec 20 11:15 dbbackup #백업받을곳
drwxrwxr-x 2 dbbackup dbbackup 4096 Dec 20 12:44 scripts #스크립트파일
[dbbackup@mail dbbackup]$ cd imars/scripts/
[dbbackup@mail scripts]$ vi autoftp.sh
#!/bin/bash
cd /home/dbbackup/imars/dbbackup #백업받을곳으로 이동
rm -rf *tar.gz #그전에 가져온것들은 지운다
ftp -n 211.174.63.246 < /home/dbbackup/imars/scripts/ftpscript

~
~
~
:wq
[dbbackup@mail scripts]$ vi ftpscript #ftp 사용자 비밀번호 명령어 정보
user imars 1234 #사용자 비밀번호
cd /home/imars/dbbackup #서버1에서 백업파일이 있는곳
bin
prompt
mget *.tar.gz
bye
[dbbackup@mail scripts]$ ll
total 8
-rwxrwxr-x 1 dbbackup dbbackup 124 Dec 20 13:27 autoftp.sh
-rwxrwxr-x 1 dbbackup dbbackup 80 Dec 20 11:15 ftpscript

이렇게 하면 백업받을수 있는 조건을 이룬것이다.
이제 크론을 이용해서 자동으로 autoftp.sh을 실행하도록 처리하도록 하자

[dbbackup@mail scripts]$ crontab -e

0 5 * * * /home/dbbackup/imars/scripts/autoftp.sh
~
~
~
:wq
"crontab.14683" 1L, 43C written
crontab: installing new crontab
[dbbackup@mail scripts]$ crontab -l #확인
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.25746 installed on Thu Dec 20 12:36:52 2001)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
0 5 * * * /home/dbbackup/imars/scripts/autoftp.sh

이렇게 하면 모든처리가 된 것이다.
댓글목록

등록된 댓글이 없습니다.