MinIO 运维命令速查
使用说明
三件事先说清楚:
ALIAS是mc alias set注册的集群别名,下文统一用cluster指代;测试环境常用local。BUCKET是桶名,PREFIX/是前缀(看着像目录的那个东西)。- 带
--force、--dangerous、--versions的命令都有破坏性,执行前先mc ls --recursive确认范围。
命令的完整参数和踩坑记录见博客 MinIO 运维日常:mc 命令实战笔记,本篇只做速查。
桶与对象
| 操作 | 命令 |
|---|---|
| 建桶 | mc mb cluster/BUCKET |
| 幂等建桶 | mc mb cluster/BUCKET --ignore-existing |
| 删空桶 | mc rb cluster/BUCKET |
| 强制删桶及内容 | mc rb --force --dangerous cluster/BUCKET |
| 列桶 | mc ls cluster |
| 看桶属性与对象数 | mc stat cluster/BUCKET |
| 递归列对象 | mc ls --recursive cluster/BUCKET |
| 列对象(含版本) | mc ls --versions cluster/BUCKET/PREFIX/ |
| 上传单文件 | mc cp ./file cluster/BUCKET/PREFIX/ |
| 递归上传目录 | mc cp --recursive ./dir cluster/BUCKET/PREFIX/ |
| 断点续传 | mc cp --continue ./big.tar.gz cluster/BUCKET/ |
| 下载 | mc cp cluster/BUCKET/file ./ |
| 桶间复制 | mc cp cluster/BUCKET/a cluster/ARCHIVE/a |
| 增量同步 | mc mirror --overwrite ./dir cluster/BUCKET/ |
| 严格镜像(会删目标多余对象) | mc mirror --overwrite --remove ./dir cluster/BUCKET/ |
| 监听式同步 | mc mirror --watch ./logs cluster/LOG-BUCKET/ |
| 比对两端差异 | mc diff ./dir cluster/BUCKET/ |
| 删单个对象 | mc rm cluster/BUCKET/file |
| 递归删前缀 | mc rm --recursive --force cluster/BUCKET/PREFIX/ |
| 按时间删 | mc rm --recursive --force --older-than 30d cluster/BUCKET/PREFIX/ |
| 删所有版本 | mc rm --recursive --force --versions cluster/BUCKET/PREFIX/ |
| 看对象元数据 | mc stat cluster/BUCKET/file |
| 看对象内容 | mc cat cluster/BUCKET/file |
| 看前 N 行 | mc head -n 100 cluster/BUCKET/file |
| 看目录占用 | mc du cluster/BUCKET |
| 按大小查找 | mc find cluster/BUCKET --larger 100MB |
| 按名字查找 | mc find cluster/BUCKET --name "*.log" |
| 查找并执行 | mc find cluster/BUCKET --name "*.tmp" --exec "mc rm {}" |
身份与权限
| 操作 | 命令 |
|---|---|
| 注册别名 | mc alias set cluster https://s3.example.net AK SK |
| 列出别名 | mc alias ls |
| 删除别名 | mc alias remove cluster |
| 加用户 | mc admin user add cluster USER PASS |
| 列用户 | mc admin user list cluster |
| 看用户详情 | mc admin user info cluster USER |
| 禁用用户 | mc admin user disable cluster USER |
| 删用户 | mc admin user remove cluster USER |
| 列内置策略 | mc admin policy list cluster |
| 看策略内容 | mc admin policy info cluster POLICY |
| 建自定义策略 | mc admin policy create cluster POLICY policy.json |
| 绑定策略 | mc admin policy attach cluster POLICY --user USER |
| 解绑策略 | mc admin policy detach cluster POLICY --user USER |
| 建服务账号 | mc admin user svcacct add cluster USER |
| 查匿名策略 | mc anonymous list cluster |
| 设匿名只读 | mc anonymous set download cluster/BUCKET |
| 关闭匿名 | mc anonymous set none cluster/BUCKET |
| 设桶配额 | mc quota set cluster/BUCKET --size 500GiB |
| 查配额 | mc quota info cluster/BUCKET |
管理命令
| 操作 | 命令 |
|---|---|
| 集群概况 | mc admin info cluster |
| 结构化输出 | mc admin info cluster --json |
| 查看配置 | mc admin config get cluster |
| 修改配置项 | mc admin config set cluster KEY=VALUE |
| 重启服务 | mc admin service restart cluster |
| 停服务 | mc admin service stop cluster |
| 实时请求跟踪 | mc admin trace -v cluster |
| 只看错误请求 | mc admin trace -v --status-code 403 cluster |
| 看锁 | mc admin top locks cluster |
| 看 API 调用 | mc admin top api cluster |
| 扫描器状态 | mc admin scanner status cluster |
| 导出桶配置 | mc admin cluster bucket export cluster |
| 导出 IAM 配置 | mc admin cluster iam export cluster |
| 导入桶配置 | mc admin cluster bucket import cluster bucket-meta.zip |
| 导入 IAM 配置 | mc admin cluster iam import cluster iam-meta.zip |
| 池重平衡 | mc admin rebalance start cluster |
| 重平衡进度 | mc admin rebalance status cluster |
| 退役服务器池 | mc admin decommission start cluster http://minio5:9000 |
service stop 与 service restart
mc admin service stop cluster 会把所有节点的服务停掉,分布式环境下等于直接停服,不是只停一个节点。想重启单个节点请登录机器用 systemctl restart minio。
生命周期与版本
| 操作 | 命令 |
|---|---|
| 开版本控制 | mc version enable cluster/BUCKET |
| 看版本状态 | mc version info cluster/BUCKET |
| 暂停版本控制 | mc version suspend cluster/BUCKET |
| 加过期规则 | mc ilm rule add cluster/BUCKET --expire-days 90 |
| 按前缀过期 | mc ilm rule add cluster/BUCKET --prefix "tmp/" --expire-days 7 |
| 按标签过期 | mc ilm rule add cluster/BUCKET --tags "type=temp" --expire-days 3 |
| 精确日期过期 | mc ilm rule add cluster/BUCKET --expire-date 2027-01-01 |
| 清非当前版本 | mc ilm rule add cluster/BUCKET --noncurrent-expire-days 30 |
| 清删除标记 | mc ilm rule add cluster/BUCKET --expire-delete-marker |
| 转储到远端层 | mc ilm rule add cluster/BUCKET --transition-days 30 --storage-class cold |
| 列规则 | mc ilm rule ls cluster/BUCKET |
| 删规则 | mc ilm rule rm cluster/BUCKET --id RULE_ID |
| 导出规则 | mc ilm export cluster/BUCKET > rules.json |
| 导入规则 | mc ilm import cluster/BUCKET < rules.json |
| 注册转储层 | mc ilm tier add s3 cluster TIER-NAME --endpoint URL --access-key AK --secret-key SK --bucket BUCKET |
| 列转储层 | mc ilm tier ls cluster |
生命周期是异步的
规则由后台扫描器执行,对象到期后可能延迟数小时才真正删除,容量统计也会滞后。别拿它当「定时任务」精确到分钟用。
监控与排查
| 操作 | 命令 |
|---|---|
| 健康检查(进程) | curl -s -o /dev/null -w '%{http_code}' https://s3.example.net/minio/health/live |
| 健康检查(集群仲裁) | curl -s -o /dev/null -w '%{http_code}' https://s3.example.net/minio/health/cluster |
| 集群指标 | curl -s -H "Authorization: Bearer TOKEN" https://s3.example.net/minio/v2/metrics/cluster |
| 桶指标 | curl -s -H "Authorization: Bearer TOKEN" https://s3.example.net/minio/v2/metrics/bucket |
| 生成抓取配置 | mc admin prometheus generate cluster |
| 手工 heal | mc admin heal --recursive cluster |
| heal 干跑 | mc admin heal --dry-run --recursive cluster |
| 深度 heal | mc admin heal --recursive --scan-mode deep cluster |
| 看离线盘 | mc admin info cluster | grep -i offline |
| 看服务日志 | sudo journalctl -u minio -n 100 --no-pager |
| 看内核磁盘报错 | sudo dmesg -T | grep -iE 'error|reset|failed' |
| 看证书有效期 | openssl s_client -connect HOST:9000 -servername HOST 2>/dev/null | openssl x509 -noout -dates |
| 看时间同步 | chronyc tracking |
常用组合
几条高频的「一条命令解决问题」:
# 一屏看清集群是否健康:节点、磁盘、容量
mc admin info cluster
# 找出桶里最大的 10 个对象
mc ls --recursive --json cluster/BUCKET | jq -r '[.size, .key] | @tsv' | sort -rn | head -10
# 统计某天的对象数量(按前缀)
mc ls --recursive --json cluster/BUCKET/2026/10/25/ | jq -s 'length'
# 迁移前的差异检查,输出为空才放心
mc diff cluster/BUCKET backup/BUCKET
# 清理前先确认要删多少
mc ls --recursive cluster/BUCKET/tmp/ | wc -l
# 换盘后确认修复是否完成(关注 failed 计数)
mc admin heal --dry-run --recursive cluster
把频繁排查写成脚本
mc --json 配 jq 是标准玩法。把「检查离线盘数、容量水位、证书剩余天数」写成一个脚本,输出 OK 或具体异常项,接到 cron 和告警里,比每天手工敲命令可靠得多。