shell脚本实现每天定时自动备份mysql数据库
脚本编写
- 首先mysql的备份命令为
mysqldump -uroot -p123456 dbname > /targetDir
- 将该命令放到脚本文件中
#!/bin/bash
#备份文件存放路径
baseDir=/usr/local/dbback/database
#备份文件的名称
fileName=dbname_$(date +%Y%m%d_%H%M%S).sql
#先删除旧文件
rm -f $baseDir/*
#执行备份
mysqldump -uroot -p123456 dbname > $baseDir/$fileName
- 将脚本加入到crontab定时任务中
进入编辑页面:
crontab -e
添加一行(共六个参数:分 时 几号 几月 周几 命令):
0 1,13 * * * /usr/local/dbback/autoBackup.sh
表示每天1点整和13点整运行该命令
2.0优化版
- 上面的脚本执行备份之前,我是直接删除所有的旧文件,只会保留一份最新的;
- 而现在的新需求是:要保留最近3天的备份文件;
#!/bin/bash
#sql文件存放路径
baseDir=/usr/local/dbback/database
#移除旧sql文件
function rmOldSqlFile(){
#找到3天前的文件
files=`find ${baseDir} -mtime +2 -name "*.sql"`
for f in $files
do
#移除文件
rm -f $f
done
}
fileName=fangcao_$(date +%Y%m%d_%H%M%S).sql
#先删除旧sql文件
rmOldSqlFile
#备份
mysqldump -uroot -p123456 dbname > $baseDir/$fileName
-mtime:
find -mtime -n 表示n*24h内的文件;
find -mtime n 表示n*24h至(n+1)*24h之间的文件;
find -mtime +n 表示(n+1)*24h之前的文件;