You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Digital Ocean Spaces资产同步至Staging环境实现方案咨询

DO Spaces 跨桶资产自动同步方案

按实现简便度、运维成本从低到高排序,以下方案都满足「仅同步prod桶新上传文件、不同步删除操作」的核心需求,比VPS部署rclone+cron的方案更易维护:

1. 零代码原生跨桶复制(优先推荐)

同区域的DO Spaces已经内置对象复制规则,不需要部署任何额外工具、写任何代码:

  • 进入prod media存储桶的设置页,找到对象复制配置项
  • 新建复制规则,目标选择同区域的stage media存储桶
  • 规则范围选择覆盖整个存储桶,打开「继承源对象权限」配置,关闭「同步删除标记」「同步对象删除操作」的开关
  • 配置提交后所有新上传到prod桶的文件会自动异步复制到stage桶,同步延迟通常在1分钟以内,同区域复制不产生额外流量或存储请求费用。

注意:该方案仅支持两个桶在同一DO区域,跨区域场景选择下面的方案。

2. 事件驱动无服务器方案(跨区域/自定义逻辑适用)

如果两个桶不在同一区域,或者需要在同步时加自定义处理(比如同步时自动压缩测试用图片、裁剪不同尺寸),用Spaces事件通知搭配DO Functions实现:

  • 给prod media桶配置事件通知,触发条件仅勾选「对象创建完成」(对应s3:ObjectCreated:*事件),通知目标绑定你部署的DO Function
  • Function内直接用S3兼容SDK编写复制逻辑:拿到事件推送的新对象key后,调用copyObject接口把对应文件从prod桶复制到stage桶即可,核心逻辑不到20行
  • 该方案是实时触发,新文件上传后秒级完成同步,不需要常驻服务器,免费额度足够覆盖绝大多数中小站点的上传量,成本几乎可以忽略,且全程不需要处理对象删除相关的事件逻辑,完全匹配需求。

3. 优化版rclone方案(习惯用现有工具链适用)

如果更倾向用熟悉的rclone工具,也可以不用在业务VPS上部署定时任务,同时优化执行效率:

  • 可以把rclone定时任务部署在DO App Platform的最小规格Worker上,或者单独用最低配的Droplet运行,完全不占用业务服务器资源
  • 同步时增加参数缩小扫描范围,避免每次全量遍历桶内文件,参考命令:
rclone sync do-prod:prod-media-bucket do-stage:stage-media-bucket --max-age 24h --ignore-existing --no-traverse

参数说明:

  • --ignore-existing:跳过stage桶已经存在的文件,不会覆盖预发布环境单独上传的测试资产
  • --no-traverse:不执行全桶对象遍历,仅核对指定时间范围内的新文件,大幅减少API调用消耗
  • 不要添加--delete相关参数,就不会同步prod端的文件删除操作,cron执行间隔设为30-60分钟即可满足预发布环境的使用需求。

内容的提问来源于stack exchange,提问作者wawa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 22:30:57