Silo 客户端(mcli / mc)
Pigsty 维护的客户端在独立归档与 Linux 软件包中以 mcli 发布;源码构建、容器入口点、配置目录、模块路径和命令语法则为兼容性保留 mc。它为文件系统和兼容 Amazon S3 的对象存储提供 ls、cat、cp、mirror、diff 等熟悉的命令。
mc 命令行工具以兼容 AWS S3 API 为目标构建。发布版本以 Silo 为正式验收对象,并尽最大努力兼容上游 MinIO 与其他 S3 兼容端点。
Silo 项目无法保证它与每一种其他 S3 兼容服务的行为,因为各家实现存在差异。在将其他服务视为兼容对象前,请先测试工作负载依赖的操作。
当前版本为 mcli 20260916,使用 Go 1.27.1、pkg v3.14.1 与上游 SDK 32e1f32cb176。完整行为变化见兼容性注记,Server/Console 版本边界见组件矩阵。
mc 的语法如下:
支持的命令列表参见 命令速查。
与 Silo 服务端的版本对齐
客户端与 Silo 服务端独立发布。
为获得最佳功能与兼容性,建议使用与 Silo 服务端发布时间接近的客户端版本。对上游 MinIO 的兼容属于尽最大努力;使用时请联测确切的客户端与服务端版本。
可以安装比服务端更新的客户端。但如果版本偏差过大,即使 mc cp 等核心 S3 操作仍兼容,管理功能或 flag 也可能存在差异。
快速开始
1) 安装客户端
请从下载与安装页面选择 Linux 软件包、适用于 Linux/macOS/Windows 的归档文件或客户端容器。版本化制品与校验和也可从 GitHub Releases 获取。
独立归档与 Linux 软件包安装的命令名是 mcli,容器与源码构建则保留 mc。两者是同一个客户端的别名;本文档示例使用 mc,若主机上安装的是 mcli,请直接替换命令名。
从源码构建维护分支:
Pigsty 分支刻意禁用了 mc update。请通过 Silo 下载页、Pigsty 软件仓库或 GitHub Releases升级。
当前 pgsty/mc 为脚本兼容保留 mc license 与 mc support 命令树,但所有在线 MinIO SUBNET、许可、上传、call-home 与遥测路径都已禁用。会联系这些服务的命令以稳定消息失败并返回 1;support diag、perf、profile、inspect 等本地诊断无需注册即可使用,并写入私有权限的本地文件。参见 MCLI 客户端兼容性注记。
2) 为兼容 S3 的服务创建别名
重要
以下示例会临时禁用 bash history,以降低身份认证凭据明文泄露的风险。 这是一项基础安全措施,无法覆盖所有可能的攻击向量。 对于在命令行输入敏感信息,请遵循你所用操作系统的安全最佳实践。
使用 mc alias set 命令将 Amazon S3 兼容服务添加到 mc 配置 中。
- 将
ALIAS替换为与 S3 服务关联的名称。mc命令通常要求提供ALIAS作为参数, 以标识要执行操作的 S3 服务。 - 将
HOSTNAME替换为 S3 服务的 URL endpoint 或 IP 地址。 - 将
ACCESS_KEY和SECRET_KEY替换为该 S3 服务上某个用户的 access key 和 secret key。
将各参数替换为所需值。 如果省略 ACCESS_KEY 和 SECRET_KEY,命令会在 CLI 中提示输入这两个值。
以下每个标签页都包含一个特定提供商示例:
3) 测试连接
使用 mc admin info 命令测试与新添加 Silo 部署的连接:
如果命令执行成功,会返回该 S3 服务的信息。 如果失败,请检查以下各项:
-
主机可连通 S3 服务 URL(例如使用
ping或traceroute)。 -
指定的
ACCESSKEY和SECRETKEY对应 S3 服务上的有效用户。 该用户必须有权限在该服务上执行操作。对于 MinIO 部署,参见 Access Management 获取更多用户访问权限信息。对于其他兼容 S3 的 服务,请参考该服务文档。
命令速查
下表列出了 mc 命令:
配置文件
mc 使用 JSON 格式的配置文件来存储 某些类型的信息,例如每个已配置兼容 S3 服务的 aliases。
在 Linux 和 macOS 上,默认配置文件位置为 ~/.mc/config.json。
在 Windows 上,mc 会尝试通过特定环境变量 构造默认文件路径。如果某个变量未设置,mc 会继续 尝试下一个变量。如果所有尝试都失败,mc 会返回错误。 下列列表按 mc 检查顺序说明了可能的文件路径位置:
HOME\.mc\config.jsonUSERPROFILE\.mc\config.jsonHOMEDRIVE+HOMEPATH\.mc\config.json
可使用 --config-dir
证书
MinIO 客户端将部署使用的证书和 CA 存储在以下路径:
Linux、macOS 和其他类 Unix 系统:
Windows 系统:
创建新的 alias 时,MinIO Client 会拉取对端证书、计算公钥指纹,并询问用户是否接受该部署的证书。 如果你决定信任该证书,MinIO Client 会将其添加到上述证书颁发机构路径。
说明
在测试环境中,你可以通过传入 --insecure flag,跳过部分 MinIO Client 命令的证书检查。
模式匹配
某些命令和 flag 支持模式匹配。 启用后,模式可包含以下任一通配符用于字符替换:
*表示要匹配的一串字符,可位于中间或末尾。?表示单个字符。
例如,可参考以下通配符使用示例及其结果。
| 模式 | 文本 | 匹配结果 |
|---|---|---|
abc* |
ab | 匹配 |
abc* |
abd | 不匹配 |
abc*c |
abcd | 匹配 |
ab*??d |
abxxc | 匹配 |
ab*??d |
abxc | 匹配 |
ab??d |
abxc | 匹配 |
ab??d |
abc | 匹配 |
ab??d |
abcxdd | 不匹配 |
全局选项
所有 commands 都支持以下全局选项。 你也可以使用 Environment Variables 来定义其中部分选项。
--config-dir
option
指向 JSON 格式配置文件的路径, mc 使用该文件存储数据。有关 mc 如何使用配置文件的更多信息,请参见 配置文件。
或者,设置环境变量 MC_CONFIG_DIR。
--debug
option
启用控制台详细输出。
例如,以下操作会为 mc ls 命令增加详细输出:
或者,设置环境变量 MC_DEBUG。
--disable-pager --dp
option
新增: mc
RELEASE.2024-04-29T09-56-05Z
在 CLI 中禁用 MinIO Client 的分页功能。 使用后,输出会直接打印到原始 STDOUT。
--insecure
option
禁用 TLS/SSL 证书校验。允许与证书无效的 服务器建立 TLS 连接。对不受信任的 S3 主机使用该 选项时请谨慎。
或者,设置环境变量 MC_INSECURE。
--json
option
启用 JSON lines 格式输出到 控制台。
例如,以下操作会为 mc ls 命令增加 JSON Lines 输出:
或者,设置环境变量 MC_JSON。
--no-color
option
禁用控制台输出的内置配色主题。适用于 dumb 终端。
或者,设置环境变量 MC_NO_COLOR。
--quiet
option
抑制控制台输出。
或者,设置环境变量 MC_QUIET。
--resolve
option
新增: mc
RELEASE.2024-08-13T05-33-17Z
创建自定义 DNS 映射,将 HOST 解析到指定 IP 地址。
使用以下语法:
例如:
可重复该 flag 多次以添加更多自定义 DNS 映射。
--version
option
显示 mc 的当前版本。
--help
mc-cmd
Optional
在终端显示命令用法摘要。