MinIO Client(mc)完整使用教程

以下按 MinIO Client(MinIO 的命令行客户端) 介绍。它可以连接 MinIO,也可以连接兼容 S3 API 的对象存储。文中的 myminio 是 alias 示例名,bucket 是存储桶名。

mc 也可能指 Midnight Commander 文件管理器;本文沿用前文语境,讲的是 MinIO Client。

1. 安装与确认

Linux x86-64 示例:

curl -O https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/

确认安装:

mc --version
mc --help
mc cp --help

如果使用其他操作系统或 CPU 架构,请从 MinIO 官方下载对应版本。

2. 配置连接(alias)

一个 alias 表示一组对象存储连接信息:

mc alias set myminio https://minio.example.com ACCESS_KEY SECRET_KEY

本机开发环境也可能使用:

mc alias set local http://127.0.0.1:9000 minioadmin minioadmin

常用 alias 管理:

mc alias list
mc alias set myminio https://minio.example.com ACCESS_KEY SECRET_KEY  # 修改或新增
mc alias remove myminio

连接测试:

mc ls myminio
mc admin info myminio    # 需要具备相应管理权限

安全提示: 不要把真实密钥写进脚本、工单或共享终端历史记录。使用权限最小化的账号,并保护本机 mc 配置文件。

3. 路径规则

常见对象路径格式:

alias/bucket/对象路径

例如:

myminio/logs/2026/app.log

本地文件则使用本地路径:

./report.csv
/var/log/app.log

4. 查看对象与存储用量

mc ls myminio                         # 查看 alias 下的 bucket
mc ls myminio/logs/                   # 查看 bucket 内容
mc ls --recursive myminio/logs/       # 递归列出对象
mc stat myminio/logs/app.log          # 查看对象信息
mc du myminio/logs/                   # 查看路径占用

5. 创建与删除 bucket

mc mb myminio/backups                 # 创建 bucket
mc rb myminio/backups                 # 删除空 bucket

删除 bucket 或其中内容具有破坏性。删除前先确认 alias 和 bucket:

mc ls myminio/backups/

若确实要强制删除非空 bucket,先查看当前版本支持的参数:

mc rb --help

6. 上传、下载和复制

上传单个文件

mc cp ./report.csv myminio/logs/

指定对象名:

mc cp ./report.csv myminio/logs/2026/report.csv

下载对象

mc cp myminio/logs/2026/report.csv ./report.csv

下载到本地目录:

mc cp myminio/logs/2026/report.csv ./downloads/

递归复制目录

mc cp --recursive ./backup/ myminio/backups/
mc cp --recursive myminio/backups/ ./restore/

对象存储之间复制

mc cp myminio/source/file.txt myminio/target/

移动

mc mv ./report.csv myminio/logs/
mc mv myminio/logs/old.txt myminio/archive/

mc mv 会移动数据;跨存储位置时通常表现为复制后删除源对象。执行前确认源、目标路径。

7. 同步目录:mc mirror

将本地目录镜像到 bucket:

mc mirror ./site/ myminio/web/

持续监控本地目录变化并同步:

mc mirror --watch ./site/ myminio/web/

也可以在存储端之间镜像:

mc mirror myminio/source/ myminio/target/

默认不要假定目标端多余对象会自动删除。若使用 --remove,会删除目标端中源端不存在的对象:

mc mirror --remove ./site/ myminio/web/

这类操作可能造成数据丢失。生产环境使用 --remove 前,先确认源和目标方向,并在测试 bucket 上验证。

8. 删除对象

删除单个对象:

mc rm myminio/logs/old.log

递归删除某个前缀下的对象:

mc rm --recursive --force myminio/logs/old/

删除操作可能无法恢复,尤其是在未启用版本控制或没有备份的情况下。执行前可先检查目标:

mc ls --recursive myminio/logs/old/

9. 匿名访问策略

查看 bucket 的匿名访问策略:

mc anonymous get myminio/public

允许匿名下载:

mc anonymous set download myminio/public

取消匿名访问:

mc anonymous set none myminio/public

谨慎开放匿名访问:download 意味着未登录用户可能读取对象。不要在未评估数据敏感性的情况下对生产 bucket 设置公开访问。

10. 常见管理命令

查看服务端信息(需要管理权限):

mc admin info myminio
mc admin help

管理类命令可能涉及服务配置和集群状态,普通数据读写通常不需要 mc admin 权限。

11. 常见运维场景

上传日志并检查结果

mc cp /var/log/myapp/app.log myminio/logs/myapp/
mc ls myminio/logs/myapp/
mc stat myminio/logs/myapp/app.log

定期镜像备份目录

mc mirror /srv/backup/ myminio/backups/server01/

建议把该命令放入定时任务前,先手工运行并确认目标路径、账号权限和文件数量。需要保留多个历史版本时,不要只依赖“镜像”;应另外设计版本控制、快照或异地备份策略。

统计 bucket 用量

mc du myminio/backups/

检查配置和命令参数

mc alias list
mc --help
mc <命令> --help

例如:

mc mirror --help
mc rm --help

12. 常见问题排查

alias 或 endpoint 错误

检查地址、协议、端口和 alias:

mc alias list
mc ls myminio

确认 endpoint 是否应使用 http:// 或 https://,以及网络和 DNS 是否可达。

Access Denied

通常是凭据无效,或账号没有目标 bucket/对象所需权限。先确认操作路径,再请管理员检查访问策略;不要为了排障直接授予所有权限。

No such bucket

确认 bucket 名称和 alias:

mc ls myminio

若 bucket 尚不存在且你有权限,可创建:

mc mb myminio/bucket

上传或下载中断

检查网络、磁盘空间和客户端输出;可先对单个小文件测试,再执行批量任务。对关键数据,上传后使用 mc stat 或重新列目录确认结果。

13. 使用前的安全检查清单

  • 确认命令里的 alias、bucket 和路径都正确。
  • 删除或同步前检查源和目标方向,特别是 mc rm、mc mv 和带 --remove 的 mc mirror。
  • 生产环境使用权限受限的账号,并保护凭据。
  • 对重要数据采用独立备份;定期做恢复演练。
  • 以本机安装版本的 mc <命令> --help 为准,确认具体选项和行为。