目录
gitee:https://gitee.com/pythonloser/springboot-minio/tree/master
一.minio安装与使用:https://blog.csdn.net/xixiyuguang/article/details/119344480
二.minio整合springboot、文件上传下载、增删改查bucket和object:https://blog.csdn.net/xixiyuguang/article/details/119447614
三.minio 的分布式部署、单节点多磁盘、多节点模式:https://blog.csdn.net/xixiyuguang/article/details/119456729
四.minio前端获取签名地址直传minio文件服务器(前端直传):https://blog.csdn.net/xixiyuguang/article/details/119571051
1.minio介绍
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。
官网地址:http://minio.org.cn/download.shtml#/windows
2.minio安装
2.1.下载
服务端下载地址:http://dl.minio.org.cn/server/minio/release/windows-amd64/minio.exe
2.2.安装
服务端运行
minio.exe server D:\minio\file
2.3.警告解决
WARNING: Console endpoint is listening on a dynamic port (52204), please use --console-address ":PORT" to choose a static port.
WARNING: Detected default credentials 'minioadmin:minioadmin', we recommend that you change these values with 'MINIO_ROOT_USER' and 'MINIO_ROOT_PASSWORD' environment variables
# 密码长度
ERROR Unable to validate credentials inherited from the shell environment: Invalid credentials
> Please provide correct credentials
HINT:
Access key length should be at least 3, and secret key length at least 8 characters
2.3.1临时设置端口
set MINIO_ROOT_USER=admin
set MINIO_ROOT_PASSWORD=12345678
minio.exe server D:\minio\file --console-address "127.0.0.1:9000" --address "127.0.0.1:9090"
2.3.2永久环境变量设置用户密码(不推荐)
环境变量设置
2.4.启动成功
启动脚本
set MINIO_ROOT_USER=admin
set MINIO_ROOT_PASSWORD=12345678
minio.exe server D:\minio\file --console-address "127.0.0.1:9000" --address "127.0.0.1:9090"
注意这句话客户端会用到
Command-line: https://docs.min.io/docs/minio-client-quickstart-guide
$ mc.exe alias set myminio http://127.0.0.1:9090 admin 12345678
2.5linux下安装
wget http://dl.minio.org.cn/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /mnt/data
3.客户端mc
3.1下载
客户端下载地址:http://dl.minio.org.cn/client/mc/release/windows-amd64/mc.exe
3.2运行
3.3客户端常用命令
MinIO Client (mc)为ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案。它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4)。MinIO服务端中并没有自带客户端,所以我们需要安装配置完客户端后才能使用。
ls 列出文件和文件夹。
mb 创建一个存储桶或一个文件夹。
cat 显示文件和对象内容。
pipe 将一个STDIN重定向到一个对象或者文件或者STDOUT。
share 生成用于共享的URL。
cp 拷贝文件和对象。
mirror 给存储桶和文件夹做镜像。
find 基于参数查找文件。
diff 对两个文件夹或者存储桶比较差异。
rm 删除文件和对象。
events 管理对象通知。
watch 监听文件和对象的事件。
policy 管理访问策略。
session 为cp命令管理保存的会话。
config 管理mc配置文件。
update 检查软件更新。
version 输出版本信息。
1.添加一个云存储服务
添加一个或多个S3兼容的服务,请参考下面说明。mc
将所有的配置信息都存储在~/.mc/config.json
文件中。
Copymc config host add <ALIAS> <YOUR-S3-ENDPOINT> <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY> [--api API-SIGNATURE]
别名就是给你的云存储服务起了一个短点的外号。S3 endpoint,access key和secret key是你的云存储服务提供的。API签名是可选参数,默认情况下,它被设置为"S3v4"。
mc config host add minio http://127.0.0.1:9090 admin 12345678 --api s3v4
2.查看别名下的bucket
D:\minio>mc config host add minio http://127.0.0.1:9090 admin 12345678 --api s3v4
Added `minio` successfully.
D:\minio>mc ls minio
[2021-08-03 14:56:35 CST] 0B test1\
D:\minio>mc ls minio/test1
D:\minio>mc ls minio/test1
[2021-08-03 15:14:53 CST] 5.5KiB 01-log.png
D:\minio>
3.创建bucket
D:\minio>mc mb minio/test2
Bucket created successfully `minio/test2`.
D:\minio>mc ls minio
[2021-08-03 14:56:35 CST] 0B test1\
[2021-08-03 15:18:11 CST] 0B test2\
D:\minio>
4.显示文件和对象内容
D:\minio>mc cat minio/test1/新建文本文档.txt
123132132
lku
5.cp拷贝(上传)文件
D:\minio>mc cp test.txt minio/test1
test.txt: 10 B / 10 B [========================================================================] 143 B/s 0s
D:\minio>mc ls minio/test1
[2021-08-03 15:14:53 CST] 5.5KiB 01-log.png
[2021-08-03 15:24:02 CST] 10B test.txt
[2021-08-03 15:21:03 CST] 22B 新建文本文档.txt
6.查找find
D:\minio>mc find minio/test1 --name "*.txt"
minio/test1/test.txt
minio/test1/新建文本文档.txt
4.Java操作
4.1上传
package com.yg.springboot.util.minio;
import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.UploadObjectArgs;
import io.minio.errors.MinioException;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
public class FileUploader {
/**
* bucket名称
*/
private final static String bucketName = "test";
public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeyException {
try {
// Create a minioClient with the MinIO server playground, its access key and secret key.
MinioClient minioClient =
MinioClient.builder()
.endpoint("http://127.0.0.1:9090")
.credentials("admin", "12345678")
.build();
// Make 'asiatrip' bucket if not exist.
boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
if (!found) {
// Make a new bucket called 'asiatrip'.
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
} else {
System.out.println("Bucket 'asiatrip' already exists.");
}
// Upload '/home/user/Photos/asiaphotos.zip' as object name 'asiaphotos-2015.zip' to bucket
// 'asiatrip'.
minioClient.uploadObject(
UploadObjectArgs.builder()
.bucket(bucketName)
.object("asiaphotos-2015.zip")
.filename("D:/chunk-uploader-main.zip")
.build());
System.out.println(
"'D:/chunk-uploader-main.zip' is successfully uploaded as "
+ "object 'asiaphotos-2015.zip' to bucket 'asiatrip'.");
// asiatrip/asiaphotos-2015.zip
} catch (MinioException e) {
System.out.println("Error occurred: " + e);
System.out.println("HTTP trace: " + e.getMessage());
}
}
}