

一句话定位:RustFS 是面向 AI 时代、从零原生打造的高性能分布式对象存储,100% 兼容 S3 API,Apache 2.0 协议,底层用 Rust 构建,可作为 MinIO 的 drop-in 替代方案。
目录
1. 问题背景:不是所有工具都懂 S3
很多团队把 RustFS 当 S3 用,写代码走 AWS SDK,脚本走 aws s3 或 rclone,这没问题。但总有一些"老伙计"只认 FTP/SFTP:一台老 CI 机器上的发布脚本、FileZilla 里手动拖文件的同事、某个只支持 SFTP 拉取产物的部署代理。为了它们去改 SDK、加一层 S3 网关,成本不低。
我遇到过最实际的一种情况:一个数据入库流程,上游只肯用 SFTP 把文件推过来,让你"给个 FTP 地址"。这时候如果存储层能直接暴露 SFTP,就不用再架一台 vsftpd 然后把文件二次搬进对象存储。
RustFS 的访问平面从设计上就不止 S3 一个协议。
2. 访问平面本来就是多协议的
在 RustFS 的能力矩阵里,"访问平面"本来就被定义为多协议接入(Access plane: S3 Multi-Protocol Access)。除了主接口 S3,官方在 1.0.0-alpha.79 的修补版本里明确加入了 FTPS 与 SFTP 支持;README 也确认了原生的 OpenStack Swift API 与 Keystone 认证。社区讨论里还提到 WebDAV、AMQP 事件通知等接入面。
换句话说,一个 RustFS 实例后面是同一份对象数据,前面可以同时开着好几类协议入口,应用按自己最顺手的方式连。

3. SFTP/FTPS 解决什么
S3 很强,但它不是万能接口。下面几类场景,SFTP/FTPS 比改 S3 SDK 更省事:
- 人肉传文件:同事用 FileZilla 拖一个几百 MB 的数据包进来,让他装 AWS CLI、配 endpoint、学 aws s3 cp,不如直接给个 SFTP 地址。
- 遗留脚本/CI:很多发布、入库、对账脚本当年就是按 sftp put / lftp 写的,能不动就不动。
- 合规传输:FTPS 在 FTP 上加了 TLS,满足一部分对传输加密有硬性要求的场景,不用自己在前端再套一层。
关键是同一份数据。通过 SFTP 传进来的文件,S3 SDK 照样能读;反过来 S3 写入的对象,SFTP 客户端也能拉。不存在"FTP 区"和"对象区"两张皮。
4. 客户端怎么接
启用 SFTP/FTPS 后,原本用 FTP/SFTP 的客户端几乎零改动,把主机和密钥换成 RustFS 暴露的端点即可。下面是标准客户端用法(端口以你的部署配置为准):
sftp -P <sftp-port> <access_key>@<rustfs-host>
lftp -u <access_key>,<secret_key> ftp://<rustfs-host>:<ftps-port> \\
-e "put dataset.csv -o /bucket/dataset.csv; bye"
curl -T report.pdf \\
ftp://<rustfs-host>:<ftps-port>/bucket/report.pdf \\
–user <access_key>:<secret_key> –ftp-ssl
同一份数据,S3 侧用 aws-cli 也能直接看到:
aws –endpoint-url http://<rustfs-host>:9000 \\
–region us-east-1 s3 ls s3://bucket/ –recursive

从 S3 应用、SFTP 客户端、FTPS 客户端到 Swift 应用,连的是同一个 RustFS 访问平面,落的是同一份对象。这正是"多协议"比"多套存储"省心的地方。
5. 边界与适用场景
把协议能力说清楚,也把边界说清楚:
| 协议广度 | S3 / SFTP / FTPS / OpenStack Swift+Keystone | 具体启用方式与端口以官方文档/部署配置为准 |
| 版本起点 | SFTP、FTPS 自 alpha.79 起提供 | 老版本需升级到含该能力的版本 |
| 数据一致性 | 各协议看到同一份对象 | 大文件传输建议校验大小/ETag |
| 安全 | FTPS 走 TLS 加密传输 | 凭证仍走 RustFS 的 access/secret 体系 |
几个判断原则:
- 新写的应用、能用 SDK 的,优先 S3——工具链最全、生态最成熟。
- 只认 FTP/SFTP 的遗留系统、人工传文件,直接用 SFTP/FTPS,别为它改架构。
- 已有 OpenStack Swift / Keystone 体系的,用原生 Swift 接口对接,少一层适配。
边界还有一条:各协议共享同一套访问凭证与权限模型,开 SFTP 不等于放松鉴权,该上的强密钥和最小权限策略一样要上。
6. 总结与下一步
RustFS 的访问平面是多协议的,S3 之外还能直接当 SFTP/FTPS 服务器用。对"只认 FTP"的遗留系统和人肉传文件场景,这比架独立 FTP 再二次搬运干净得多——同一份对象,多种入口。
下一步可以直接做:
技术文档: RustFS 技术文档- 提供架构、安装指南和 API 参考。
GitHub 仓库: GitHub 仓库 – 获取源代码、提交问题或贡献代码。
社区支持: GitHub Discussions- 与开发者交流经验和解决方案。




