安装配置minio防盗链minio同步脚本mc命令相关文档↑ Top ↑

发布于 更新于

AI总结: 本文介绍了MinIO的安装配置过程,包括创建数据目录、启动MinIO服务、配置mc命令行工具与云存储服务的别名、同步数据以及使用cron定时任务实现自动同步。同时,文中还提到如何设置MinIO的公共和私有存储桶、生成签名链接、配置防盗链、以及管理存储桶和对象的命令。 优化建议: 1. 在docker run命令中,建议使用环境变量文件来管理敏感信息(如ACCESS_KEY和SECRET_KEY),以提高安全性。 2. 可以在脚本中添加日志记录功能,以便跟踪同步任务的执行情况。 3. 提供更详细的错误处理机制,以便在任务失败时能够及时通知管理员。 4. 考虑使用更复杂的调度策略,而不仅仅是每分钟执行一次,以提高资源利用效率。 5. 对于mc命令的分类,可以考虑将其整理成表格形式,以便于查阅和使用。

安装配置

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