需求
- 每天凌晨 2:10 备份 数据库 atguiguDB 到 /data/backup/db
- 备份开始和备份结束能够给出相应的提示信息
- 备份后的文件要求以备份时间为文件名,并打包成 .tar.gz 的形式,比如:2018-03-12_230201.tar.gz
- 在备份的同时,检查是否有 10 天前备份的数据库文件,如果有就将其删除。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191211185740715.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NvbGRfX19wbGF5,size_16,color_FFFFFF,t_70)
代码实现
#!/bin/bash
BACKUP=/data/backup/db
DATETIME=$(date +%Y_%m_%d_%H%M%S)
echo "========开始备份========"
echo "========备份路径是 $BACKUP/$DATETIME.tar.gz"
HOST=localhost
DB_USER=root
DB_PWD=root
DATABASE=xxxxxx
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
rm -rf $BACKUP/$DATETIME
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "========备份文件成功========"
交给crond执行
crontab -e
10 2 * * * /usr/sinb/mysql_db_backup.sh