Navicat不支持直接上传备份至云存储,需先本地生成带时间戳的备份文件,再用命令行工具(如aws s3 cp或rclone)配合定时任务上传;禁用Navicat自带计划任务和FTP导出,避免覆盖、空传或协议不兼容。
Navicat 本身不支持直接上传备份文件到云存储
navicat 的「自动备份」功能只负责本地生成 .sql 或 .ndb 文件,它没有内置的 s3、oss、onedrive 或 cos 上传能力。所谓“转存云端”,实际是两步:先让 navicat 生成备份,再用外部工具或脚本把文件推上去。
用操作系统命令 + 定时任务完成自动上传
这是最稳定、可审计、不依赖 GUI 的做法。Windows 可用 PowerShell + aws cli 或 rclone;macOS/Linux 直接用 bash 调用 aws s3 cp 或 rclone copy。
- 确保备份路径固定,比如
C:\navicat_backups\或/Users/me/navicat_backups/,Navicat 备份计划里必须设成这个目录 - 上传命令示例(以 AWS S3 为例):
aws s3 cp C:\navicat_backups\backup_$(Get-Date -Format 'yyyyMMdd_HHmm').sql s3://my-db-backup-bucket/ - 上传前建议加校验:
aws s3 ls s3://my-db-backup-bucket/ | findstr "backup_"(Windows)或aws s3 ls s3://my-db-backup-bucket/ | grep backup_(Linux/macOS) - 定时任务别用 Navicat 自带的「计划任务」触发上传——它只管备份,不等文件写完就可能开始上传,导致上传空文件或损坏文件
避免用 Navicat 的「导出向导」手动上传
有人试图在导出时选「导出为 SQL 文件」后点「上传到 FTP」,但 FTP ≠ 云存储,且现代对象存储(如阿里云 OSS、腾讯云 COS)不兼容 FTP 协议,会报错 530 Not logged in 或连接超时。
- FTP 模式仅支持传统 FTP/SFTP 服务器,不能对接
s3://、oss://、cos://等协议 - 即使配置了 WebDAV 网关,延迟高、断点续传不可靠,大备份(>100MB)极易失败
- Navicat 导出界面里的「压缩」选项对上传无帮助——压缩的是本地文件,不影响上传过程
关键细节:备份文件名必须含时间戳,否则云端会覆盖
Navicat 默认备份名是 backup.sql,如果每天跑一次,所有备份都会叫这个名字,上传到云存储时后一次必然覆盖前一次。必须通过「备份计划」中的「文件名格式」设置动态命名。
- Windows 推荐格式:
backup_%Y%m%d_%H%M%S.sql(Navicat 支持 %Y %m %d 等 strftime 格式符) - macOS/Linux 同样适用,但注意 Navicat for Mac 的路径分隔符是
/,别误写成\ - 不要依赖系统重命名脚本补救——如果 Navicat 进程崩溃,备份文件可能没写完就被重命名,上传后解压失败
时间戳格式、上传时机、协议兼容性,这三个点漏掉任何一个,备份就等于没备份。










