操作 MinIO 平替之 RustFS 存储桶的三种方法

MinIO 是全球知名的对象存储系统,开源免费,但是最近两年 MinIO 在开源版本上删除了一些对用户很重要的功能(比如 UI 操作),引发了社区、用户的不满。为此,国内研发团队基于 Rust 自研了一套 MinIO 平替 ------ RustFS。RustFS 完全兼容 S3,是 MinIO 的平替。目前 RustFS 已经开源。本文分享 RustFS 存储桶操作的三种方法。

存储桶是 RustFS 存储数据的最基本单元,可以通过 UI、mc(MinIO Client)或 API 来对存储桶进行操作(创建或删除)。

前提条件

  • 一个可用的 RustFS 实例

在 UI 上创建/删除存储桶

创建存储桶

登录 RustFS UI 控制台,在首页,左上角,选择创建存储桶

输入存储桶名称,注意存储桶的命名规则:

点击创建 即可创建成功。

上传文件到存储桶

选择要上传文件的存储桶,在存储桶顶部可以看到上传文件/文件夹 、新建目录 、新建文件 按钮:

点击上传文件/文件夹

选择上传文件上传文件夹,然后点击开始上传即可:

删除存储桶中的文件

如要删除存储桶中的文件,选中文件,然后选择右上角的删除选中项 :

删除存储桶

在存储桶列表页面,找到要删除的存储桶,选择最右侧的删除 按钮,即可删除存储桶:

注意 :需要将存储桶下面的数据删除才可以删除存储桶,否则无法直接删除存储桶。

用 mc创建/删除存储桶

前提条件

  • 安装好了 MinIO Client(可用 mc --version确认)
  • mc alias 配置好存储系统别名

创建存储桶

使用 mc mb来创建存储桶:

bash 复制代码
# 创建存储桶
mc mb rustfs/bucket-creation-by-mc
Bucket created successfully `rustfs/bucket-creation-by-mc`.
# 确认存储桶
mc ls rustfs/bucket-creation-by-mc

在 UI 上可以看到 bucket-creation-by-mc已创建出:

上传文件到存储桶

使用 mc cp上传文件到存储桶:

bash 复制代码
# 上传文件
mc cp 1.txt rustfs/bucket-creation-by-mc
/tmp/1.txt:            13 B / 13 B  ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓  61 B/s 0s%

# 文件查看
mc ls rustfs/bucket-creation-by-mc
[2025-08-01 10:01:08 CST]    13B 1.txt

在 UI 上可以看到 bucket-creation-by-mc存储桶下面有一个 1.txt文件:

删除存储桶中的文件

使用 mc rm删除存储桶中的文件:

bash 复制代码
# 删除文件
mc rm rustfs/bucket-creation-by-mc/1.txt
Removed `rustfs/bucket-creation-by-mc/1.txt`.

# 删除确认
mc ls  rustfs/bucket-creation-by-mc/1.txt

在 UI 上可以看到 bucket-creation-by-mc 存储桶下面已经没有了 1.txt文件:

删除存储桶

mc rb删除存储桶:

vbnet 复制代码
# 删除桶存储
mc rb rustfs/bucket-creation-by-mc
Removed `rustfs/bucket-creation-by-mc` successfully.

# 删除确认
mc ls rustfs/bucket-creation-by-mc
mc: <ERROR> Unable to list folder. Bucket `bucket-creation-by-mc` does not exist.

在 UI 上也可以看到 bucket-creation-by-mc已经不存在。

用 API 创建/删除存储桶

创建存储桶

使用如下 API 可创建存储桶:

复制代码
PUT /{bucketName} HTTP/1.1

比如用 curl发送如下命令:

css 复制代码
curl --location --request PUT 'http://12.34.56.78:9000/bucket-creation-by-api' \
--header 'X-Amz-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' \
--header 'X-Amz-Date: 20250801T023519Z' \
--header 'Authorization: AWS4-HMAC-SHA256 Credential=H4xcBZKQfvJjEnk3zp1N/20250801/cn-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=c2fb2ba5199a30ebcfa9976d0f35000ba274da3701327957e84ea0f3920288f2'
可以在 UI 上确认 bucket-creation-by-api创建成功。

注意 :需要将 Credential=H4xcBZKQfvJjEnk3zp1N 中的值替换为自己 RustFS 实例的访问密钥。

上传文件到存储桶

使用如下 API 上传文件到存储桶:

复制代码
PUT /{bucketName}/{objectName} HTTP/1.1

比如用如下 curl命令上传 password.txtbucket-creation-by-api存储桶:

css 复制代码
curl --location --request PUT 'http://12.34.56.78:9000/bucket-creation-by-api/password.txt' \
--header 'Content-Type: text/plain' \
--header 'X-Amz-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' \
--header 'X-Amz-Date: 20250801T024840Z' \
--header 'Authorization: AWS4-HMAC-SHA256 Credential=H4xcBZKQfvJjEnk3zp1N/20250801/cn-east-1/s3/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-content-sha256;x-amz-date, Signature=b7d8dc29ee34dfdf1f3e9e8e069892a8936f478586e7a2c90cf34f5b86d3a2dc' \
--data-binary '@/path/to/password.txt'

可在 UI 上确认 password.txt文件已上传至 bucket-creation-by-api存储桶:

注意 :需要将 Credential=H4xcBZKQfvJjEnk3zp1N 中的值替换为自己 RustFS 实例的访问密钥。

删除存储桶

使用如下 API 删除存储桶:

sql 复制代码
DELETE /{bucketName} HTTP/1.1

比如用 curl发送如下命令:

css 复制代码
curl --location --request DELETE 'http://12.34.56.78:9000/bucket-creation-by-api' \
--header 'X-Amz-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' \
--header 'X-Amz-Date: 20250801T024406Z' \
--header 'Authorization: AWS4-HMAC-SHA256 Credential=H4xcBZKQfvJjEnk3zp1N/20250801/cn-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=d0f6addf09fffd7eef75191e9d3209bb7188e6b004e9707238fc60ad7033edae'
可在 UI 确认 bucket-creation-by-api 已被删除。

注意 :需要将 Credential=H4xcBZKQfvJjEnk3zp1N 中的值替换为自己 RustFS 实例的访问密钥。

删除存储桶中的文件

使用如下 API 删除存储桶中的文件:

sql 复制代码
DELETE /{bucketName}/{objectName} HTTP/1.1

比如用 curl发送如下命令:

css 复制代码
curl --location --request DELETE 'http://12.34.56.78:9000/bucket-creation-by-api/password.txt' \
--header 'Content-Type: text/plain' \
--header 'X-Amz-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' \
--header 'X-Amz-Date: 20250801T030822Z' \
--header 'Authorization: AWS4-HMAC-SHA256 Credential=H4xcBZKQfvJjEnk3zp1N/20250801/cn-east-1/s3/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-content-sha256;x-amz-date, Signature=1ee63bb0b699598602b2fdbd013e355a57bcb9991307a8ad41f6512e8afebf3a' \
--data-binary '@/Users/jhma/Desktop/password.txt'
可在 UI 确认 bucket-creation-by-api下的 password.txt文件已被删除。

注意 :需要将 Credential=H4xcBZKQfvJjEnk3zp1N中的值替换为自己 RustFS 实例的访问密钥。

相关推荐
苏鑫的博客13 分钟前
Rust 代理抓包工具 Lynx Proxy 开源之路
rust
Hello.Reader2 小时前
Rust → WebAssembly 的性能剖析全指南
前端·rust·wasm
SoniaChen332 小时前
Rust基础-part6-数组与切片-字符串
后端·rust·web3
AWS官方合作商12 小时前
Amazon RDS for MySQL成本优化:RDS缓存降本实战
数据库·mysql·aws
AWS官方合作商14 小时前
AWS IAM:安全访问管理的核心指南
网络安全·云计算·aws
Linux运维技术栈15 小时前
多云场景实战:华为手机 QR 码绑定与 AWS云服务器终端登录全解
aws·微软云·or
林太白18 小时前
Rust-搞定图片上传功能
前端·后端·rust
dongowu20 小时前
Rust 大白话- <所有权、借用、引用>
rust
AWS官方合作商1 天前
AWS Blockchain Templates:快速部署企业级区块链网络的终极解决方案
区块链·aws