티스토리 뷰

IT/G5

cron을 이용한 DB자동백업

SarangDev 2017. 7. 27. 08:25

저 처럼 가상서버 호스팅을 사용한다면 웹 호스팅업체에서 백업은 알아서 하쇼! 라고 하는데... 
대신 서버를 내것처럼 이용할 수 있다는 장점이 있죠... 
그래서 저는 cron으로 자동백업스크립트를 만들어 자동으로 백업이 되도록 하였습니다. 
관련 내용을 찾아보던 중 가장 정리가 잘 된 스크립트 예제를 발견하였습니다. 


우선 root로 로그인한후 
vi backup.sh를 입력하여 sh파일을 생성해 봅니다. 

그리고 아래의 내용을 본인의 환경에 맞게 적당하게 편집한후 저장합니다. 
(이때 경로부분은 pwd 명령을 입력하여 절대경로로 입력해줍니다) 

--------------------------------------------------------------------------------------- 
#!/bin/bash 
DATE=`date +%Y%m%d` 
DB_BACKUP_DIR=/backup/db 
WEB_BACKUP_DIR=/backup/web 
WEB_DIR=/www_dir 

##### MySQL 특정 데이타베이스 백업 ##### 
mysqldump -uroot -p***** justin > $DB_BACKUP_DIR/justin_$DATE.sql 
mysqldump -uroot -p***** xnova > $DB_BACKUP_DIR/xnova_$DATE.sql 

##### MySQL 전체 데이타베이스 백업 ##### 
mysqldump -uroot -p***** -A > $DB_BACKUP_DIR/all_$DATE.sql 

##### 웹파일 백업 (web 디렉토리의 모든내용을 백업) ##### 
tar czfp $WEB_BACKUP_DIR/web_$DATE.tar.gz $WEB_DIR/web 

##### 오래된 백업 삭제 (일주일 전의 파일들만 삭제) ##### 
WEEKAGO=`date -d "7 days ago" +%Y%m%d` 
rm $DB_BACKUP_DIR/*$WEEKAGO.sql 
rm $WEB_BACKUP_DIR/*$WEEKAGO.tar.gz 

##### 권한 수정 ##### 
chmod -R 600 $WEB_BACKUP_DIR 
chmod -R 600 $DB_BACKUP_DIR 

##### 백업 후 FTP로 전송한다면 아래 사용 ##### 
#REMOTE='192.168.0.123'    ## FTP 리모트 변수 (서버IP) 
#ID='test'                ## FTP 아이디 
#PWD='1234'                ## FTP 패스워드 
#REMOTE_DIR='/home/test'  ## 리모트디렉토리 

#ftp -n -v $REMOTE << EOF  ## FTP 접속 
#user $ID $PWD            ## LOGIN 
#prompt 
#bi                        ## binary 모드 변경 

#put $DB_BACKUP_DIR/all_$DATE.sql $REMOTE_DIR/all_$DATE.sql 
#bye                      ## 접속종료 
#EOF 



-------------------------------------------------------------------------------------------- 

:wq를 입력하여 저장한후 

vi /etc/crontab 을 입력하면 cron설정을 수정할 수 있습니다. 

0  5  *  *  *  root  /your/shell/file/dir/backup.sh 

이렇게 입력하면 root 권한으로 메일 새벽 5시에 해당 쉘을 실행시키라는 의미입니다. 

cron 파일을 수정한 후 

# /etc/init.d/cron restart 

명령으로 크론을 재기동해줍니다. 

만든 쉘이 정상작동되는지 확인하려면 해당 경로에서 

./backup.sh 로 강제실행 시킬 수 있습니다. 

댓글