把这个脚本保存到/root/backup-database.sh,或者你想要保存的任意位置和文件名
- #!/bin/bash
#数据库
username=root
password=123456
database=mjj
#备份目录(最后要保留斜杠,懒得多做一次判断,下面rclone的也是)
backup_dir=/root/backup/database/
[[ ! -d ${backup_dir} ]] && mkdir -p ${backup_dir} || echo -e "创建备份目录失败,请手动改创建.\n可以尝试执行 \`mkdir -p ${backup_dir}\` 试试看" && exit 1
#Rclone备份(改为'true'启用)
rclone=false
rclone_dir=onedrive:/backup/database/
delete_local=false #改为true表示rclone上传完就删除本地的
backup_file=${database}-$(date +"%Y%m%d_%H:%M:%S").sql.gz
#backup_file=${database}-$(date +"%Y%m%d").sql.gz
mysqldump -u${username} -p${password} ${database}|gzip > ${backup_dir}${backup_file} && \
if [[ "${rclone}" == "true" ]];then
rclone copy ${backup_dir}${backup_file} ${rclone_dir} && \
if [[ "${delete_local}" == "true" ]];then
rm -f ${backup_dir}${backup_file}
fi
fi
然后crontab -e
添加一行,表示每天8点执行这个脚本,备份数据库
- 0 8 * * * bash /root/backup-database.sh
没想好怎么弄保留多少份,感觉有点繁琐
如果大家都是像我一样,按天备份
那么保留7份就可以用当天日期-7天,然后删除这个文件名对应的文件(也就是每次备份完成删除7天前的),时间会有点差异,所以就用日期加时间的通配符匹配文件(或者干脆文件名只保留日期不要时间),但如果不是按天备份(一天几份或者几天一份),就会匹配到不该匹配的文件
还有rclone删除文件不支持通配符,只能rclone lsf出来再匹配,还是有点麻烦的,最好(简单)还是一天一份,然后文件名只保留日期
MJJ自己弄吧
热议
2楼 AaronYYDS 昨天08:25
绑定
- #按照时间删除文件
find $folder -name '*.sql.gz' -and -mtime +1-type f-delete
if [ $? -eq 0 ];then
echo $date delete $dir success!
else
echo $date delete $dir FAILD!
fi
4楼 Leadhip5 昨天08:58
不错,先回复,后收藏
6楼 mengdodo 昨天09:59
不错
7楼 表妹 昨天10:01
从不备份
8楼 无敌 昨天10:07
收藏一下。不错的好东西。
9楼 Molyleaf 4小时前
有没有打算直接打包进lnmp
10楼 影子的影子 半小时前
这么多代码,人已经麻了,还是用宝塔吧
申明:本文内容由网友收集分享,仅供学习参考使用。如文中内容侵犯到您的利益,请在文章下方留言,本站会第一时间进行处理。
谷姐靓号网



评论前必须登录!
立即登录 注册