shell可以做一些繁杂且重复的事,用来做数据库备份很合适
代码如下
#!/bin/bash
#主机
HOST=localhost
#用户名
DB_USER=root
#密码
DB_PWD=adminadmin
#数据库
DBTABASE=gitea
#备份目录
BACKUP=/root/shell/db
#当前时间作为文件名
DATETIME=$(date +%Y_%m_%d_%H%M%S)
#创建备份的路径
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
echo “备份路径$BACKUP/$DATETIME 创建成功”
#执行mysql的备份数据库指令
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
echo "备份数据库文件$BACKUP/$DATETIME/$DATETIME.sql.gz 成功"
#打包备份文件
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
echo "打包成$DATETIME.tar.gz 成功"
#删除临时目录
rm -rf $BACKUP/$DATETIME
echo "删除临时目录$BACKUP/$DATETIME 成功"
#删除10天前的备份数据
find $BACKUP -mtime +10 -iname "*.tar.gz" -exec rm -rf {} \;
echo "删除$BACKUP目录10天前的备份*.tar.gz数据成功"
echo "================备份文件成功==============="
再加入linux cron定时任务中,可以实现定时备份数据,而且删除十天前的数据