GoodSync 中文文档 下载 App

云存储同步特殊问题——OAuth 过期、API 限流、对象存储重命名

OAuth Token 过期

现象

GoodSync 日志中出现:

Token expired, refreshing...
Refresh token also expired
Need to re-authorize

原因

OAuth 授权机制中:

GoodSync 的自动刷新机制能覆盖 99% 的场景。但 Refresh Token 过期后,必须重新授权。

解决方案

  1. GoodSync 主界面 → Job → 选中使用该云存储的作业
  2. 右键端点 → Account → Re-Authorize(或类似选项)
  3. 浏览器弹出云服务商的授权页面 → 重新允许
  4. GoodSync 获得新的 Access Token + Refresh Token

Refresh Token 为什么会过期

云服务商Refresh Token 有效期说明
Google长期有效(但账户安全事件时可能被撤销)最稳定
Dropbox与账户安全策略相关可能定期失效
OneDrive与账户安全策略相关可能失效
Box.com长期有效稳定

某些情况下(如修改了账户密码、账户触发安全事件),所有 Refresh Token 会被云服务商主动撤销——此时 GoodSync 无法自动恢复,必须手动重新授权。

API 限流

检测

GoodSync 日志中出现:

HTTP 429 Too Many Requests
Rate Limited
Throttled
SlowDown(S3 特有)

GoodSync 的自动应对

GoodSync 内置了指数退避重试:

用户侧的缓解措施

  1. 降低并行线程数:Options → Advanced → Parallel Threads,云存储建议不超过 4
  2. 增加同步间隔:实时同步改为每 15-30 分钟计划任务
  3. 拆分大目录:把包含数万文件的大目录拆分成多个小目录,分别用不同作业同步
  4. 联系云服务商:在 S3/Azure 上可以联系支持团队提高默认配额

各云服务商的典型限流阈值

服务默认请求率备注
AWS S3每桶 3500 PUT + 5500 GET /秒可申请提高到 10000+
Google Drive10,000,000 请求/天通常够用
Dropbox500 请求/秒/应用对商业 API 应用可能紧张
OneDrive4-8 请求/秒/应用较严格,需要保守配置
Backblaze B2有速率限制具体值见 B2 文档

对象存储重命名的临时残留

问题

S3/Azure/B2 等对象存储不支持原地重命名——GoodSync 执行「复制到新键名 + 删除旧键名」。在复制成功、删除旧键之前,新旧两个对象会同时存在。

正常流程:

1. PUT 新键名的对象  → 成功
2. DELETE 旧键名     → 成功
3. 结果:只剩新键名

异常情况:

1. PUT 新键名的对象  → 成功
2. 同步中断(崩溃/断电)
3. 结果:新旧两个对象同时存在

GoodSync 的自动清理

GoodSync 有专门的「孤儿对象清理」机制:

严重情况:Key 冲突

如果新旧对象的 Key 前缀包含相同路径,可能导致后续同步逻辑混乱。GoodSync 在这种情况下会强制全量重新分析来修正状态。

时间戳在云存储中的兼容性

现象

文件内容没变,但 GoodSync 每次同步都要重新上传。检查 Analyze 结果显示:时间戳不一致。

原因

云存储的时间戳处理方式与本地文件系统不同:

解决方案

  1. 在 GoodSync 作业中开启「时间戳翻译」(默认已开启)
  2. 把 Analysis Mode 切换为「MD5 + Quick Hybrid」
  3. 全量重新 Analyze 一次(不执行同步),让 GoodSync 重建内部状态文件
  4. 检查两端设备的系统时间是否一致(相差不应超过 1 分钟)

云存储的特殊限制

文件大小限制

同步前确认目标云存储的单文件上限。超过限制的文件会被 GoodSync 跳过并记录在日志中。

路径长度限制

GoodSync 在同步前会检查,超过限制的文件会被跳过。

不支持的功能

功能云存储限制
块级传输仅 GoodSync Storage 原生支持;其他云存储 GoodSync 只能走文件级传输
符号链接云存储不支持
权限属性同步云存储的 ACL 模型与本地不同,GoodSync 不做深度映射
硬链接云存储不支持
MTP 协议云存储完全不涉及

通用云存储对接检查清单