MinIO 平替之 RustFS 存储桶创建与删除的三种方法

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

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

前提条件

  • 一个可用的 RustFS 实例

在 UI 上创建/删除存储桶

创建存储桶

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

RustFS 控制台首页

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

在这里插入图片描述

点击创建 即可创建成功。

上传文件到存储桶

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

在这里插入图片描述

点击上传文件/文件夹

在这里插入图片描述

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

在这里插入图片描述

删除存储桶中的文件

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

在这里插入图片描述

删除存储桶

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

[图片]

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

用 mc创建/删除存储桶

前提条件

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

创建存储桶

使用 mc mb来创建存储桶:

# 创建存储桶
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上传文件到存储桶:

# 上传文件
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删除存储桶中的文件:

# 删除文件
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删除存储桶:

# 删除桶存储
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发送如下命令:

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存储桶:

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 删除存储桶:

DELETE /{bucketName} HTTP/1.1

比如用 curl发送如下命令:

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 删除存储桶中的文件:

DELETE /{bucketName}/{objectName} HTTP/1.1

比如用 curl发送如下命令:

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 实例的访问密钥。

<think>好的,我现在需要帮助用户了解如何在MinIO创建存储桶。用户的问题很明确,但作为新手可能需要详细的步骤和不同的方法。首先,我要回忆一下MinIO的相关知识,并结合提供的引用内容来组织回答。 根据引用内容,特别是引用[2]、[3]、[4]、[5],MinIO支持多种客户端和编程语言来创建存储桶,比如Python、Java,还有命令行工具。用户可能需要多种方法的介绍,但需要先确认他们使用的环境。不过用户的问题没有具体说明,所以应该涵盖常用的几种方式,如Python客户端、Java SDK、命令行以及Web界面。 接下来,我需要确保回答的结构清晰,分步骤说明每种方法。同时,引用中的信息需要正确应用,比如Python中的minio库的使用,Java中SDK版本的问题(如7.1.0版本创建文件夹),但这里用户是创建存储桶,可能不需要特别强调版本,但要注意引用中的相关信息是否正确相关。 还要注意用户可能的潜在需求,比如权限设置、存储桶命名规则等,这些在创建存储桶时也很重要,应该包含在注意事项中。此外,根据引用[3],MinIO兼容S3 API,所以可以提到使用AWS SDK的方法,但可能用户更关心原生的MinIO方法。 需要检查每个步骤的准确性,比如Python代码示例是否正确,是否需要导入库,权限处理等。同时,确保代码示例中的参数如endpoint、access key、secret key是占位符,提醒用户替换。 最后,生成相关问题时要基于创建存储桶的可能后续步骤,比如删除、检查存在、设置策略等,参考引用中的内容,比如引用[1]关于删除,引用[5]中的存储桶操作API。 现在需要组织这些信息,确保回答符合用户的需求,结构清晰,分点说明不同方法,注意事项,并附上相关问题。</think>### 如何在 MinIO创建存储桶MinIO 提供多种方式创建存储桶,涵盖命令行工具、编程语言 SDK(如 Python、Java)和 Web 管理界面。以下是具体实现方法: --- #### 一、使用 MinIO 命令行工具(CLI) 1. **安装 MinIO 客户端** 若未安装,可通过以下命令下载并配置: ```bash wget https://dl.min.io/client/mc/release/linux-amd64/mc chmod +x mc mv mc /usr/local/bin/ ``` 2. **添加 MinIO 服务器别名** ```bash mc alias set myminio http://localhost:9000 ACCESS_KEY SECRET_KEY ``` 3. **创建存储桶** ```bash mc mb myminio/my-bucket ``` - `myminio`:配置的服务器别名 - `my-bucket`:自定义存储桶名称(需符合 DNS 命名规范,如全小写、无特殊符号) --- #### 二、使用 Python 客户端 1. **安装 MinIO Python 库** ```bash pip install minio ``` 2. **代码示例** ```python from minio import Minio from minio.error import S3Error client = Minio( "localhost:9000", access_key="ACCESS_KEY", secret_key="SECRET_KEY", secure=False # 若使用 HTTPS 则设为 True ) try: client.make_bucket("my-bucket") print("存储桶创建成功") except S3Error as e: print(f"创建失败: {e}") ``` - **权限设置**:若需控制访问策略,可通过 `set_bucket_policy()` 配置[^5]。 --- #### 三、使用 Java SDK 1. **添加 Maven 依赖** ```xml <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.5.7</version> </dependency> ``` 2. **代码示例** ```java import io.minio.BucketExistsArgs; import io.minio.MakeBucketArgs; import io.minio.MinioClient; import io.minio.errors.MinioException; public class CreateBucket { public static void main(String[] args) { try { MinioClient client = MinioClient.builder() .endpoint("http://localhost:9000") .credentials("ACCESS_KEY", "SECRET_KEY") .build(); boolean exists = client.bucketExists(BucketExistsArgs.builder() .bucket("my-bucket").build()); if (!exists) { client.makeBucket(MakeBucketArgs.builder() .bucket("my-bucket").build()); System.out.println("存储桶创建成功"); } } catch (MinioException e) { System.err.println("错误: " + e.getMessage()); } } } ``` --- #### 四、通过 Web 管理界面 1. 登录 MinIO 控制台(默认地址:`http://localhost:9000`)。 2. 点击右侧 **Create Bucket** 按钮。 3. 输入存储桶名称并设置版本控制、加密等选项[^3]。 --- ### 注意事项 1. **命名规范**:存储桶名称需全局唯一,且符合 DNS 标准(3-63 字符,仅小写字母、数字、连字符)。 2. **权限控制**:创建后可通过策略(Policy)限制访问权限[^5]。 3. **区域设置**:分布式部署时需指定区域(Region)参数。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值