本帖最后由 好鸭 于 2022-6-9 09:29 编辑
把这个脚本保存到/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自己弄吧
|