嘟嘟社区

离开宝塔之后你可以这样备份数据库


本帖最后由 好鸭 于 2022-6-9 09:29 编辑

把这个脚本保存到/root/backup-database.sh,或者你想要保存的任意位置和文件名

  1. #!/bin/bash
  2. #数据库
  3. username=root
  4. password=123456
  5. database=mjj
  6. #备份目录(最后要保留斜杠,懒得多做一次判断,下面rclone的也是)
  7. backup_dir=/root/backup/database/
  8. [[ ! -d ${backup_dir} ]] && mkdir -p ${backup_dir} || echo -e "创建备份目录失败,请手动改创建.n可以尝试执行 `mkdir -p ${backup_dir}` 试试看" && exit 1
  9. #Rclone备份(改为’true’启用)
  10. rclone=false
  11. rclone_dir=onedrive:/backup/database/
  12. delete_local=false #改为true表示rclone上传完就删除本地的
  13. backup_file=${database}-$(date +"%Y%m%d_%H:%M:%S").sql.gz
  14. #backup_file=${database}-$(date +"%Y%m%d").sql.gz
  15. mysqldump -u${username} -p${password} ${database}|gzip > ${backup_dir}${backup_file} &&
  16. if [[ "${rclone}" == "true" ]];then
  17. rclone copy ${backup_dir}${backup_file} ${rclone_dir} &&
  18. if [[ "${delete_local}" == "true" ]];then
  19. rm -f ${backup_dir}${backup_file}
  20. fi
  21. fi

复制代码

然后crontab -e

添加一行,表示每天8点执行这个脚本,备份数据库

  1. 0 8 * * * bash /root/backup-database.sh

复制代码

没想好怎么弄保留多少份,感觉有点繁琐

如果大家都是像我一样,按天备份

那么保留7份就可以用当天日期-7天,然后删除这个文件名对应的文件(也就是每次备份完成删除7天前的),时间会有点差异,所以就用日期加时间的通配符匹配文件(或者干脆文件名只保留日期不要时间),但如果不是按天备份(一天几份或者几天一份),就会匹配到不该匹配的文件

还有rclone删除文件不支持通配符,只能rclone lsf出来再匹配,还是有点麻烦的,最好(简单)还是一天一份,然后文件名只保留日期

MJJ自己弄吧

绑定
本帖最后由 woniu 于 2022-6-9 08:35 编辑
  1. #按时间删除文件夹
  2. cd $folder
  3. deldata=$(date -d "1 day ago" +%Y-%m-%d)
  4. rm -rf ${deldata}

复制代码

  1. #按照时间删除文件
  2. find $folder -name ‘*.sql.gz’ -and -mtime +1  -type f  -delete
  3.     if [ $? -eq 0 ];then
  4.         echo $date delete $dir success!
  5.     else
  6.         echo $date delete $dir FAILD!
  7.     fi

复制代码

不错,先回复,后收藏