第三章:快速入门
通过 MinIO Client (mc) 快速上手 MinIO 的基本操作,包括配置、存储桶管理和文件上传下载。
最后更新: 2024-01-15
页面目录
第三章:快速入门
3.1 MinIO Client 配置
3.1.1 添加 MinIO 服务器
# 添加 MinIO 服务别名
mc alias set myminio http://localhost:9000 admin password123
# 添加 AWS S3
mc alias set mys3 https://s3.amazonaws.com \
--access-key AWS_ACCESS_KEY \
--secret-key AWS_SECRET_KEY
# 查看已配置的别名
mc alias list
# 示例输出
# myminio
# URL : http://localhost:9000
# AccessKey : admin
# SecretKey : ********
# API : s3v4
# Path : auto
3.1.2 配置验证
# 测试连接
mc admin info myminio
# 示例输出
# ● MinIO
# Uptime : online
# Version : 2024.01.01
# Network : 1/1 OK
3.2 存储桶操作
3.2.1 创建存储桶
# 创建存储桶
mc mb myminio/mybucket
# 创建带区域配置的存储桶
mc mb myminio/mybucket --region us-east-1
# 创建带对象锁定特性的存储桶
mc mb myminio/compliance-bucket --with-lock
# 查看存储桶列表
mc ls myminio/
# 示例输出
# [2024-01-15 10:30:00 CST] 0B mybucket/
# [2024-01-15 10:31:00 CST] 0B compliance-bucket/
3.2.2 存储桶策略
# 设置存储桶为公开读取
mc anonymous set download myminio/mybucket
# 设置存储桶为公开写入
mc anonymous set upload myminio/mybucket
# 设置存储桶为完全公开
mc anonymous set public myminio/mybucket
# 设置存储桶为私有
mc anonymous set none myminio/mybucket
# 查看当前存储桶策略
mc anonymous list myminio/mybucket
3.2.3 存储桶加密
# 设置存储桶加密 (SSE-S3)
mc encryption set sse-s3 myminio/mybucket
# 设置存储桶加密 (SSE-KMS)
mc encryption set sse-kms myminio/mybucket \
--keys myminio-key=mykeyid:mykeybase64
# 查看加密状态
mc encryption info myminio/mybucket
3.2.4 存储桶版本控制
# 启用版本控制
mc version enable myminio/mybucket
# 暂停版本控制
mc version suspend myminio/mybucket
# 查看版本状态
mc version info myminio/mybucket
3.2.5 删除存储桶
# 删除空存储桶
mc rb myminio/mybucket
# 强制删除存储桶及其所有内容
mc rb --force myminio/mybucket
# 删除带对象锁定的存储桶
mc rb --force --dangerous myminio/compliance-bucket
3.3 对象操作
3.3.1 上传对象
# 上传单个文件
mc cp /path/to/file.txt myminio/mybucket/
# 上传并指定对象名
mc cp /path/to/file.txt myminio/mybucket/renamed-file.txt
# 上传整个目录
mc cp -r /path/to/directory myminio/mybucket/
# 上传时显示进度
mc cp -r /path/to/large-directory myminio/mybucket/ --progress
# 并行上传(多线程)
mc cp -r /path/to/directory myminio/mybucket/ --parallel 4
# 上传并设置元数据
mc cp /path/to/file.txt myminio/mybucket/ \
--attr "Content-Type=application/json;X-Amz-Meta-Owner=admin"
3.3.2 下载对象
# 下载单个对象
mc cp myminio/mybucket/file.txt /path/to/destination/
# 下载整个存储桶
mc cp --recursive myminio/mybucket /path/to/destination/
# 下载时保留目录结构
mc cp --recursive myminio/mybucket/ /path/to/destination/
# 下载带特定前缀的对象
mc cp --recursive myminio/mybucket/prefix/ /path/to/destination/
3.3.3 查看对象
# 列出存储桶中的对象
mc ls myminio/mybucket/
# 递归列出所有对象
mc ls --recursive myminio/mybucket/
# 按前缀过滤
mc ls --recursive --prefix "images/" myminio/mybucket/
# 查看对象详细信息
mc stat myminio/mybucket/file.txt
# 示例输出
# Name : file.txt
# Date : 2024-01-15 10:30:00
# Size : 1.5MB
# ETag : d41d8cd98f00b204e9800998ecf8427e
# Metadata : Content-Type: text/plain
3.3.4 删除对象
# 删除单个对象
mc rm myminio/mybucket/file.txt
# 批量删除
mc rm --recursive myminio/mybucket/prefix/
# 删除旧版本对象
mc rm --recursive --older-than 30d myminio/mybucket/
# 强制删除(包括锁定对象)
mc rm --force --recursive myminio/mybucket/
# 删除带版本的对象
mc rm --version-id "VERSION_ID" myminio/mybucket/file.txt
3.3.5 移动和复制对象
# 在存储桶内移动
mc mv myminio/mybucket/old-path/file.txt myminio/mybucket/new-path/file.txt
# 跨存储桶移动
mc mv myminio/mybucket1/file.txt myminio/mybucket2/
# 复制对象
mc cp myminio/mybucket1/file.txt myminio/mybucket2/
# 保留元数据复制
mc cp --attr "X-Amz-Meta-Owner=admin" myminio/mybucket1/file.txt myminio/mybucket2/
3.4 共享链接
3.4.1 生成预签名 URL
# 生成下载链接(默认7天)
mc share download myminio/mybucket/file.txt
# 生成下载链接(指定过期时间)
mc share download --expire 2h myminio/mybucket/file.txt
mc share download --expire 30m myminio/mybucket/file.txt
# 示例输出
# URL : http://localhost:9000/mybucket/file.txt?X-Amz-Signature=...
# Expires : 2024-01-22 10:30:00
3.4.2 生成上传链接
# 生成上传链接
mc share upload myminio/mybucket/
# 指定过期时间和权限
mc share upload --expire 1h --read-only myminio/mybucket/
# 示例输出
# URL : http://localhost:9000/mybucket/?X-Amz-Signature=...
# Expires : 2024-01-15 11:30:00
# Method : PUT
3.5 同步操作
3.5.1 目录同步
# 同步本地目录到 MinIO
mc mirror /path/to/local myminio/mybucket/
# 同步并显示进度
mc mirror --progress /path/to/local myminio/mybucket/
# 同步并删除目标中不存在的文件
mc mirror --overwrite --remove /path/to/local myminio/mybucket/
# 同步并忽略特定文件
mc mirror --exclude "*.tmp" --exclude "*.log" /path/to/local myminio/mybucket/
# 单向同步(只从源到目标)
mc mirror --overwrite /path/to/source myminio/mybucket/
3.5.2 存储桶同步
# 同步两个存储桶
mc mirror myminio/bucket1 myminio/bucket2
# 同步到远程
mc mirror myminio/mybucket s3/mybucket
3.6 增量备份
# 使用 mc 将新文件同步到备份存储桶
mc mirror --newer-than 24h /data myminio/backup/
# 定时增量备份脚本
#!/bin/bash
# incremental-backup.sh
SOURCE_BUCKET="myminio/production"
BACKUP_BUCKET="myminio/backup-$(date +%Y%m%d)"
# 创建带日期的备份存储桶
mc mb $BACKUP_BUCKET 2>/dev/null || true
# 同步最新文件
mc mirror --overwrite --remove --newer-than 1d $SOURCE_BUCKET $BACKUP_BUCKET
echo "Backup completed: $(date)"
3.7 常用命令速查
| 操作 | 命令 |
|---|---|
| 添加服务器 | mc alias set myminio http://localhost:9000 admin password |
| 创建存储桶 | mc mb myminio/bucket |
| 列出存储桶 | mc ls myminio/ |
| 上传文件 | mc cp file.txt myminio/bucket/ |
| 下载文件 | mc cp myminio/bucket/file.txt . |
| 列出对象 | mc ls myminio/bucket/ |
| 删除对象 | mc rm myminio/bucket/file.txt |
| 共享链接 | mc share download myminio/bucket/file.txt |
| 同步目录 | mc mirror /local myminio/bucket/ |
| 存储桶策略 | mc anonymous set public myminio/bucket/ |
3.8 总结
本章通过 MinIO Client 介绍了 MinIO 的基本操作,包括存储桶管理、对象上传下载、共享链接和同步操作。掌握这些基础操作后,可以进一步学习更高级的功能。下一章将深入了解 MinIO 的架构设计。