第三章:快速入门

通过 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 的架构设计。