MinIO 操作命令
1. mc 客户端介绍
mc(MinIO Client)是 MinIO 提供的命令行工具,用于管理和操作 MinIO 服务器。它兼容 Amazon S3 API,支持所有 S3 操作,同时提供了一些扩展功能。
2. mc 客户端安装
2.1 二进制安装
bash
# 下载 mc 客户端
wget https://dl.min.io/client/mc/release/linux-amd64/mc
# 添加执行权限
chmod +x mc
# 移动到系统路径
mv mc /usr/local/bin/2.2 Docker 安装
bash
docker run --rm -it minio/mc3. mc 客户端配置
3.1 配置 MinIO 服务器别名
bash
# 格式:mc alias set <alias> <url> <access-key> <secret-key>
mc alias set myminio http://localhost:9000 admin password@1233.2 查看配置的别名
bash
mc alias list3.3 移除别名
bash
mc alias remove myminio4. 基本操作命令
4.1 Bucket 操作
创建 Bucket
bash
# 格式:mc mb <alias>/<bucket-name>
mc mb myminio/test-bucket删除 Bucket
bash
# 格式:mc rb <alias>/<bucket-name>
mc rb myminio/test-bucket
# 强制删除非空 Bucket
mc rb --force myminio/test-bucket列出 Bucket
bash
# 列出所有 Bucket
mc ls myminio
# 列出 Bucket 中的文件
mc ls myminio/test-bucket
# 递归列出所有文件
mc ls -r myminio/test-bucket
# 显示详细信息
mc ls -la myminio/test-bucket4.2 对象操作
上传文件
bash
# 上传单个文件
mc cp test.txt myminio/test-bucket/
# 上传目录
mc cp -r /path/to/dir myminio/test-bucket/
# 上传所有 .txt 文件
mc cp *.txt myminio/test-bucket/
# 显示上传进度
mc cp -v test.txt myminio/test-bucket/下载文件
bash
# 下载单个文件
mc cp myminio/test-bucket/test.txt ./
# 下载目录
mc cp -r myminio/test-bucket/dir ./
# 下载所有 .txt 文件
mc cp myminio/test-bucket/*.txt ./
# 显示下载进度
mc cp -v myminio/test-bucket/test.txt ./删除文件
bash
# 删除单个文件
mc rm myminio/test-bucket/test.txt
# 删除目录
mc rm -r myminio/test-bucket/dir
# 删除所有 .txt 文件
mc rm myminio/test-bucket/*.txt
# 强制删除
mc rm --force myminio/test-bucket/test.txt复制文件
bash
# 在同一个 MinIO 服务器内复制
mc cp myminio/test-bucket/test.txt myminio/test-bucket/test-copy.txt
# 在不同 MinIO 服务器间复制
mc cp myminio/test-bucket/test.txt otherminio/test-bucket/移动文件
bash
# 在同一个 MinIO 服务器内移动
mc mv myminio/test-bucket/test.txt myminio/test-bucket/test-moved.txt
# 在不同 MinIO 服务器间移动
mc mv myminio/test-bucket/test.txt otherminio/test-bucket/查看文件信息
bash
# 查看单个文件信息
mc stat myminio/test-bucket/test.txt
# 查看目录信息
mc stat myminio/test-bucket/dir4.3 共享文件
生成临时访问 URL
bash
# 生成 7 天有效的访问 URL
mc share download --expire 7d myminio/test-bucket/test.txt
# 生成 1 小时有效的上传 URL
mc share upload --expire 1h myminio/test-bucket/列出共享链接
bash
mc share list取消共享链接
bash
mc share stop <share-url>5. 高级操作命令
5.1 版本控制
启用版本控制
bash
mc version enable myminio/test-bucket禁用版本控制
bash
mc version disable myminio/test-bucket列出对象版本
bash
mc ls --versions myminio/test-bucket还原旧版本
bash
# 获取版本 ID
mc ls --versions myminio/test-bucket/test.txt
# 还原旧版本
mc cp myminio/test-bucket/test.txt#<version-id> myminio/test-bucket/test-restored.txt5.2 生命周期管理
设置生命周期规则
bash
# 创建生命周期配置文件 lifecycle.json
cat > lifecycle.json << EOF
{
"Rules": [
{
"ID": "expire-old-objects",
"Status": "Enabled",
"Filter": {
"Prefix": "logs/"
},
"Expiration": {
"Days": 30
}
}
]
}
EOF
# 应用生命周期规则
mc ilm import myminio/test-bucket < lifecycle.json查看生命周期规则
bash
mc ilm ls myminio/test-bucket移除生命周期规则
bash
mc ilm rm myminio/test-bucket --id expire-old-objects5.3 桶策略管理
设置桶策略
bash
# 创建策略文件 policy.json
cat > policy.json << EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["*"]
},
"Action": ["s3:GetObject"],
"Resource": ["arn:aws:s3:::test-bucket/*"]
}
]
}
EOF
# 应用桶策略
mc policy set-json policy.json myminio/test-bucket查看桶策略
bash
mc policy get myminio/test-bucket移除桶策略
bash
mc policy remove myminio/test-bucket5.4 加密管理
启用服务器端加密
bash
# 启用 SSE-KMS 加密
mc encrypt set sse-kms <key-id> myminio/test-bucket
# 启用 SSE-S3 加密
mc encrypt set sse-s3 myminio/test-bucket查看加密配置
bash
mc encrypt get myminio/test-bucket禁用加密
bash
mc encrypt remove myminio/test-bucket6. 管理命令
6.1 服务器信息
bash
# 查看服务器信息
mc admin info myminio6.2 服务器状态
bash
# 查看服务器状态
mc admin status myminio6.3 服务器日志
bash
# 查看服务器日志
mc admin logs myminio
# 实时查看日志
mc admin logs --follow myminio6.4 服务器配置
bash
# 查看服务器配置
mc admin config get myminio
# 设置服务器配置
mc admin config set myminio <key> <value>
# 重启服务器以应用配置
mc admin service restart myminio6.5 节点管理
bash
# 列出所有节点
mc admin info myminio --json | jq .info.servers
# 查看节点状态
mc admin status myminio --node <node-id>6.6 审计日志
bash
# 启用审计日志
mc admin audit enable myminio
# 禁用审计日志
mc admin audit disable myminio
# 查看审计日志配置
mc admin audit info myminio6.7 监控指标
bash
# 查看实时指标
mc admin metrics myminio
# 查看 Prometheus 指标
mc admin prometheus generate myminio7. 高级功能命令
7.1 数据同步
bash
# 同步本地目录到 MinIO
mc mirror /path/to/local myminio/test-bucket/
# 同步 MinIO 到本地目录
mc mirror myminio/test-bucket/ /path/to/local
# 增量同步
mc mirror --watch /path/to/local myminio/test-bucket/
# 显示同步进度
mc mirror -v /path/to/local myminio/test-bucket/7.2 数据校验
bash
# 计算文件的 md5 校验值
mc hash test.txt
# 验证文件完整性
mc cp --md5 test.txt myminio/test-bucket/7.3 批量操作
bash
# 创建批量操作文件 batch.json
cat > batch.json << EOF
{
"version": "1",
"jobs": [
{
"name": "copy-job",
"operation": "copy",
"source": {
"type": "s3",
"alias": "myminio",
"bucket": "test-bucket",
"prefix": "logs/"
},
"target": {
"type": "s3",
"alias": "myminio",
"bucket": "test-bucket",
"prefix": "archive/"
}
}
]
}
EOF
# 执行批量操作
mc batch run batch.json7.4 加密和解密
bash
# 加密文件并上传
mc encrypt put --encrypt-key <key> test.txt myminio/test-bucket/
# 下载并解密文件
mc encrypt get --encrypt-key <key> myminio/test-bucket/test.txt ./8. MinIO 服务器命令
8.1 启动 MinIO 服务器
bash
# 单机模式
minio server /data/minio --console-address :9001
# 分布式模式
minio server http://node{1...4}/data/disk{1...4} --console-address :90018.2 停止 MinIO 服务器
bash
# 使用 systemd 停止
systemctl stop minio
# 使用 kill 命令停止
kill $(pgrep minio)8.3 查看 MinIO 服务器版本
bash
minio --version9. 环境变量
9.1 服务器环境变量
| 环境变量 | 描述 | 默认值 |
|---|---|---|
| MINIO_ROOT_USER | 管理员用户名 | minioadmin |
| MINIO_ROOT_PASSWORD | 管理员密码 | minioadmin |
| MINIO_VOLUMES | 数据目录 | 无 |
| MINIO_OPTS | 额外选项 | 无 |
| MINIO_SERVER_URL | 服务器 URL | 无 |
| MINIO_BROWSER | 是否启用控制台 | on |
9.2 客户端环境变量
| 环境变量 | 描述 | 默认值 |
|---|---|---|
| MC_ALIAS_<NAME>_URL | 别名对应的服务器 URL | 无 |
| MC_ALIAS_<NAME>_ACCESS_KEY | 别名对应的访问密钥 | 无 |
| MC_ALIAS_<NAME>_SECRET_KEY | 别名对应的秘密密钥 | 无 |
10. 最佳实践
10.1 使用别名管理多个服务器
bash
# 配置多个服务器别名
mc alias set prod http://prod-minio:9000 prod-admin prod-password
mc alias set staging http://staging-minio:9000 staging-admin staging-password
mc alias set dev http://dev-minio:9000 dev-admin dev-password
# 在不同服务器间复制数据
mc cp prod/bucket/file staging/bucket/10.2 自动化脚本
bash
#!/bin/bash
# 设置环境变量
export MC_ALIAS_MYMINIO_URL="http://localhost:9000"
export MC_ALIAS_MYMINIO_ACCESS_KEY="admin"
export MC_ALIAS_MYMINIO_SECRET_KEY="password@123"
# 上传备份文件
date=$(date +%Y%m%d)
tar -czf backup-$date.tar.gz /path/to/backup
mc cp backup-$date.tar.gz myminio/backup/
# 删除 30 天前的备份
mc rm --force --older-than 30d myminio/backup/10.3 监控和告警
bash
# 生成 Prometheus 配置
mc admin prometheus generate myminio > prometheus-minio.yaml
# 集成到 Prometheus 和 Grafana
# 1. 将生成的配置添加到 Prometheus 配置文件中
# 2. 导入官方 Grafana 仪表板(ID: 13502)11. 常见问题排查
11.1 连接失败
bash
# 检查服务器 URL 是否正确
mc alias list
# 检查网络连接
ping <server-ip>
# 检查端口是否开放
telnet <server-ip> 900011.2 权限错误
bash
# 检查访问密钥和秘密密钥
mc alias list
# 检查桶策略
mc policy get myminio/test-bucket
# 检查 IAM 策略
mc admin policy get myminio <policy-name>11.3 上传失败
bash
# 检查磁盘空间
mc admin info myminio
# 检查文件大小限制
mc admin config get myminio | grep max
# 检查网络带宽
mc admin metrics myminio --json | jq .metrics.network总结
mc 客户端提供了丰富的命令集,用于管理和操作 MinIO 服务器。通过学习这些命令,可以高效地管理 MinIO 存储,实现各种复杂的存储操作。在实际使用中,建议结合自动化脚本和监控工具,提高管理效率和可靠性。
