用 rclone 把现有 S3/MinIO 数据同步到 RustFS

有套 MinIO 跑了两年,里面是数据库备份和客户交付物。你想在 RustFS 上再做一份异地副本,万一主存储出问题能拉得回来。不想写迁移脚本,也不想引入新组件------rclone 一个二进制就够。

RustFS 是 100% S3 兼容的,rclone 的 S3 后端对着自定义 endpoint 直接用,不用等特殊适配。下面是一份可复制的配置。


1. 配置 rclone 连 RustFS

rclone 对自建 endpoint 默认走 path-style 寻址,配上 RustFS 的地址和凭证即可:

复制代码
rclone config create rustfs s3 \
  provider=Other \
  endpoint=http://rustfs.internal:9000 \
  access_key_id=rustfsadmin \
  secret_access_key=rustfsadmin \
  acl=private

provider=Other 告诉 rclone 这是兼容 S3 的第三方,endpoint 指向 RustFS 的 9000 端口。另一端(你的 MinIO 或源 S3)同样建一个 remote,比如叫 src


2. 先 dry-run,再全量

任何迁移第一步都是干跑,确认两边能通、清单对得上:

复制代码
rclone copy src:my-bucket rustfs:my-bucket --dry-run -P
# 确认无误,去掉 --dry-run 跑全量
rclone copy src:my-bucket rustfs:my-bucket -P

copy 是单向、不删目标;想让目标严格等于源(多出的删掉),用 sync------但 sync 会删目标里源没有的对象,生产务必先 --dry-run 看清楚要删什么


3. 不可变备份:叠加对象锁

如果这份副本是用来防勒索、防误删的,打开 RustFS 的对象锁(WORM),再用 rclone 的 --immutable 让备份对象禁止覆盖和删除:

复制代码
# 目标桶先开合规对象锁(保留 365 天),见 RustFS 对象锁文档
rclone copy src:my-bucket rustfs:my-bucket --immutable -P

--immutable 会让 rclone 跳过已存在对象、且要求目标支持不可变,正好和对象锁配合出"写一次、锁一年"的防篡改副本。代价是锁定期内对象占着空间、不能改,适合合规归档而非热数据。


4. 定时增量:cron 一行

全量跑完之后,日常用增量同步保活。rclone 对大桶开 --fast-list 少打 LIST 请求,调 --transfers/--checkers 提并发:

复制代码
# 每天 03:00 增量同步(--ignore-existing 跳过已传,省流量)
0 3 * * * rclone copy src:my-bucket rustfs:my-bucket \
  --fast-list --ignore-existing --log-file /var/log/rclone-backup.log -P

RustFS 的版本控制如果开着,rclone 覆盖同名对象会留历史版本,误删也能回退------但副本侧开了版本控制,存储会随版本涨,记得配生命周期清冷版本。


5. 边界:sync 会删、网络要算

  • sync 是破坏性的 :它让目标等于源,源没有的对象会被删。备份场景宁可用 copy + --ignore-existing,或 sync 前先 --dry-run
  • 网络与凭证 :跨机房同步走公网要算带宽和费用;RustFS 默认账号 rustfsadmin/rustfsadmin 暴露即裸奔,remote 里的密钥生产用专用账号。
  • 大桶调优 :对象上亿时单靠默认参数会慢,--fast-list + 调 --transfers 是必要的,别指望一条命令秒完。

  • 这些都是 rclone + 任意 S3 存储的通用功课,不是 RustFS 的坑。官方文档和 rclone 手册都公开,动手前翻一遍。


    6. 总结与下一步

    • RustFS 是 S3 兼容的,rclone 的 S3 后端配 endpoint 直接用,不用特殊适配。
    • 流程:config 建 remote → copy --dry-run 验证 → copy 全量 → --immutable + 对象锁出不可变备份 → cron 增量。
  • 边界:sync 会删目标、跨机房算带宽、大桶要 --fast-list 调并发。

  • 下一步:按第 1 节建 rustfs remote,挑一个非生产桶跑 rclone copy --dry-run 看清单,通了再去掉 --dry-run 全量同步。


    以下是深入学习 RustFS 的推荐资源:RustFS

    官方文档: RustFS 官方文档- 提供架构、安装指南和 API 参考。

    GitHub 仓库: GitHub 仓库 - 获取源代码、提交问题或贡献代码。

    社区支持: GitHub Discussions- 与开发者交流经验和解决方案。

    意见反馈:GitHub Issues

相关推荐
知行EDI7 天前
知行之桥 S3 端口或归档中配置阿里云 OSS 使用指南
阿里云·edi·oss·s3
分布式存储与RustFS8 天前
RustFS 多协议接入全景:S3 之外,Swift/Keystone 与 SFTP/FTPS 怎么选
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
分布式存储与RustFS8 天前
在 Kubernetes 上用 RustFS Operator 给 Tenant 开 KMS 加密:spec.encryption 实战
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
分布式存储与RustFS9 天前
RustFS 1.0 GA 前的生产验收清单:从 rc.1 到 GA 该准备什么
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
分布式存储与RustFS10 天前
RustFS 1.0.0-rc.5 发布:GA 前的最后一次大版本打磨
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
分布式存储与RustFS11 天前
把 RustFS 当 ClickHouse 的 S3 存储盘:冷热分层落对象存储
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
SomeBottle12 天前
【小记】图片托管从又拍云迁移到腾讯云 EO + COS(兼容图片处理参数)
python·计算机网络·学习笔记·对象存储·cdn·折腾
分布式存储与RustFS15 天前
用 RustFS 原生 CLI `rc` 管对象存储:从 alias 到 cp 的完整玩法
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
分布式存储与RustFS15 天前
用 RPM/DEB 包在 Linux 上安装 RustFS:生产落地第一步
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
分布式存储与RustFS16 天前
RustFS 生命周期与分层:让冷数据自动搬家、热数据自己回家
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准