Navicat 16 自动备份可靠,但清理过期文件需靠 Windows 任务计划 + forfiles 脚本实现;它不支持内置保留策略,.nb3 文件必须手动指定全英文路径并配置“不管用户是否登录都运行”和“使用最高权限运行”两项任务计划选项。

Navicat 16 自动备份本身是可靠的,但“自动删除过期文件”不靠 Navicat 内置功能完成——它只管生成 .nb3 文件,清理必须交由 Windows 任务计划 + 命令行脚本实现。直接依赖 Navicat 的“自动运行”或“批处理作业”界面,无法设置保留几天、删哪些文件。
Navicat 16 里只能设备份,不能设清理
Navicat 的“自动运行 → 新建批处理作业 → 备份”流程,只负责触发一次备份动作,输出到你指定或默认的路径(如 C:\Users\YourName\Documents\Navicat\MySQL\Servers\prod\mydb),文件后缀固定为 .nb3。它没有“保留最近7个”“删除30天前”这类策略配置项。试图在“设置任务计划”里找清理选项,只会白费时间。
常见错误现象:
- 在“批处理作业”中添加多个“备份”任务,误以为能组合出清理逻辑
- 把“日志文件位置”和“备份文件位置”混淆,去清日志目录而非
.nb3所在目录 - 用中文路径保存备份,后续脚本执行时报错
目录名称无效
用 forfiles + 任务计划删旧 .nb3 文件
Windows 自带的 forfiles 是最轻量、无需安装依赖的清理方案。它支持按最后修改日期筛选并执行命令,正好匹配“删N天前备份”的需求。
实操建议:
- 新建一个
clean_navicat_bak.bat,内容如下(注意路径全英文、无空格):
rem 删除 G:\Navicat\MySQL\Servers\prod\mydb 下 7 天前的 .nb3 文件 forfiles /p "G:\Navicat\MySQL\Servers\prod\mydb" /m "*.nb3" /d -7 /c "cmd /c del @path" exit /b 0
-
/d -7表示“7天前及更早”,不是“超过7天”,这点容易理解反 - 路径中不能含中文、不能有括号或 & 符号,否则
forfiles直接报错或静默失败 - 首次运行前,手动执行一遍该 bat,确认能列出并删除目标文件(加
/c "cmd /c echo @path"可预览)
任务计划必须勾选两个关键选项
在 Windows “任务计划程序”中新建基本任务时,光设“每天执行”远远不够。以下两项漏掉任意一个,脚本大概率不运行或权限不足:
- 在“常规”选项卡中:勾选 “不管用户是否登录都运行” 和 “使用最高权限运行”
- 在“触发器”中:避免设在系统刚开机时(如 0:05),建议错开高峰期,比如设在凌晨 2:30 或上午 9:15
- 若提示“操作已成功完成”但文件没删,打开任务历史记录,看是否报错
0x1(通常因权限或路径问题)
备份路径和文件名要提前固化
Navicat 默认把 .nb3 存在用户文档目录下,路径深、含用户名、易被 OneDrive/同步工具干扰。强烈建议在 Navicat 连接属性的“高级 → 设置位置”中,把备份路径显式改成一个稳定、全英文、无空格的盘符根目录,例如:G:\navicat_bak\prod_mydb。
这样做能避免三类问题:
- 路径含中文导致
forfiles解析失败(报错类似'les' 不是内部或外部命令) - 用户重命名或重装系统后,原路径消失,任务计划还在往不存在的位置写日志
- OneDrive 同步中文件被锁定,
del命令静默跳过,旧文件堆积不清理
真正麻烦的从来不是设备份,而是备份路径漂移、清理脚本权限失效、日期计算逻辑被误解。把路径钉死、权限打钩、脚本先手跑通,后面三年基本不用再碰。


















