文档

MinIO 客户端

MinIO 客户端 mc 命令行工具为 UNIX 命令(如 lscatcpmirrordiff)提供了一个现代化的替代方案,支持文件系统和兼容 Amazon S3 的云存储服务。

mc 命令行工具旨在与 AWS S3 API 兼容,并已在 MinIO 和 AWS S3 上测试,以确保其预期的功能和行为。

MinIO 不对其他 S3 兼容服务提供任何保证,因为它们的 S3 API 实现是未知的,因此不受支持。虽然 mc 命令可能会按文档所述工作,但任何此类使用均由您自担风险。

mc 具有以下语法

mc [GLOBALFLAGS] COMMAND --help

有关支持的命令列表,请参阅命令快速参考

与 MinIO 服务器的版本对齐

MinIO 客户端与 MinIO 服务器分开版本发布。

为了获得最佳功能和兼容性,请使用与您的 MinIO 服务器版本发布时间相近的 MinIO 客户端版本。例如,MinIO 客户端的发布日期与您的 MinIO 服务器版本相同或更晚。

您可以安装比 MinIO 服务器版本更新的 MinIO 客户端版本。但是,如果 MinIO 客户端版本与 MinIO 服务器版本相差太大,您可能会因为差异而看到更多的警告或错误。例如,虽然核心的 S3 API(如复制操作 mc cp)可能保持不变,但某些功能或标志可能只有在客户端和服务器版本对齐时才可用或稳定。

快速入门

1) 安装 mc

mc 命令行工具安装到主机上。单击与主机操作系统或环境对应的选项卡

以下命令会为您的系统 PATH 添加一个临时扩展,以便运行 mc 实用程序。有关对系统 PATH 进行永久性修改的说明,请参考您的操作系统文档。

或者,通过导航到父文件夹并运行 ./mc --help 来执行 mc

64 位 Intel

curl https://dl.min.io/client/mc/release/linux-amd64/mc \
  --create-dirs \
  -o $HOME/minio-binaries/mc

chmod +x $HOME/minio-binaries/mc
export PATH=$PATH:$HOME/minio-binaries/

mc --help

64 位 PPC

curl https://dl.min.io/client/mc/release/linux-ppc64le/mc \
  --create-dirs \
  -o ~/minio-binaries/mc

chmod +x $HOME/minio-binaries/mc
export PATH=$PATH:$HOME/minio-binaries/

mc --help

ARM64

curl https://dl.min.io/client/mc/release/linux-arm64/mc \
  --create-dirs \
  -o ~/minio-binaries/mc

chmod +x $HOME/minio-binaries/mc
export PATH=$PATH:$HOME/minio-binaries/

mc --help

从 MinIO 下载页面安装

MinIO 并未将其二进制文件正式发布到常见的 Linux 仓库或包管理器(Ubuntu、RHEL、Archlinux/AUR)。MinIO 二进制文件的唯一官方来源是 MinIO 下载页面

MinIO 不建议通过包管理器安装,因为上游仓库可能会安装不正确的软件包或重命名的软件包。

所有文档都假设通过下载页面安装官方mc 客户端二进制文件,且二进制文件名未作任何更改。

brew install minio/stable/mc
mc --help

在浏览器中打开以下文件

https://dl.min.io/client/mc/release/windows-amd64/mc.exe

通过双击或在命令提示符或 PowerShell 中运行以下命令来执行该文件

\path\to\mc.exe --help

从源代码安装适用于开发者和高级用户,并且需要一个可用的 Golang 环境。请参阅如何安装 Golang

在终端环境中运行以下命令以从源代码安装 mc

go install github.com/minio/mc@latest

mc update 不支持基于源代码的安装。

2) 为兼容 S3 的服务创建别名

重要

以下示例临时禁用了 bash 历史记录,以降低身份验证凭据以明文形式泄露的风险。这是一种基本的安全措施,并不能防范所有可能的攻击媒介。关于在命令行上输入敏感信息,请遵循您操作系统的安全最佳实践。

使用 mc alias set 命令将一个兼容 Amazon S3 的服务添加到 mc配置中。

bash +o history
mc alias set ALIAS HOSTNAME ACCESS_KEY SECRET_KEY
bash -o history
  • ALIAS 替换为与该 S3 服务关联的名称。mc 命令通常需要 ALIAS 作为参数,以识别要执行操作的 S3 服务。

  • HOSTNAME 替换为 S3 服务的 URL 端点或 IP 地址。

  • ACCESS_KEYSECRET_KEY 替换为 S3 服务上用户的访问密钥和私有密钥。

用所需的值替换每个参数。如果省略 ACCESS_KEYSECRET_KEY,该命令将在命令行界面提示您输入这些值。

以下每个选项卡都包含一个特定于提供商的示例

mc alias set myminio https://minioserver.example.net ACCESS_KEY SECRET_KEY
mc alias set myS3 https://s3.{your-region-code}.amazonaws.com/endpoint ACCESS_KEY SECRET_KEY
mc alias set myGCS https://storage.googleapis.com/endpoint ACCESS_KEY SECRET_KEY

3) 测试连接

使用 mc admin info 命令来测试与新添加的 MinIO 部署的连接

mc admin info myminio

如果成功,该命令将返回有关 S3 服务的信息。如果不成功,请检查以下各项:

  • 主机可以连接到 S3 服务 URL(例如,使用 pingtraceroute)。

  • 指定的 ACCESSKEYSECRETKEY 对应于 S3 服务上的一个用户。该用户必须具有在该服务上执行操作的权限。

    对于 MinIO 部署,有关用户访问权限的更多信息,请参阅访问管理。对于其他兼容 S3 的服务,请参考该服务的文档。

命令快速参考

下表列出了 mc 命令

注意

MinIO 客户端还包括一个用于管理 MinIO 部署的管理扩展。有关更完整的文档,请参阅 mc admin

下表不包括这些命令。

命令

描述

mc alias 命令提供了一个方便的界面,用于管理 mc 可以连接并执行操作的兼容 S3 的主机列表。

mc anonymous 命令支持为一个存储桶及其内容设置或移除匿名策略。具有匿名策略的存储桶允许公共访问,客户端可以在无需身份验证的情况下执行策略授予的任何操作。

mc batch 命令允许您在 MinIO 部署上运行一个或多个作业任务。

mc cat

mc cat 命令将一个文件或对象的内容连接到另一个文件或对象。您也可以使用该命令将指定文件或对象的内容显示到 STDOUTcat 的功能与 cat 类似。

mc cp

mc cp 命令将对象复制到 MinIO 部署或从 MinIO 部署复制对象,其中源可以是 MinIO 本地文件系统。

mc diff

mc diff mc 计算两个文件系统目录或 MinIO 存储桶之间的差异。mc diff 只列出那些缺失或大小不同的对象。mc diff 比较对象的内容。

mc du

mc du 命令汇总存储桶和文件夹的磁盘使用情况。您也可以对本地文件系统使用 du,以产生与 du 命令类似的结果。

mc encrypt 命令设置、更新或禁用默认的存储桶服务器端加密(SSE)模式。MinIO 使用指定的 SSE 模式自动加密对象。

mc event 命令支持添加、删除和列出存储桶事件通知。

mc find

mc find 命令支持在 MinIO 部署上搜索对象。您也可以使用该命令在文件系统上搜索文件。

mc get

mc get 命令从目标 S3 部署下载一个对象到本地文件系统。

mc head

mc head 命令显示对象的前 n 行,其中 n 是命令指定的一个参数。

mc idp ldap 命令允许您管理第三方Active Directory 或 LDAP 身份和访问管理 (IAM) 集成的配置。

mc idp openid 命令允许您管理第三方OpenID 身份和访问管理 (IAM) 集成的配置。

mc idp ldap policy 命令显示策略与关联组或用户之间的映射关系。

mc ilm 命令管理 MinIO 部署上的对象生命周期管理规则和分层。

mc legalhold 命令设置、移除或检索对象的对象合法保留 (WORM) 设置。

mc license 命令用于处理 MinIO SUBNET 的集群注册。使用这些命令注册一个部署,显示集群当前许可证的信息,或更新集群的许可证密钥。

mc ls

mc ls 命令列出 MinIO 或其他兼容 S3 的服务上的存储桶和对象。

mc mb

mc mb 命令在指定路径创建一个新的存储桶或目录。

mc mirror

mc mirror 命令将内容同步到 MinIO 部署,类似于 rsync 实用程序。mc mirror 支持文件系统、MinIO 部署和其他兼容 S3 的主机作为同步源。

mc mv

mc mv 命令将对象从源移动到目标,例如在 MinIO 部署之间在同一 MinIO 部署的存储桶之间移动。mc mv 还支持在本地文件系统和 MinIO 之间移动对象。

mc od

mc od 命令将一个本地文件以指定的分块数量和分块大小复制到远程位置。该命令会输出上传文件所花费的时间。

mc ping

mc ping 命令对指定目标执行存活检查。

mc pipe

mc pipe 命令将来自 STDIN 的内容流式传输到目标对象。

mc put

mc put 命令将本地文件系统中的对象上传到目标 S3 部署上的存储桶。

mc rb

mc rb 命令删除 MinIO 其他兼容 S3 的服务上的一个或多个存储桶。

要仅删除存储桶的内容,请改用 mc rm

mc ready

mc ready 命令检查集群的状态以及集群是否具有的法定数量。

mc replicate 命令为 MinIO 部署配置和管理服务器端存储桶复制,包括双活复制配置重新同步

mc retention 命令为一个或多个存储桶中的对象配置一次写入多次读取(WORM)锁定设置。您还可以为存储桶设置默认对象锁定设置,所有没有明确对象锁定设置的对象都将继承存储桶的默认设置。

mc rm

mc rm 命令从 MinIO 部署上的存储桶中删除对象。要完全删除一个存储桶,请改用 mc rb

使用 mc share 命令管理用于下载和上传对象到 MinIO 存储桶的预签名 URL。

mc sql

mc sql 命令提供了一个 S3 Select 接口,用于在指定的 MinIO 部署中对对象执行 SQL 查询。

mc stat

mc stat 命令显示 MinIO 存储桶中对象的信息,包括对象元数据。您也可以用它来检索存储桶的元数据。

MinIO 客户端 mc support 命令提供工具,用于分析部署的健康状况或性能,以及运行诊断。您还可以上传生成的健康报告,以供 MinIO 工程团队进一步分析。

mc tag 命令添加、删除和列出与存储桶或对象关联的标签。

mc tree

mc tree 命令以树形格式列出 MinIO 存储桶内的所有前缀。该命令可选择性地支持列出存储桶中每个前缀下的所有对象,包括存储桶根目录。

mc undo

mc undo 命令撤销由 PUTDELETE 操作在指定路径上引起的更改。

mc update

mc update 命令自动将 mc 二进制文件更新到最新的稳定版本。

mc version 命令启用、禁用和检索 MinIO 存储桶的版本控制状态。

mc watch

mc watch 命令监视指定的 MinIO 存储桶或本地文件系统路径上的事件。对于 S3 服务,请使用 mc event add 在兼容 S3 的服务上配置存储桶事件通知。

配置文件

mc 使用一个 JSON 格式的配置文件来存储某些类型的信息,例如为每个已配置的 S3 兼容服务设置的别名

对于 Linux 和 macOS,默认的配置文件位置是 ~/.mc/config.json

对于 Windows,mc 会尝试通过特定的环境变量来构建默认的文件路径。如果某个变量未设置,mc 会移至下一个变量。如果所有尝试都失败,mc 将返回一个错误。以下列表按 mc 检查的顺序描述了每个可能的文件路径位置

  1. HOME\.mc\config.json

  2. USERPROFILE\.mc\config.json

  3. HOMEDRIVE+HOMEPATH\.mc\config.json

您可以使用 --config-dir

证书

MinIO 客户端将部署的证书和 CA 存储到以下路径:

Linux、macOS 和其他类 Unix 系统

~/.mc/certs/ # certificates
~/.mc/certs/CAs/ # Certificate Authorities

Windows 系统

C:\Users\[username]\mc\certs\ # certificates
C:\Users\[username]\mc\certs\CAs\ # Certificate Authorities

在创建一个新的别名时,MinIO 客户端会获取对等证书,计算公钥指纹,并询问用户是否接受该部署的证书。如果您决定信任该证书,MinIO 客户端会将证书添加到上面列出的证书颁发机构路径中。

注意

在测试环境中,您可以通过传递 --insecure 标志来绕过选定 MinIO 客户端命令的证书检查。

模式匹配

一些命令和标志允许进行模式匹配。启用后,模式可以包含以下任一通配符进行字符替换:

  • * 代表要匹配的任意字符串,可以在中间或末尾。

  • ? 代表单个字符。

例如,请参考以下关于通配符使用及其结果的示例。

模式

文本

匹配结果

abc*

ab

匹配

abc*

abd

不匹配

abc*c

abcd

匹配

ab*??d

abxxc

匹配

ab*??d

abxc

匹配

ab??d

abxc

匹配

ab??d

abc

匹配

ab??d

abcxdd

不匹配

全局选项

所有命令都支持以下全局选项。您也可以使用环境变量来定义其中一些选项。

--config-dir

指向一个 JSON 格式配置文件的路径,mc 使用该文件存储数据。有关 mc 如何使用配置文件的更多信息,请参阅配置文件

或者,设置环境变量 MC_CONFIG_DIR

--debug

启用控制台的详细输出。

例如,以下操作为 mc ls 命令添加了详细输出

mc --debug ls play

或者,设置环境变量 MC_DEBUG

--disable-pager, --dp

mc 版本新增:RELEASE.2024-04-29T09-56-05Z

在 CLI 中禁用 MinIO 客户端的分页功能。使用时,输出将直接打印到原始 STDOUT

--insecure

禁用 TLS/SSL 证书验证。允许与具有无效证书的服务器进行 TLS 连接。在对不受信任的 S3 主机使用此选项时请谨慎。

或者,设置环境变量 MC_INSECURE

--json

启用 JSON lines 格式的控制台输出。

例如,以下操作为 mc ls 命令添加了 JSON Lines 输出

mc --json ls play

或者,设置环境变量 MC_JSON

--no-color

禁用控制台输出的内置颜色主题。对于哑终端很有用。

或者,设置环境变量 MC_NO_COLOR

--quiet

禁止控制台输出。

或者,设置环境变量 MC_QUIET

--resolve

mc 版本新增:RELEASE.2024-08-13T05-33-17Z

创建一个自定义的 DNS 映射,以将一个主机名解析为指定的 IP 地址。

使用以下语法

--resolve HOST[:PORT]=IP

例如:

mc alias set --resolve myminio.example.com:9000=192.168.188.118 'myminio' 'https://myminio.example.com:9000' 'miniouser' 'miniosecret'

多次重复该标志以添加额外的自定义 DNS 映射。

--version

显示 mc 的当前版本。

--help
可选

在终端上显示命令用法的摘要。

English 中文