MinIO成果物部署及bat脚本转exe

想要的东西总会随着年龄偷偷长大,而能力不会 ------ 夏吉尔硕

快览,本文介绍

  1. 在minIO上进行成果物部署
  2. 利用bat脚本避免重复的执行部署命令
  3. bat脚本转exe,更加规范且解决安全问题

minIO特点是什么

  • 部署简单,平台兼容性好
  • 兼容Amazon S3接口
  • 支持多种SDK,如Java, python, 或Go
  • 存储容量大,单对象最大支持5T

如何在MinIO上进行成果物部署

MinIO的登录平台

  • 在平台中进行成果物操作时(上传或者删除),只能进行单文件操作十分不便

使用mc进行部署

  • Windows下进行一键下载

  • 配置步骤如下

    • PS: 下文中执行脚本的默认在mc.exe当前层级执行,否则请将mc更换为mc的引用路径
    1. 进行服务连接和认证---(必选
      • mc alias set minioName http://100.00.000.000:0000 minioUser minioPassword

        • mc alias set 支持四个参数进行配置
        1. @REM minio别名 :minioName
        2. @REM IP地址和端口号 :http://100.00.000.000:0000
        3. @REM 访问密钥或连接凭证 :minioUser minioPassword
    2. 查看已连接上的列表---(可选)
      • mc config host list
    3. 先清除桶中所有成果物---(可选)
      • mc rm --recursive --force minioName/bucket-name/xx
        1. @REM 删除文件和目录 :rm
        2. @REM 递归 :---recursive
        3. @REM 强制执行 :--force
        4. @REM 操作目标对象的路径/层级 :bucket-name/xx
    4. 上传成果物到桶中---(必选
      • mc cp --recursive localDist/ bucket-name/Aaa/bb
        1. @REM 本地文件复制到minio的bucket-name桶 :mc cp --recursive
        2. @REM 所需上传的本地成果物路径 localDist/
        3. @REM 上传的minio目标桶具体位置 :bucket-name/Aaa/bb
    5. 罗列桶中的文件---(可选)
      • mc ls --recursive --versions minioName/bucket-name

mc命令拓展

  1. 对mc进行检查更新---(可选)

    • mc update
  2. 以树的形式,展示桶中的文件层级(可选)

    • mc tree minioName/bucket-name
  3. 比较两个文件夹的区别(可选)

    • mc diff 本地文件路径 minioName/bucket-name
    • 比较鸡肋,只能比较大小上的区别,不会有内容
  4. 搜索指定文件或指定类型文件(可选)

    • mc find myminio/mydata --name "*.ico"
    • 如下它支持固定名和通配符
  5. 了解更多的用法,可以见官网 MiniIO说明

避免部署时重复输入cmd脚本

利用bat,将重复的mc指令一键化,这里分为三个模块

  1. 利用配置认证信息,自动连接到MinIO
  2. 利用menu,使其支持部署,清空,清空并部署三类操作
  3. 配置每种选择对应执行的脚本
  4. 通过循环比对确定所需删除的远程桶中成果物的目录
  • 利用配置的认证信息,自动连接到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执行图标及具体版本号

- 编译完成后,可通过选项进行自定义式一键部署

相关推荐
Freedom风间2 小时前
前端优秀编码技巧
前端·javascript·代码规范
萌萌哒草头将军2 小时前
🚀🚀🚀 Openapi:全栈开发神器,0代码写后端!
前端·javascript·next.js
萌萌哒草头将军2 小时前
🚀🚀🚀 Prisma 爱之初体验:一款非常棒的 ORM 工具库
前端·javascript·orm
拉不动的猪2 小时前
SDK与API简单对比
前端·javascript·面试
runnerdancer3 小时前
微信小程序蓝牙通信开发之分包传输通信协议开发
前端
山海上的风3 小时前
Vue里面elementUi-aside 和el-main不垂直排列
前端·vue.js·elementui
电商api接口开发3 小时前
ASP.NET MVC 入门指南二
前端·c#·html·mvc
亭台烟雨中3 小时前
【前端记事】关于electron的入门使用
前端·javascript·electron