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执行图标及具体版本号

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

相关推荐
前端小小王14 分钟前
React Hooks
前端·javascript·react.js
迷途小码农零零发24 分钟前
react中使用ResizeObserver来观察元素的size变化
前端·javascript·react.js
娃哈哈哈哈呀1 小时前
vue中的css深度选择器v-deep 配合!important
前端·css·vue.js
旭东怪1 小时前
EasyPoi 使用$fe:模板语法生成Word动态行
java·前端·word
ekskef_sef3 小时前
32岁前端干了8年,是继续做前端开发,还是转其它工作
前端
sunshine6413 小时前
【CSS】实现tag选中对钩样式
前端·css·css3
真滴book理喻4 小时前
Vue(四)
前端·javascript·vue.js
蜜獾云4 小时前
npm淘宝镜像
前端·npm·node.js
dz88i84 小时前
修改npm镜像源
前端·npm·node.js
Jiaberrr4 小时前
解锁 GitBook 的奥秘:从入门到精通之旅
前端·gitbook