软件 服务器

发布于 更新于

AI总结: 本文介绍了如何安装和配置MinIO,包括创建数据目录、运行Docker容器、设置别名和同步数据等步骤。还涉及了MinIO的权限管理、存储桶操作、对象操作以及运维监控等常用命令的详细说明。此外,提供了一个MinIO同步脚本的示例,以及如何使用crontab进行定时任务。 优化建议: 1. 在Docker运行命令中,建议使用强密码替代示例中的简单密码,以增强安全性。 2. 在mc命令示例中,添加对每个命令的简要说明,以便用户更容易理解其用途。 3. 考虑在同步脚本中添加日志记录功能,以便于后续排查问题。 4. 提供更详细的错误处理机制,例如在脚本中添加对mc命令执行失败的处理逻辑。 5. 在文档中加入MinIO的常见问题解答部分,以帮助用户快速解决常见问题。

安装配置

mkdir -p /data/minio/data

docker run \
   -p 9900:9000 \
   -p 9901:9001 \
   --name minio \
   -v /data/minio/data:/data \
   -e "MINIO_ROOT_USER=minio" \
   -e "MINIO_ROOT_PASSWORD=minio123" \
   quay.io/minio/minio server /data --console-address ":9001"
   
 9901: 控制台
 9900: 服务ip


mc alias set oss https://oss-cn-shanghai.aliyuncs.com/ ACCESS_KEY ACCESS_SECRET

mc alias set myminio http://127.0.0.1:9900 ACCESS_KEY ACCESS_SECRET

mc mirror oss/my-oss-bucket/ myminio/my-minio-bucket/

mc --debug mirror --watch myminio/my-minio-bucket/ oss/my-oss-bucket/ 

PS: 貌似--watch的源服务只支持本地文件或者minio服务, 不支持oss, 所以自动sync, 可能需要结合crontab

mc mirror \
  --overwrite \            # 覆盖目标已有文件
  --remove \               # 删除目标端多余文件(保持完全同步)
  --exclude "*.tmp" \      # 排除特定文件(如临时文件)
  --watch \                # 监听文件变化持续同步
  oss/my-oss-bucket/ myminio/my-minio-bucket/


Public库: http://127.0.0.1:9900/my-minio-bucket/path/xxx/name.jpeg
Private库: 需要获取签名链接
http://127.0.0.1:9900/my-minio-bucket/path/xxx/name.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=z8ETVdfI8spMeEhKXngv%2F20250427%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250427T081624Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=69203ea0b2278062e2fdc67cc6fd82b4c172676a04f2b066c61f8a5eb0fb6cf8

minio防盗链

  1. 存储桶配置私有Private模式
  2. 添加nginx反代, 添加白名单配置

minio同步脚本

minio_sync.sh

#!/bin/bash

# 定义锁文件路径
LOCKFILE=/tmp/minio_sync.lock

# 检查锁文件是否存在
if [ -e "$LOCKFILE" ]; then
  echo "minio sync is already running. Exiting."
  exit 1
fi

# 创建锁文件
touch "$LOCKFILE"

# 捕获脚本退出信号,删除锁文件
trap 'rm -f "$LOCKFILE"; exit' INT TERM EXIT

# 你的任务逻辑
echo "Running task at $(date)" >> /data/minio/minio_sync.log
# 其他任务命令...
/usr/local/bin/mc mirror oss/my-oss-bucket/ myminio/my-minio-bucket/

# 任务完成后,锁文件会在 trap 中自动删除

crontab -e

* * * * * sh /data/minio/minio_sync.sh >> /data/minio/minio_sync.log 2>&1
Running task at Mon Apr 28 10:13:02 CST 2025
┌───────┬─────────────┬──────────┬───────┐
│ Total │ Transferred │ Duration │ Speed │
│ 0 B   │ 0 B         │ 00m00s   │ 0 B/s │
└───────┴─────────────┴──────────┴───────┘

mc命令

分类 命令 功能说明 示例
配置管理 mc alias 添加/管理云存储服务别名 mc alias set myminio http://localhost:9000 ACCESS_KEY SECRET_KEY
配置管理 mc config host list 列出所有已配置的别名 mc config host list
存储桶操作 mc mb 创建存储桶 mc mb myminio/mybucket
存储桶操作 mc ls 列出存储桶或对象(支持 --recursive 递归) mc ls myminio/mybucket/docs/
存储桶操作 mc rb 删除空存储桶 mc rb myminio/mybucket
存储桶操作 mc du 显示存储桶/目录占用空间 mc du myminio/mybucket --recursive
存储桶操作 mc mirror 同步本地目录到存储桶 mc mirror ./local_dir myminio/mybucket
对象操作 mc cp 上传/下载文件或目录 mc cp file.txt myminio/mybucket/docs/
mc cp myminio/mybucket/file.txt ./
对象操作 mc mv 移动对象 mc mv myminio/mybucket/old.txt myminio/mybucket/new.txt
对象操作 mc rm 删除对象(支持 --recursive 递归) mc rm myminio/mybucket/temp --recursive
对象操作 mc stat 查看对象详细信息 mc stat myminio/mybucket/file.zip
对象操作 mc cat 直接输出对象内容到控制台 mc cat myminio/mybucket/logs/app.log
对象操作 mc diff 比较两个存储桶/目录内容差异 mc diff myminio/mybucket myminio/anotherbucket
权限管理 mc policy 设置存储桶访问策略(none, download, upload, public mc policy set public myminio/mybucket
权限管理 mc admin policy 管理用户权限策略(需管理员权限) mc admin policy create myminio mypolicy policy.json
权限管理 mc admin user 管理用户(添加/删除/启用/禁用) mc admin user add myminio newuser newpassword
分享与访问 mc share download 生成文件临时下载链接(默认7天有效期) mc share download myminio/mybucket/file.pdf --expire=72h
分享与访问 mc share upload 生成文件上传链接 mc share upload myminio/mybucket/ --expire=24h
运维与监控 mc admin info 显示服务器健康状态 mc admin info myminio
运维与监控 mc admin server info 查看单个节点详细信息 mc admin server info myminio/
运维与监控 mc support diag 生成诊断报告 mc support diag myminio
运维与监控 mc watch 实时监控存储桶事件 mc watch myminio/mybucket
其他实用 mc find 根据条件查找文件(名称、大小、时间等) mc find myminio/mybucket --name "*.log" --size "+10MB"
其他实用 mc sql 使用 SQL 查询对象数据(需配置) mc sql myminio/mybucket "SELECT * FROM S3Object"
其他实用 mc encrypt 配置存储桶加密 mc encrypt set sse-s3 myminio/mybucket

相关文档

  1. minio sdk