Skip to content

随记

多尝试后再问人。

MinIO 是一款高性能、可扩展且开源的对象存储服务,专为云原生环境设计。

linux安装

1. 下载

shell
# 下载minio,此版本为官方社区版【完整控制台】最终版;2025-05-24之后所有版本Web控制台阉割,只剩文件浏览。
wget -O minio https://dl.minio.org.cn/server/minio/release/linux-amd64/archive/minio.RELEASE.2025-04-22T22-12-26Z
# 下载mc, 用于管理minio
wget https://dl.min.io/client/mc/release/linux-amd64/mc

2. 创建安装目录

shell
# 创建基础目录
mkdir -p /usr/local/minio/{bin,data,logs}
# 移动文件到软件安装目录
mv minio /usr/local/minio/bin
mv mc /usr/local/minio/bin
# 添加可执行权限
cd /usr/local/minio/bin
chmod +x mc
chmod +x minio
# 添加环境变量
echo 'export PATH=\\$PATH:/usr/local/minio/bin' >> ~/.bashrc
# 刷新环境变量
source ~/.bashrc

3. 创建启动脚本

注意:address指的是接口服务访问的端口,默认为9000
console-address指的是管理面的端口,默认为9001

shell
# 创建启动脚本
cat > /usr/local/minio/bin/minio.sh << EOF
#!/bin/bash
export MINIO_DIR=/usr/local/minio
# 账号密码
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD="admin@minio2024"
# 存储目录
export MINIO_VOLUME=/usr/local/minio/data
# 后台启动服务
\${MINIO_DIR}/bin/minio server \${MINIO_VOLUME} \\
--config-dir \${MINIO_DIR}/conf \\
--address :12081 \\
--console-address :12080 > \${MINIO_DIR}/logs/minio.log &
EOF
# 添加可执行权限
chmod +x /usr/local/minio/bin/minio.sh

4. 启动服务

shell
# 启动服务
minio.sh
# 查看服务状态
ps -ef | grep minio
# 停止服务
ps -ef|grep minio | grep -v grep | awk '{print $2}' | xargs kill -15

5. 验证

浏览器访问: http://ip:12080 admin/admin@minio2024

6.迁移数据(可选)

6.1 下载迁移工具rclone

shell
# 切换到合适的目录
cd /usr/local/minio/bin
# 下载
wget https://downloads.rclone.org/rclone-current-linux-amd64.zip
# 解压
unzip rclone-current-linux-amd64.zip

6.2 配置rclone配置文件

12081为address对应端口号,一般默认为9000,下方脚本若有问题不能正常执行,则删除所有备注项即可

shell
# 创建配置文件
mkdir -p /root/.config/rclone
# 编辑配置文件
cat > /root/.config/rclone/rclone.conf << EOF
[minio-old]
type = s3 #不可更改
env_auth = false
provider = Minio
access_key_id = admin #旧minio的控制台用户名
secret_access_key = admin@minio2024 #旧minio的控制台密码
region = 
endpoint = http://192.168.190.130:12081 #旧minio的API地址
 
[minio-new]
type = s3
env_auth = false
provider = Minio
access_key_id = admin  #新minio的控制台用户名
secret_access_key = admin@minio2024  #新minio的控制台密码
region =
endpoint = http://192.168.190.129:12081  #新minio的API地址
EOF

6.3 迁移数据

注意:新minio的桶名称和文件名称要与旧minio的桶名称一致,要自己提前创建好桶

  • 旧minio数据迁移到新minio里面
shell
# 1:指定桶迁移
#minio-old和minio-new为迁移配置问文件里的name,test为旧minio的桶
rclone sync minio-old:test minio-new:test 
# 2.全部桶迁移
rclone sync minio-old: minio-new:
  • 旧minio数据迁移到本地 (执行迁移的时候回清掉要存放数据的目录,确保存放迁移数据的目录为空)
shell
# 1:指定桶迁移
#minio-old和minio-new为迁移配置问文件里的name  test为旧minio的桶
rclone sync minio-old:test /data/test  
# 2.全部桶迁移
rclone sync minio-old: /data/
  • 旧minio本地数据迁移到新minio里面
shell
# 1:指定桶迁移
#minio-old和minio-new为迁移配置问文件里的name  test为旧minio的桶
rclone sync /data/ minio-old:test  
# 2.全部桶迁移
rclone sync /data/ minio-old:

7.迁移数据,巨好用

主要使用mc命令

shell
# 添加资源-本地,mc config host add 资源名 地址 用户名或accessKey 密码或accessSecret
mc config host add minio1 http://127.0.0.1:12081 admin admin@minio2024
# 添加资源-阿里云
mc config host add oss1 https://xxx.oss-cn-beijing.aliyuncs.com [accessKey] [accessSecret]

# 查看已配置的minio
cat /root/.mc/config.json

# 从MinIO复制到本地文件系统, mc cp --recursive 资源名/桶名 "/本地文件地址"
mc cp --recursive minio1/jms "/temp/path"

常用命令

shell
rclone config - 以控制会话的形式添加rclone的配置,配置保存在.rclone.conf文件中。
rclone copy - 将文件从源复制到目的地址,跳过已复制完成的。
rclone sync - 将源数据同步到目的地址,只更新目的地址的数据。
rclone move - 将源数据移动到目的地址。
rclone delete - 删除指定路径下的文件内容。
rclone purge - 清空指定路径下所有文件数据。
rclone mkdir - 创建一个新目录。
rclone rmdir - 删除空目录。
rclone check - 检查源和目的地址数据是否匹配。
rclone ls - 列出指定路径下所有的文件以及文件大小和路径。
rclone lsd - 列出指定路径下所有的目录/容器/桶。
rclone lsl - 列出指定路径下所有文件以及修改时间、文件大小和路径。
rclone md5sum - 为指定路径下的所有文件产生一个md5sum文件。
rclone sha1sum - 为指定路径下的所有文件产生一个sha1sum文件。
rclone size - 获取指定路径下,文件内容的总大小。.
rclone version - 查看当前版本。
rclone cleanup - 清空remote。
rclone dedupe - 交互式查找重复文件,进行删除/重命名操作。

参考文档

nginx配置(可忽略)

如果要对外暴露,但又不想开放太多端口,可以使用nginx做转发,做到一个端口,多个服务。
注意:域名解析要提前添加泛域名解析记录

nginx追加配置:

shell
# http块添加
map $http_upgrade $connection_upgrade {
    default          keep-alive;  #默认为keep-alive 可以支持 一般http请求
    'websocket'      upgrade;     #如果为websocket 则为 upgrade 可升级的。
}
# minio服务
upstream minio_s3 {
   least_conn;
   server 127.0.0.1:12081; # 这里的地址是你刚才查询出来的容器地址 + 端口号(minio服务是9000)
}
# minio控制台
upstream minio_console {
   server 127.0.0.1:12080; # 这里的地址是你刚才查询出来的容器地址 + 端口号(控制台是9090)
}

server {
    listen       80;
    server_name  minio.youdomain.com; # 写你的域名

    location / {
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header   Host             $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_pass         http://minio_console;
    }
	
    # minio-api地址
    location /minio-api/ {
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_connect_timeout 300;
      proxy_http_version 1.1;
      proxy_set_header Connection $connection_upgrade;
      chunked_transfer_encoding off;
      proxy_pass http://minio_s3/; 
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/local/nginx/html;
    }
}

验证,通过域名访问minio

例如创建了一个bucket:test,权限设置为public,并上传了一个文件1.txt, 通过 http://minio.youdomain.com/minio-api/test/1.txt 即可访问文件

常用命令

mc操作

自从2024年后某个版本,minio官方已经隐藏菜单了,只能通过mc操作

1.安装mc

shell
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/
# 验证安装
mc --version

2.添加s3源

shell
# 添加链接
mc alias set localminio http://127.0.0.1:12080 minio 8BRhbnYWfiX6mKhj
# 创建桶
mc mb localminio/jms
# 测试连通性,正常输出jms桶名称
mc ls localminio

3.访问策略

shell
# 设置全网公共读写
mc policy set public localminio/jms
# 设置公共只读
mc policy set download localminio/jms

# 查询策略,确认配置生效
mc policy get localminio/jms

4.创建accesskey

⚠️ SecretKey 只会输出一次,请立刻复制保存,丢失无法找回!

shell
mc admin accesskey create localminio

Released under the MIT License.