티스토리 쓸땐 “다음이 알아서 잘 하고 있겠지” 라는 생각이었지만 개인서버를 쓰니 백업에도 신경써야 하는 일이 생깁니다.
처음엔 수동으로 매번 압축해서 백업했는데 날이 지나니 자꾸 깜빡합니다.
그래서 자동화 하기로 했습니다.
#!/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 폴더를 통째로 외장하드에 백업하기 때문에 이제 걱정이 좀 덜합니다.
답글 남기기