우분투 mariaDB 자동 백업하기

티스토리 쓸땐 “다음이 알아서 잘 하고 있겠지” 라는 생각이었지만 개인서버를 쓰니 백업에도 신경써야 하는 일이 생깁니다.

처음엔 수동으로 매번 압축해서 백업했는데 날이 지나니 자꾸 깜빡합니다.
그래서 자동화 하기로 했습니다.

#!/bin/bash

backupPath=/home/linsoo/server/backup/
backupDate=$(date +%Y%m%d_%H%M%S)

 
USERNAME=디비아이디
PASSWORD=디비비번
DATABASE=디비이름

mysqldump -u$USERNAME -p$PASSWORD  $DATABASE > $backupPath/$backupDate'_'$DATABASE'.sql'

zip -j $backupPath$backupDate'_backupDB.zip' $backupPath$backupDate'_'$DATABASE'.sql'
rm $backupPath$backupDate'_'$DATABASE'.sql'

find $backupPath* -mtime +13 -name "*backupDB*" -exec rm {} \;

저는 autoBackupDB.sh 라는 이름으로 했습니다.
날짜_시간_디비이름으로 백업해서 zip으로 압축하도록 했습니다.


draco님 댓글을 보고 14일 이상 지난 백업파일은 스크립트 실행할때 마다 검사해서 삭제하는 부분 추가했습니다.


$ chmod 700 autoBackupDB.sh

실행 권한을 주고 (스크립트내 db 비번이 저장되니 반드시 700 권한을 주세요)

$ sudo vi /etc/crontab

크론탭을 열어서

0 0 * * * root /home/linsoo/server/autoBackupLog.sh

이렇게 추가해줬습니다.

참고로 크론탭 명령구문 설명입니다.
  [MM] [HH] [DD] [mm] [d] [command]  

필드

 의미

 범위

 첫 번째  분  0~59
 두 번째  시  0~23
 세 번째  일  1~31
 네 번째  월  1~12
 다섯 번째  요일  0~7 (0,7 : 일요일, 1 : 월요일)
 여섯 번째 실행할 계정 root, user …
 일곱 번째  명령어  실행할 명령을 한줄로 쓴다.

*값을 넣으면 해당 필드의 모든 항목이라고 생각하면 됩니다.

저는 0 0 * * * 이니 0분 0시 매일 매월 모든 요일 이라는거죠.
이제 freefilesync 로 server 폴더를 통째로 외장하드에 백업하기 때문에 이제 걱정이 좀 덜합니다.

크리에이티브 커먼즈 라이선스 Linsoo 의 저작물인 이 저작물은(는) 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

댓글 2개

  1. 좋은 정리 이십니다.
    다들 아시겠지만 혹시 이 글을 참고해서 서버세팅을 하실 초보분이 있을까 몇줄 적자면,
    1. 백업해 놓을 하드디스크 용량이 아주 크지 않다면, 백업스크립트 앞부분에 1주일이상이나 1달이상 등의 조건으로 오래된 백업파일을 삭제하는 부분을 넣어주시는게 좋습니다.
    백업스크립트만 믿고 있다가 용량이 다차서 백업 안되고 있어서 낭패보는 경우는 고수들도 종종 생깁니다.
    삭제하는 스크립트는 구글링해보면 많습니다.
    2. 백업한 파일을 권한 열려 있는 디렉토리에 저장하거나, 파일권한을 777같은걸로 하거나 하지 않아야 합니다. 저 스크립트 파일도 DB 비번이 있기 때문에, 같은 주의를 기울여야 하죠.

댓글 달기

이메일 주소는 공개되지 않습니다.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.