MinIO
MinIO介绍
Minio是个基于Golang编写的开源 对象存储 套件,是一个基于Apache License v2.0开源协议的对象存储服务,兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,如:图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
基于Minio轻量的特点,它得到类似 java 、 Python 或 Go 等语言的 sdk 支持。
地址:
部署
说明
操作系统:CentOS7,介质地址:,安装目录:/opt/module/minio,挂载单独硬盘。
root 用户操作:
挂载硬盘:
创建目录: mkdir -p /data/minio
执行挂载:mount /dev/sdb1 /data/minio
自动挂载:echo "/dev/sdb1 /data/minio ext4 defaults 0 0">>/etc/fstab
授权目录: chown admin:admin /data/minio
admin用户操作:
$ mkdir /data/minio/dt1
$ mkdir -p /opt/module/minio/bin
$ mkdir -p /opt/module/minio/logs
$ cd /opt/module/minio/bin
$ wget
$ chmod +x minio
环境变量 配置和启动:
sudo vim /etc/pro File .d/my_en.sh
export MINIO_ACCESS_KEY=admin
export MINIO_SECRET_KEY=12345678
export PATH=$PATH:/opt/module/minio/bin
$ . /etc/profile
$ echo $MINIO_ACCESS_KEY
$ echo $MINIO_SECRET_KEY
$
$ nohup minio server
--console-address :9090
--address :9098
/data/minio/dt1
>/opt/module/minio/logs/minio.log 2>&1 &
$ ps -ef | grep minio
编写启停脚本
#!/bin/bash
if [ $# -lt 1 ]
then
echo "请输入参数: start、stop"
fi
case $1 in
"start")
nohup /opt/module/minio/bin/minio server
--console-address :9090
--address :9098
/data/minio/dt1
>/opt/module/minio/logs/minio.log 2>&1 &
;;
"stop")
kill -9 `ps -ef | grep minio | grep -v grep | awk '{print $2}'`
;;
esac
访问地址: ,admin,12345678
注:创建Bucket,就可以上传下载文件了。
Java进行上传和下载操作
pom.xml
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.0</version>
</dependency>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.3.3</version>
</dependency>
案例代码
import io.minio.*;
import java.io.File;
import java.io. InputStream ;
import java.util.UUID;
public class MinioDemo01 {
public static void main(String[] args) throws Exception {
// 地址
String minioServer = "#34;;
//认证用户名
String username = "admin";
//认证密码
String password = "12345678";
MinioClient minioClient = MinioClient.builder().endpoint(minioServer).credentials(username, password).build();
// 创建bucket
String bucketName = "hello";
createBucket(minioClient, bucketName);
// 上传文件
String localFilePath = "D:\Temp\data.zip";
String fileURL = uploadLocalFile(minioServer, minioClient, bucketName, localFilePath);
System.out.println("地址:" + fileURL);
//
}
public static InputStream download(MinioClient minioClient, String bucket, String fileName, File localFilePath) throws Exception {
InputStream inputStream = minioClient. GetObject (GetObjectArgs.builder().bucket(bucket).object(fileName).build());
return inputStream;
}
public static String uploadLocalFile(String minioServer, MinioClient minioClient, String bucket, String filePath) throws Exception {
File file = new File(filePath);
String fileName = file.getName();
String newFileName = UUID.randomUUID().toString() + fileName.substring(fileName.indexOf("."));
minioClient.uploadObject(UploadObjectArgs.builder().bucket(bucket).object(newFileName).filename(filePath).build()).toString();
return String.format("%s/%s/%s", minioServer, bucket, newFileName);
}
public static boolean createBucket(MinioClient minioClient, String bucketName) {
boolean isCreated = false;
try {
boolean isExist = minioClient.bucket Exists (BucketExistsArgs.builder().bucket(bucketName.toLowerCase()).build());
if (!isExist) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName.toLowerCase()).build());
isCreated = true;
}
} catch (Exception e) {
e.printStackTrace();
}
return isCreated;
}
}