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

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

相关推荐
崔庆才丨静觅12 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby606113 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了13 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅13 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅13 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅14 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment14 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅14 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊14 小时前
jwt介绍
前端
爱敲代码的小鱼14 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax