xshell编程自动备份数据库
需求分析:
- 每天凌晨2:30备份数据库university到~/AllData/xshell/mysql_backup_db
- 备份开始和备份结束时能给出相应的提示信息
- 备份后的文件要求以备份时间为文件名,并打包成.tar.gz,比如2021-05-08_172010.tar.gz
- 备份同时,检查是否有10天前的备份数据文件,若有则删除
xshell编程:
#!/bin/bash
#备份目录
BACKUP=~/AllData/xshell/backup/db
#获取当前时间
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo $DATETIME
#数据库的地址
HOST=localhost
#数据库的用户名
DB_USER=root
#数据库的密码
DB_PW=1234
#备份的数据库
DATABASE=university
#创建备份目录,如果不存在就创建
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"
#备份数据库
mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz
#将文件处理为tar.gz
cd ${BACKUP}
tar -zcvf $DATETIME.tar.gz ${DATETIME}
#删除对应的备份目录
rm -rf ${BACKUP}/${DATETIME}
#删除十天前的备份文件
find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm {} \;
echo "备份数据库${DATABASE}成功~"
实现每天凌晨2:30自动备份
crontab -e
30 2 * * * ~/AllData/xshell/mysql_backup_db.sh
crontab -l