想要的东西总会随着年龄偷偷长大,而能力不会 ------ 夏吉尔硕
快览,本文介绍
- 在minIO上进行成果物部署
- 利用bat脚本避免重复的执行部署命令
- bat脚本转exe,更加规范且解决安全问题
minIO特点是什么
- 部署简单,平台兼容性好
- 兼容Amazon S3接口
- 支持多种SDK,如
Java, python, 或Go
- 存储容量大,单对象最大支持5T
如何在MinIO上进行成果物部署
MinIO的登录平台
-
在平台中进行成果物操作时(上传或者删除),只能进行单文件操作十分不便
使用mc进行部署
-
Windows下进行一键下载
-
配置步骤如下
PS: 下文中执行脚本的默认在mc.exe当前层级执行,否则请将mc更换为mc的引用路径
- 进行服务连接和认证---(必选 )
-
mc alias set minioName http://100.00.000.000:0000 minioUser minioPassword
- mc alias set 支持四个参数进行配置
- @REM minio别名 :
minioName
- @REM IP地址和端口号 :
http://100.00.000.000:0000
- @REM 访问密钥或连接凭证 :
minioUser minioPassword
-
- 查看已连接上的列表---(可选)
mc config host list
- 先清除桶中所有成果物---(可选)
mc rm --recursive --force minioName/bucket-name/xx
- @REM 删除文件和目录 :
rm
- @REM 递归 :
---recursive
- @REM 强制执行 :
--force
- @REM 操作目标对象的路径/层级 :
bucket-name/xx
- @REM 删除文件和目录 :
- 上传成果物到桶中---(必选 )
mc cp --recursive localDist/ bucket-name/Aaa/bb
- @REM 本地文件复制到minio的bucket-name桶 :
mc cp --recursive
- @REM 所需上传的本地成果物路径
localDist/
- @REM 上传的minio目标桶具体位置 :
bucket-name/Aaa/bb
- @REM 本地文件复制到minio的bucket-name桶 :
- 罗列桶中的文件---(可选)
mc ls --recursive --versions minioName/bucket-name
mc命令拓展
-
对mc进行检查更新---(可选)
mc update
-
以树的形式,展示桶中的文件层级(可选)
mc tree minioName/bucket-name
-
比较两个文件夹的区别(可选)
mc diff 本地文件路径 minioName/bucket-name
- 比较鸡肋,只能比较大小上的区别,不会有内容
-
搜索指定文件或指定类型文件(可选)
- mc find myminio/mydata --name "*.ico"
- 如下它支持固定名和通配符
-
了解更多的用法,可以见官网 MiniIO说明
避免部署时重复输入cmd脚本
利用bat,将重复的mc指令一键化,这里分为三个模块
- 利用配置认证信息,自动连接到MinIO
- 利用menu,使其支持部署,清空,清空并部署三类操作
- 配置每种选择对应执行的脚本
- 通过循环比对确定所需删除的远程桶中成果物的目录
-
利用配置的认证信息,自动连接到MinIO
js@REM 建立认证和服务连接--- mc.exe alias set minioName http://100.00.000.000:0000 minioUser minioPassword echo Successfully connected to minio echo]
-
配置menu,使其支持部署,清空,清空并部署三类操作
php@REM 显示功能菜单 goto menu :menu @REM All 清除并部署 clearDir 清除 deploy 直接部署 echo 1 清除存储桶并上传部署 2 清空桶中所有成果物 3 直接部署 set /p ID= please choose: echo] if "%id%" == "1" goto All if "%id%" == "2" goto clearDir if "%id%" == "3" goto deploy echo Incorrect input goto menu pause
-
配置menu,使其支持部署,清空,清空并部署三类操作
php:All @REM 先清除桶中所有文件再更新 @REM 依据将上传成果物的一级目录去删除桶中对应文件,避免桶中未更新文件被删除 dir 本地成果物文件夹\/b/d>deListName.txt for /f %%i in ('dir 本地成果物文件夹\/b/d') do ( mc rm --recursive --force minioName/桶名/%%i) mc cp --recursive 本地成果物文件夹\ minioName/桶名 echo 清除及本地文件上传完成! echo 桶中删除清单在deListName中! echo -------------------------------------------------------------- goto menu pause exit :clearDir @REM 直接清除存储桶中所有文件 mc.exe rm --recursive --force minioName/桶名 echo 清除存储桶中成果物完成! echo -------------------------------------------------------------- goto menu pause exit :deploy @REM 递归复制到目标桶 mc cp --recursive HPP\ minioName/桶名 echo 成果物上传成功! echo -------------------------------------------------------------- goto menu pause exit
-
通过循环比对确定所需删除的远程桶中成果物的目录,其实分为三步
for /f %%i in ('dir 本地成果物文件夹\/b/d') do ( mc rm --recursive --force minioName/桶名/%%i)
- 枚举当前成果物中一级文件名,在MinIO中挨个进行删除
dir 本地成果物文件夹\/b/d>deListName.txt
- 将当前成果物下的一级文件的名称存到
deListName
文本中记录
- 将当前成果物下的一级文件的名称存到
mc cp --recursive 本地成果物文件夹\ minioName/桶名
- 清除后再将本地成果物进行上传,达到旧文件更新的目的
优化(将bat转为exe)
- 此时编写的bat,只要执行就可以操作了,那么它的缺点是什么?
- bat文件不够正式
- 使批处理脚本更加隐蔽和良好兼容性
- 防止通过脚本中的认证信息,编写其他功能,造成功能水平越权
- 如:给定管理进行更新,但其可以根据这里的访问密钥编写其他权限功能,如清除操作
如何将bat转为exe文件
使用市面最常用的第三方免费工具 Bat To Exe Converter
- 可进行可执行exe加密及执行形式配置
- 可在版本信息中配置exe执行图标及具体版本号