R2 迁移手册:Super Slurper、Sippy 还是 rclone
按停机方式、对象限制与验证要求选择 R2 迁移工具,并设计灰度切换和可回退流程。
编辑与核验:橙宝书编辑团队 ·
先给结论
一次性批量复制优先评估 Super Slurper;必须不停机、希望在 R2 miss 时边服务边回填则评估 Sippy;超大对象、特殊过滤或需要自主管理重试时使用 rclone 或专用工具。无论选哪条路,都不能只用 ETag 相等判定迁移成功。
详细说明
- 01Inventory
记录对象数、总字节、大小分布、元数据与大对象。
- 02Transfer
按停机模型与对象限制选择工具。
- 03Verify
比较清单并进行抽样读取和业务校验。
- 04Cut over
先灰度读流量,保留源端回退。
三条路径怎么选
| 路径 | 适合 | 关键限制 | 上线前必须验证 |
|---|---|---|---|
| Super Slurper | 从 S3、GCS 或兼容 S3 的存储一次性批量复制 | 主要面向单对象小于 1 TB;源端不被修改 | 失败清单、大对象补迁、对象数与字节数 |
| Sippy | 不能停机,先从源端响应,在 R2 miss 时同时复制 | 第一次复制后的源端更新不会自动同步;并发 miss 可能重复回源 | 热点、源端费用、变更窗口与剩余冷对象 |
| rclone / 专用工具 | 超大对象、过滤、重命名、限速、专用校验 | 团队自行承担并发、重试、断点和审计 | 重跑幂等性、失败恢复和 API 限制 |
六步迁移
固化源端基线
记录 bucket、对象数、总字节、大小分布、Content-Type、自定义元数据、缓存头、生命周期和加密要求。另列超过 1 TB 的对象。若源端仍允许写入,记录增量同步的开始时间与负责人。
选择切换模型
可接受写入冻结并一次复制,选 Super Slurper 候选;不能停机且访问可触发回填,选 Sippy 候选;有超大对象或特殊转换,拆出 rclone/专用任务。Sippy 可以与 Super Slurper 组合:前者承接在线 miss,后者补齐剩余对象。
先迁一个受控前缀
选择不含敏感数据、尺寸分布真实、可重复验证的前缀。记录开始与结束时间、源端请求与流量、R2 写入量、失败对象和重试次数。不要第一步就把生产域名切到 R2。
做五层验证
- 对象数;2. 总字节;3. key、Content-Type、缓存头与自定义元数据;4. 小、中、大对象抽样读取并比较内容摘要;5. 用真实应用执行上传、读取、范围请求和删除策略。分段上传可能让迁移后的 ETag 不同,因此 ETag 只能是线索。
灰度切换读取
先让内部或少量流量读取 R2,观测缺失对象、5xx、延迟、源端回读和业务错误。切域名前明确回退开关,保证旧配置与旧 bucket 仍可用。
关闭迁移并保留回退窗
在增量差异清零、业务检查通过和观察期结束后,停止源端写入或完成最后同步。源 bucket 的删除是独立、需人工确认的后续操作,不属于“迁移成功”这一步。
Sippy 不是持续双向同步
某个对象首次复制到 R2 后,源端对它的后续修改不会自动反映到 R2。迁移期间要么冻结该对象的源端写入,要么设计明确的增量同步与冲突规则。
完成标准与回退触发器
- 清单差异有解释,失败对象已补迁或明确排除。
- 抽样内容摘要与业务读取通过,不以 ETag 相等作为唯一标准。
- 新写入只发生在一个权威位置,或存在经过测试的双写/增量规则。
- 缺失率、错误率或源端成本超过阈值时,可以把读流量切回源端。
- 源端保留期、删除审批人和最终清理日期已记录。
迁移后按 R2 生产交付配方设置域名、CORS 与授权;选型阶段见 R2 对比页。
官方来源
这篇内容帮你完成目标了吗?
内测反馈只在当前浏览器生成,不会自动上传。