Silo 客户端(mcli / mc)
Pigsty 维护的客户端在独立归档与 Linux 软件包中以 mcli 发布;源码构建、容器入口点、配置目录、模块路径和命令语法则为兼容性保留 mc。它为文件系统和兼容 Amazon S3 的对象存储提供 ls、cat、cp、mirror、diff 等熟悉的命令。
mc 命令行工具以兼容 AWS S3 API 为目标构建。当前源码保留与 Silo、上游 MinIO 和 AWS S3 的兼容性。
Silo 项目无法保证它与每一种其他 S3 兼容服务的行为,因为各家实现存在差异。在将其他服务视为兼容对象前,请先测试工作负载依赖的操作。
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 及其商业许可/支持服务,而不是 Silo 服务。它们的命令名、协议字段、SUBNET 措辞以及 MinIO 价格/许可证链接属于上游契约,不应更名。
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
在终端显示命令用法摘要。