자동 백업을 위한 간단한 쉘(Shell) 스크립트 - 메일발송까지

리눅스 2019. 1. 3. 13:15

출처 : http://blog.nooree.com/post.cfm/shell


오랜만에 crontab에서 사용할 백업용 쉘 스크립트를 정리했습니다. 이런건 대부분 웹에서 찾아서 쓰는데 덤프기능외에 메일발송도 되면 좋을 거 같아서 추가했습니다. 잘 짜여진 건 아니지만 그럭저럭 쓸 만 하네요. 참고로 Ubuntu 시스템에서만 테스트해봐서 다른 배포판에서는 될련지 모르겠습니다. 아래 쉘을 적당히 backup.sh라고 만들고 crontab에 등록하여 사용하세요. 

여기서 사용된 백업경로, DB명, DB아이디/패스워드, 메일주소 등은 예시로 든 것이니 환경에 맞춰 변경하세요.

다운로드 : backup.sh.zip


01#!/bin/sh
02 
03#실행시각
04NOW_DATE=`date`
05 
06#백업날짜
07BACKUP_DATE=`date +"%Y%m%d"`
08 
09#웹루트
10WWWROOT_DIR=/home/sample/public_html
11 
12#백업파일을 저장할 경로
13BACKUP_DIR=/home/sample/backup
14 
15#MySQL백업
16mysqldump -usampledb -psampledbpass sampledb > ${BACKUP_DIR}/${BACKUP_DATE}.sql
17 
18#웹소스백업
19tar zcvf ${BACKUP_DIR}/${BACKUP_DATE}.tar.gz ${WWWROOT_DIR} --exclude=${WWWROOT_DIR}/WEB-INF
20 
21#소유주 및 권한변경(타 계정의 접근 차단용)
22chown -R root.root ${BACKUP_DIR}
23chmod -R 700 ${BACKUP_DIR}
24 
25# 오래된 백업데이터 삭제(3일 이상 된 것)
26find ${BACKUP_DIR}/ -mtime +3 -exec rm -f {} \;
27 
28#메일 발송 (수신메일추가는 공백으로 구분하여 마지막에 열거)
29echo "백업시각: ${NOW_DATE}\n백업경로: ${BACKUP_DIR}\n\n위와 같이 DB와 웹파일이 백업되었습니다." | mail -a "From:서버관리자 <noreply@sample.com>" -a "Content-Type: text/plain; charset='UTF-8'" -s "자동서버백업안내" manager@sample.com
30 
31exit 0