db_backup.sh
#!/bin/bash
DATE=$(date +%Y-%m-%d)
BACKUP_DIR=/home/judge/backup/mysql
if [ ! -d $BACKUP_DIR ]; then
mkdir $BACKUP_DIR
fi
# mysql dump (비번예시 1234일때)
mysqldump -u root -p1234 --databases jol > $BACKUP_DIR/"backup_"$DATE.sql
# 14일 이상 지난 데이터는 삭제
find $BACKUP_DIR -ctime +14 -exec rm -f {} \;
DATE
: 현재 날짜를 가져온다.
BACKUP_DIR
: 백업할 디렉토리 위치를 설정한다.
백업할 디렉토리가 없으면 새로 생성한다. (이미 만들었으면 안써도 되기는 함)
mysql 데이터 베이스를 dump 한다.
mysqldump -u root -p{비밀번호} --databases {데이터베이스명} > $BACKUP_DIR/"backup_"$DATE.sql
backup_오늘날짜.sql
파일로 저장된다.하루에 한 번 이 스크립트를 실행할건데, 그러면 너무 많이 쌓이니까
일주일이 지난 데이터는 강제 삭제한다.
~/backup$ chmod +x ./db_backup.sh
위 스크립트를 이제 하루에 한 번 매일 오전 6시에 딱 맞추어 백업을 하도록 한다.
crontab -e
/backup/mysql# crontab -e
no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]: 1
nano 에디터가 편해서...ㅎ
# Edit this file to introduce tasks to be run by cron.
#
# 어쩌구 저쩌구
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
# 매일 오전 6시에 db 백업
0 6 * * * /home/judge/backup/mysql/db_backup.sh
주석으로 되어있는 파일이 뜰 거고
우리가 실행할 파일을 적어준다.
crontab 스케줄링 시간 확인하는 참고 사이트 : crontab guru
매일 오전 6시에 실행한다.
$ crontab -l
$ service cron restart
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'cron.service'.
Multiple identities can be used for authentication:
1. Ubuntu (ubuntu)
2. ,,, (appcenter)
Choose identity to authenticate as (1-2): 2
/home/judge/backup/mysql# ls
backup_2022-11-21.sql db_backup.sh
잘 생성되었다!
나중에 이 파일이 필요하게 되면 import 해 주면 됨!