navicat 不支持 unc 路径和映射盘符,因其仅接受本地绝对路径且未实现 unc 解析逻辑,导致备份静默失败或生成 0kb 文件;应改用本地中转目录+robocopy/rsync 同步。
navicat 备份到网络共享目录失败,根本原因不是“不支持”,而是它压根不认 unc 路径和挂载盘符——所有版本(windows/macos/ios)都只接受本地绝对路径,且对路径字符极其敏感。试图填 \servershareackup.sql 或 z:ackup.sql,navicat 会静默忽略或报错,但不会明确提示“路径无效”。
为什么 UNC 路径和映射盘符一定失败
Navicat 底层调用的是 mysqldump、pg_dump 等命令行工具,这些工具运行在操作系统进程上下文中,而 UNC 路径(如 \nasackups)和 SMB 映射盘符(如 Z:)在非交互式服务上下文(比如计划任务、后台备份)中不可见或权限受限。更关键的是,Navicat 自身代码里没做 UNC 路径解析逻辑,直接传给系统时会被截断或当成字符串字面量处理。
- 现象:备份文件生成了但大小为 0KB,或日志里出现
Can't create/write to file(Errcode: 13) - 验证方法:把同样路径粘贴进 CMD 执行
echo test > \servershare est.txt,如果失败,说明 OS 层就不通 - 特别注意:即使你在 GUI 里点“测试连接”成功,也不代表备份能写入该路径——连接测试不涉及文件写入
正确做法:用本地中转 + 手动同步
别让 Navicat 直接写网络路径,改用“本地临时目录 + 后续复制”的方式,既稳定又可控。
- 在本地(如
C: avicat_temp_backups)建一个专用目录,确保当前用户对该目录有完全控制权 - Navicat 备份目标路径设为该本地路径,例如
C: avicat_temp_backupsmydb_20260727.sql - 备份完成后,用系统自带工具触发同步:Windows 可用
robocopy,Linux/macOS 可用rsync;例如:robocopy C: avicat_temp_backups \nasackups /E /Z /R:3 /W:5 - 若需自动化,把同步命令写成批处理或 shell 脚本,挂到 Navicat 备份完成后的“执行外部程序”钩子(在备份设置高级选项里)
SSL 证书和权限陷阱必须避开
如果你的网络共享依赖域认证或 Kerberos,Navicat 进程无法继承你的登录会话凭证——尤其当以计划任务运行时,它默认跑在无桌面会话的上下文中,SSPI 认证直接失效。
- 不要指望勾选“使用 Windows 身份验证”就能连上
\server;它只对本地服务有效 - 避免在路径中使用带空格或中文的文件夹名,比如
C:My Backups或C:数据库备份——mysqldump解析参数时会崩 - 如果 NAS 支持 NFS,Windows 上可用
mount -o anon \nasshare N:挂载为驱动器,但依然要确保 Navicat 运行用户对该驱动器有写权限(常需管理员提权)
真正卡住人的从来不是功能有没有,而是 Navicat 把“路径合法性检查”全甩给了底层工具,自己连个像样的错误提示都不给。你得先默认它不认识任何网络路径,再从本地中转开始搭链路——这才是最省时间的做法。











