欢迎光临
我们一直在努力

RustFS 不只是 S3:用 SFTP/FTPS 把对象存储当文件服务器

封面

RustFS 首页:面向 AI 数据中心的高性能 S3 兼容对象存储

一句话定位:RustFS 是面向 AI 时代、从零原生打造的高性能分布式对象存储,100% 兼容 S3 API,Apache 2.0 协议,底层用 Rust 构建,可作为 MinIO 的 drop-in 替代方案。

目录

  • 问题背景:不是所有工具都懂 S3
  • 访问平面本来就是多协议的
  • SFTP/FTPS 解决什么
  • 客户端怎么接
  • 边界与适用场景
  • 总结与下一步

  • 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 实例后面是同一份对象数据,前面可以同时开着好几类协议入口,应用按自己最顺手的方式连。

    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

    RustFS 协议支持矩阵

    从 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 升级到含 SFTP/FTPS 能力的版本(alpha.79 及之后);
  • 按官方文档在部署里启用对应协议端点;
  • 拿一台只认 SFTP 的遗留机器做联通测试,验证传进来的文件 S3 侧能读到;
  • 给 SFTP/FTPS 访问单独配最小权限的 access key,和 S3 主凭证分开。

  • 技术文档: RustFS 技术文档- 提供架构、安装指南和 API 参考。

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

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

    赞(0)
    未经允许不得转载:171主机测评 » RustFS 不只是 S3:用 SFTP/FTPS 把对象存储当文件服务器
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址