MySQL如何配置定时清理过期备份文件_find命令与保留周期策略

张开发
2026/4/19 1:05:40 15 分钟阅读

分享文章

MySQL如何配置定时清理过期备份文件_find命令与保留周期策略
最可靠方式是用 find -mtime非-ctime按修改时间删除旧MySQL备份文件因-mtime反映实际写入完成时间需配合-type f、-name精确过滤先-print测试再-delete并在crontab中设置PATH和错误日志。用 find 按修改时间删旧备份文件最可靠Linux 下清理 MySQL 备份find 是最轻量、最可控的选择。它不依赖数据库状态也不需要额外服务直接操作文件系统即可。关键不是“能不能删”而是“按什么时间维度删”——必须用 -mtime修改时间而非 -ctime状态变更时间因为备份脚本通常只改文件内容不改权限或属主-ctime 容易误判。-mtime 7 表示“7天前及更早修改的文件”注意不是“超过7天”是“ 7*24小时”跨午夜计算别按日历天数理解备份文件名带日期如 backup_20240501.sql.gz时find 仍应优先看 -mtime因为重命名、解压、传输都可能改变 -ctime 或 -atime唯独 -mtime 反映实际写入完成时间务必先加 -print 测试例如find /backup/mysql -name *.sql.gz -mtime 7 -print确认列出的确实是目标文件再加 -deleteMySQL 备份路径里混着临时文件用 -type f 和 -name 组合过滤生产环境的备份目录常有 .tmp、.part、锁文件或日志直接 find ... -delete 可能误删正在写的备份。安全做法是显式限定文件类型和命名模式。只删普通文件find /backup/mysql -type f排除目录、socket、设备节点限定扩展名组合-name *.sql.gz -o -name *.xbstream -o -name *.zst避免匹配到 mysql-bin.000001 这类二进制日志它们该由 expire_logs_days 管如果备份脚本生成临时文件如 backup_20240501.sql.gz.part加 ! -name *.part 排除否则 -mtime 7 可能把未完成的也删了保留最近 N 个备份find 本身不支持“按数量留档”得配合 sort 和 tail按天备份但要求“永远留最近 14 个”仅靠 -mtime 不行——某天没备份14 就会多删某天双备份14 又会少删。必须按文件名或时间戳排序后取尾部。 Zeemo AI 一款专业的视频字幕制作和视频处理工具

更多文章