MinIO 客户端 mc 命令使用指南
mc(MinIO Client) 是 MinIO 官方提供的命令行客户端,兼容 S3 协议,可用于管理 MinIO、AWS S3、阿里云 OSS 等对象存储。日常运维中常用于桶(Bucket)管理、文件上传下载、同步备份、权限策略与运维排障。
本文整理 mc 的安装、Alias 配置,以及高频命令的参数说明与注释示例。
1. 安装 mc
Linux / macOS(推荐二进制)
curl -O https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
mc --version
macOS(Homebrew)
brew install minio/stable/mc
mc --version
容器内临时使用
docker run --rm -it --entrypoint=/bin/sh minio/mc
2. Alias:配置对象存储连接
mc 通过 Alias(别名) 保存远端服务地址与凭证。后续命令里用 ALIAS/BUCKET/OBJECT 形式访问。
核心命令
mc alias set <ALIAS> <URL> <ACCESS_KEY> <SECRET_KEY> [--api S3v4]
mc alias list
mc alias remove <ALIAS>
参数说明
| 参数 / 位置参数 | 说明 |
|---|
<ALIAS> | 本地别名,如 myminio、prod-s3,后续命令用它代替完整 URL |
<URL> | 对象存储 Endpoint,如 http://192.168.1.10:9000 或 https://s3.amazonaws.com |
<ACCESS_KEY> | 访问密钥 Access Key |
<SECRET_KEY> | 秘密密钥 Secret Key |
--api | API 签名版本,常用 S3v4;个别老环境可能用 S3v2 |
示例
mc alias set myminio http://127.0.0.1:9000 minioadmin minioadmin --api S3v4
mc alias list
mc ls myminio
3. 桶(Bucket)管理
常用命令
mc mb <ALIAS>/<BUCKET> [--region <REGION>] [--ignore-existing]
mc rb <ALIAS>/<BUCKET>
mc rb --force --dangerous <ALIAS>/<BUCKET>
mc ls <ALIAS>[/<BUCKET>[/<PREFIX>]] [--recursive]
参数说明
| 参数 | 说明 |
|---|
<ALIAS>/<BUCKET> | 目标路径:别名 + 桶名 |
--region <REGION> | 创建桶时指定区域,如 us-east-1;MinIO 本地常可省略 |
--ignore-existing | 桶已存在时不报错,适合脚本幂等创建 |
--recursive / -r | 递归列出子前缀下所有对象 |
--force | 配合 rb 强制删除 |
--dangerous | 确认可删除非空桶(需与 --force 一起用) |
示例
mc mb myminio/backup --ignore-existing
mc ls myminio
mc ls --recursive myminio/backup
mc rb myminio/backup
4. 上传、下载与复制
常用命令
mc cp <LOCAL_PATH> <ALIAS>/<BUCKET>/<PREFIX> [--recursive]
mc cp <ALIAS>/<BUCKET>/<OBJECT> <LOCAL_PATH> [--recursive]
mc cp <ALIAS>/<SRC_BUCKET>/<OBJECT> <ALIAS>/<DST_BUCKET>/<OBJECT>
mc mv <SRC> <DST> [--recursive]
参数说明
| 参数 | 说明 |
|---|
<LOCAL_PATH> | 本地文件或目录路径 |
<ALIAS>/<BUCKET>/<OBJECT> | 远端对象完整路径 |
--recursive / -r | 递归处理目录或前缀下所有对象 |
--attr | 上传时附加自定义元数据(键值对) |
--newer-than / --older-than | 按修改时间过滤对象(相对时长,如 7d、24h) |
--continue | 失败后可续传(大文件场景) |
示例
mc cp ./app.log myminio/backup/app.log
mc cp --recursive ./logs/ myminio/backup/logs/
mc cp myminio/backup/app.log ./app.log
mc cp --recursive myminio/backup/logs/ ./logs-download/
mc cp myminio/backup/app.log myminio/archive/app.log
5. 同步(mirror)与差异比对
mc mirror 常用于备份、目录镜像;mc diff 用于比对两端差异。
常用命令
mc mirror <SRC> <DST> [--overwrite] [--remove] [--watch]
mc diff <SRC> <DST>
参数说明
| 参数 | 说明 |
|---|
<SRC> / <DST> | 源与目标,可为本地路径或 ALIAS/BUCKET/PREFIX |
--overwrite | 目标已存在同名对象时覆盖 |
--remove | 删除目标中源侧已不存在的对象(使目标与源完全一致) |
--watch | 持续监听源变化并自动同步(适合热备份) |
--exclude | 排除匹配模式的文件,如 --exclude "*.tmp" |
示例
mc mirror ./data/ myminio/backup/data/
mc mirror --overwrite ./data/ myminio/backup/data/
mc mirror --overwrite --remove ./data/ myminio/backup/data/
mc mirror --watch ./data/ myminio/backup/data/
mc diff ./data/ myminio/backup/data/
6. 删除与批量清理
常用命令
mc rm <ALIAS>/<BUCKET>/<OBJECT>
mc rm --recursive [--force] <ALIAS>/<BUCKET>/<PREFIX>
mc rm --recursive --force --older-than <DURATION> <ALIAS>/<BUCKET>/<PREFIX>
参数说明
| 参数 | 说明 |
|---|
--recursive / -r | 递归删除目录/前缀 |
--force | 不二次确认,强制执行(脚本中常用) |
--older-than <DURATION> | 只删早于指定时长的对象,如 7d、30d、24h |
--newer-than <DURATION> | 只删新于指定时长的对象 |
--versions | 删除对象的所有版本(开启版本控制时) |
--dangerous | 允许删除整桶内容等危险操作(视版本而定) |
示例
mc rm myminio/backup/app.log
mc rm --recursive --force myminio/backup/logs/
mc rm --recursive --force --older-than 30d myminio/backup/tmp/
7. 查看对象信息与内容
常用命令
mc stat <ALIAS>/<BUCKET>/<OBJECT>
mc cat <ALIAS>/<BUCKET>/<OBJECT>
mc head <ALIAS>/<BUCKET>/<OBJECT>
参数说明
| 命令 / 参数 | 说明 |
|---|
mc stat | 输出对象或桶的元信息,不下载完整内容 |
mc cat | 把对象内容打印到标准输出,适合小文本/配置 |
mc head | 只看开头部分,避免大文件刷屏 |
--json | 多数 mc 子命令支持,输出 JSON,便于脚本解析 |
示例
mc stat myminio/backup/app.log
mc stat --json myminio/backup/app.log
mc cat myminio/backup/config/app.yaml
mc head myminio/backup/app.log
8. 权限、匿名访问与共享链接
桶策略与匿名权限
mc anonymous set download <ALIAS>/<BUCKET>
mc anonymous set public <ALIAS>/<BUCKET>
mc anonymous set none <ALIAS>/<BUCKET>
mc anonymous get <ALIAS>/<BUCKET>
| 策略值 | 说明 |
|---|
download | 匿名可读(下载),不可写 |
upload | 匿名可写(上传),一般不推荐 |
public | 匿名可读可写 |
none | 禁止匿名访问(默认安全) |
预签名分享链接
mc share download --expire <DURATION> <ALIAS>/<BUCKET>/<OBJECT>
mc share upload --expire <DURATION> <ALIAS>/<BUCKET>/<PREFIX>
| 参数 | 说明 |
|---|
--expire <DURATION> | 链接过期时间,如 1h、24h、7d |
download / upload | 分别生成下载或上传用的预签名 URL |
示例
mc anonymous set download myminio/public-assets
mc share download --expire 24h myminio/backup/report.pdf
mc anonymous set none myminio/public-assets
9. 运维诊断与服务信息
mc admin info <ALIAS>
mc alias list
mc find <ALIAS>/<BUCKET> --name "*.log" --older-than 7d
mc find 常用参数
| 参数 | 说明 |
|---|
--name <PATTERN> | 按对象名通配符匹配,如 "*.log" |
--older-than / --newer-than | 按时间过滤 |
--larger / --smaller | 按对象大小过滤,如 --larger 100MB |
--exec <CMD> | 对匹配结果执行命令(高级用法) |
示例
mc find myminio/backup --name "*.log" --older-than 7d
mc find myminio/backup --larger 100MB
mc admin info myminio
10. 日常运维速查清单
mc alias set myminio http://127.0.0.1:9000 ACCESS SECRET
mc alias list
mc ls myminio
mc mb myminio/backup --ignore-existing
mc ls --recursive myminio/backup
mc cp ./file.txt myminio/backup/file.txt
mc cp --recursive ./dir/ myminio/backup/dir/
mc cp myminio/backup/file.txt ./file.txt
mc mirror --overwrite ./data/ myminio/backup/data/
mc rm myminio/backup/file.txt
mc rm --recursive --force --older-than 30d myminio/tmp/
mc share download --expire 24h myminio/backup/file.txt
11. 常见问题
1. mc: <ERROR> Access Denied
- 检查 AccessKey / SecretKey 是否正确。
- 检查该账号对目标桶是否有对应 IAM / Policy 权限。
- 时间偏差过大会导致签名失败,确认服务器 NTP 正常。
2. 路径写成了 s3://bucket/... 报错
mc 使用的是 ALIAS/BUCKET/OBJECT,不是 AWS CLI 的 s3:// 写法。
3. HTTPS 自签名证书报错
mc alias set myminio https://minio.example.com ACCESS SECRET --api S3v4
4. 大文件上传中断
- 使用
mc cp / mc mirror 时确认网络稳定;必要时分段重试或先 mirror 增量同步。
- 检查磁盘与桶配额是否充足:
mc du myminio/backup(查看占用)。