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

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

相关推荐
学习ing小白1 小时前
JavaWeb - 5 - 前端工程化
前端·elementui·vue
真的很上进2 小时前
【Git必看系列】—— Git巨好用的神器之git stash篇
java·前端·javascript·数据结构·git·react.js
胖虎哥er2 小时前
Html&Css 基础总结(基础好了才是最能打的)三
前端·css·html
qq_278063712 小时前
css scrollbar-width: none 隐藏默认滚动条
开发语言·前端·javascript
.ccl2 小时前
web开发 之 HTML、CSS、JavaScript、以及JavaScript的高级框架Vue(学习版2)
前端·javascript·vue.js
小徐不会写代码2 小时前
vue 实现tab菜单切换
前端·javascript·vue.js
2301_765347543 小时前
Vue3 Day7-全局组件、指令以及pinia
前端·javascript·vue.js
ch_s_t3 小时前
新峰商城之分类三级联动实现
前端·html
辛-夷3 小时前
VUE面试题(单页应用及其首屏加载速度慢的问题)
前端·javascript·vue.js
田哥coder3 小时前
充电桩项目:前端实现
前端