navicat 不支持自动删除过期备份文件,需借助 powershell(windows)或 find(linux/macos)脚本配合系统定时任务实现;示例:powershell 用 get-childitem + adddays(-7) + remove-item,linux 用 find -mtime +7 -delete。
navicat 本身不支持设置备份文件自动删除天数,必须靠外部脚本或系统任务配合实现。
Navicat 备份任务不提供“过期清理”选项
Navicat 的 Automated Backup 功能只负责生成备份(如 backup_202405201430.sql),不管理历史文件生命周期。你找不到类似 Keep last 7 days 的配置项——这不是遗漏,是设计如此。
常见误操作包括:在备份路径里手动勾选“覆盖同名文件”,但这只影响单次执行,无法解决累积冗余;或依赖 Navicat 日志清理,但日志和备份文件是两套机制,互不影响。
- 备份文件默认保存在你指定的任意本地/网络路径,Navicat 不跟踪其修改时间
- 所有备份文件权限、归属、命名格式均由操作系统控制,Navicat 不干预
- 即使启用
Compress backup file,压缩包仍需手动清理
Windows 下用 PowerShell 脚本按天数清理最稳妥
PowerShell 原生支持时间计算和文件筛选,比批处理更可靠,尤其处理中文路径或带空格的目录时不易出错。
示例脚本(保存为 cleanup_navicat_backups.ps1):
Get-ChildItem -Path "D:\navicat_backups" -Filter "*.sql" -File |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } |
Remove-Item -Force
关键点说明:
-
-Path必须指向 Navicat 实际写入备份的目录(检查备份任务的Backup to设置) -
-Filter "*.sql"可替换为"*.zip"或"*backup*",取决于你导出格式 -
AddDays(-7)表示保留最近 7 天,数值按需调整 - 务必先用
Get-ChildItem ... | Where-Object ... | ForEach-Object { Write-Host $_.FullName }预览匹配结果,确认无误再加Remove-Item
Linux/macOS 下用 find 命令一行搞定
POSIX 系统直接使用 find 最轻量,无需额外依赖。注意 Navicat for Linux 桌面版备份路径通常在 ~/Documents/Navicat/Backups/ 或你自定义的位置。
执行前先测试匹配:
find "/home/user/navicat_backups" -name "*.sql" -type f -mtime +7
确认输出是你想删的文件后,加 -delete 执行清理:
find "/home/user/navicat_backups" -name "*.sql" -type f -mtime +7 -delete
注意事项:
-
-mtime +7表示“修改时间超过 7×24 小时”,不是“7 天前”,和 PowerShell 的AddDays(-7)语义略有差异(但对备份场景基本等效) - 若备份含子目录,加
-maxdepth 1限制只扫当前层,避免误删嵌套结构 - 脚本中建议用
#!/bin/bash开头,并配合date >> /var/log/navicat_cleanup.log记录执行时间
把清理任务集成进系统定时机制
脚本写完只是第一步,必须让它定期运行。Navicat 不会调用它,得靠系统级调度:
- Windows:用任务计划程序,触发器设为“每天凌晨 2:00”,操作为“启动程序” →
powershell.exe,参数填-ExecutionPolicy Bypass -File "D:\scripts\cleanup_navicat_backups.ps1" - Linux/macOS:
crontab -e加一行0 2 * * * /usr/bin/find "/home/user/navicat_backups" -name "*.sql" -type f -mtime +7 -delete 2>/dev/null - 重要提醒:
crontab中的路径必须写绝对路径,且$HOME不展开,~无效
磁盘空间告警不能只靠“定期清理”——如果某次备份失败导致后续任务跳过,旧文件会一直堆积。建议在清理脚本末尾加一句 df -h /path/to/backup | grep -q "9[0-9]%" 判断使用率,超阈值时发邮件或写日志,这才是真正可控的策略。











