各家对象存储的协议兼容度
国内主流对象存储对 S3 协议的兼容程度不同:腾讯云 COS 与华为云 OBS 提供 S3 兼容接口,基于 S3 的工具链迁移成本较低;阿里云 OSS 以自有 API 为主,官方提供 SDK 与 ossutil。跨云同步普遍用 rclone 这类多后端工具,一次配置即可对接多家,也便于把迁移脚本沉淀下来。
基本信息
| 协议兼容 | COS 与 OBS 提供 S3 兼容接口;OSS 以自有 API 为主,官方 SDK 与 ossutil 是首选 |
|---|---|
| 三方工具 | rclone 支持多种对象存储后端,可在三家之间直接同步 |
| 认证方式 | 长期 AccessKey/SecretKey 或临时凭证,生产建议用子账号与最小权限 |
| 容易被忽略的差异 | ETag 与 MD5 语义、分片上传规则、权限模型、对象键大小写与特殊字符规则 |
| 典型场景 | 跨云备份、数据迁移、CI 产物分发、静态资源托管 |
迁移时的主要差异
| 维度 | 差异表现 | 处理方式 |
|---|---|---|
| ETag 语义 | 分片上传后 ETag 不再等于文件的 MD5 | 校验改用内容摘要或分片校验和,不要拿 ETag 当 MD5 比对 |
| 对象键规则 | 大小写敏感性与允许字符各家不一致 | 迁移前统一命名规范,避免依赖大小写区分对象 |
| 权限模型 | 各家策略语法不完全一致,S3 策略无法原样套用 | 用最小权限子账号,逐条验证策略实际生效 |
| 分片上传 | 最小分片大小与并发限制不同 | 按目标端限制设置分片大小,重试要能续传 |
| 存储类别 | 各有自己的低频与归档类型 | 迁移后按目标端规则重建生命周期策略 |
典型使用场景
- 跨云备份:同一份数据同时落两家,避免单一云厂商故障导致数据不可达
- 数据迁移:从一家整体迁到另一家,迁移前先做小批量一致性验证
- CI 产物分发:构建结果同时推到多个源站,供不同 CDN 使用
- 第三方 SaaS 只支持 S3 接口,但数据需要落在国内存储上
- 成本优化:对比存储费用与流出流量价格后,把冷数据迁到更合适的存储类别
rclone 多后端配置思路
rclone 多后端配置思路
; rclone config 生成,或直接写入 rclone.conf
[cos]
type = s3
provider = TencentCOS # 华为 OBS 用 HuaweiOBS,其他厂商用 Other
endpoint = cos.ap-guangzhou.myqcloud.com
access_key_id = AKIDxxxx
secret_access_key = xxxx
; 同步与校验
rclone check cos:bucket/backup oss:bucket/backup --size-only # 先比对清单差异
rclone sync /data cos:bucket/backup --progress # 单向镜像同步跨云同步先小批量验证一致性(校验和、权限、大小写敏感),再全量迁移。验证阶段把 rclone check 的输出留档,全量迁移后才有可对比的基线,否则出问题时说不清是迁移造成的还是原本如此。
rclone sync 是单向镜像语义:目标端多出的文件会被删除。用它做「只增不删」的备份会误清目标端历史数据,这类场景要用 copy 而不是 sync。