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为准,确认具体选项和行为。