当前位置: 首页 > news >正文

minio使用shell上传文件

minio使用shell上传文件

  • 前言
  • 1. 编写调用脚本
  • 2.测试脚本上传
  • 3.候选脚本

前言

业务场景需要实现,服务器文件上传至存储服务。一种方式是安装minio的linux客户端,另一种方式是通过调用minio的api接口实现文件上传。后一种方式不需要依赖minio的客户端使用起来又一定便利性。本文介绍通过minio api接口的上传文件的脚本写法及用法

1. 编写调用脚本

#!/bin/bash# 检查参数是否正确
if [ "$#" -ne 2 ]; thenecho "usage: $0 <bucket-name> <file-path>"exit 1
fi# 设置MinIO信息
minio_url="http://192.168.100.100:7000"
minio_access_key="minio"
minio_secret_key="minio@admin"
minio_bucket="$1"# 设置文件名和路径
file_path="$2"
file_name="$(basename $file_path)"# 生成 HTTP 头
http_date=$(date -u "+%a, %d %h %Y %H:%M:%S GMT")
http_content_md5=$(openssl md5 -binary < $file_path | base64)
http_content_type=$(file -b --mime-type $file_path)
http_request_path="/$minio_bucket/$file_name"
http_request_body=""http_request="PUT\n$http_content_md5\n$http_content_type\n$http_date\n$http_request_path"
http_signature=$(echo -en "${http_request}" | openssl sha1 -binary -hmac "${minio_secret_key}" | base64)# 使用 cURL 和 MinIO API 上传文件
curl -X PUT \-H "Date: $http_date" \-H "Content-Type: $http_content_type" \-H "Content-MD5: $http_content_md5" \-H "Authorization: AWS $minio_access_key:$http_signature" \--upload-file "$file_path" \"$minio_url/$minio_bucket/$file_name"

2.测试脚本上传

./upload_to_minio_new.sh aaaa upms_install.sh

3.候选脚本

#!/bin/bash# usage: ./minio-upload my-bucket my-file.zipbucket=$1
file=$2
host=192.168.100.100:7000
s3_key='minio'
s3_secret='minio@admin'
resource="/${bucket}/${file}"
content_type='application/zip'
date=$(date -R)
filesize=$(stat -c%s "$file")_signature="PUT\n\n${content_type}\n${date}\n${resource}"
signature=$(echo -en "${_signature}" | openssl sha1 -hmac "${s3_secret}" -binary | base64)curl -v --fail \-X PUT \--data-binary "@$file" \--header "Host: ${host}" \--header "Date: ${date}" \--header "Content-Type: ${content_type}" \--header "Content-Length: ${filesize}" \--header "Authorization: AWS ${s3_key}:${signature}" \http://${host}${resource}
http://www.lryc.cn/news/237586.html

相关文章:

  • LeetCode538. Convert BST to Greater Tree
  • iPaaS和RPA,企业自动化应该如何选择?
  • AI实践与学习1_Milvus向量数据库实践与原理分析
  • 3Dexcite deltgen 2022x 新功能
  • 代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形
  • 【2023云栖】陈守元:阿里云开源大数据产品年度发布
  • Element UI 禁用数字输入框组件添加鼠标滚动事件
  • 担忧CentOS停服?KeyarchOS系统来支撑
  • 聚观早报 |联想集团Q2财季业绩;小鹏汽车Q3营收
  • SAP ABAP权限控制中常用TCODE
  • 云计算赛项容器云2023搭建
  • 11.1 文件拷贝移动与删除
  • redhat下使用CentOS yum源,并安装docker
  • 基于单片机体温脉搏检测控制系统及源程序
  • MyBatis-Plus逻辑删@TableLogic
  • 本地私域线上线下 线上和线下的小程序
  • 【前端学java】java中的Object类(8)
  • TensorFlow实战教程(二十六)-什么是生成对抗网络GAN?基础原理和代码普及
  • IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Maven依赖管理,版本号管理,继承和聚合
  • OpenVPN Connect使用连接公网VPN服务器实现内网穿透
  • Redis(集合Set和有序集合SortedSet)
  • 黔院长 | 《黄帝内经》——奇病论!
  • 手撕单链表(C语言)
  • 60 权限提升-MYMSORA等SQL数据库提权
  • 【C++上层应用】2. 预处理器
  • ISP--Black Level Correction(黑电平矫正)
  • python项目源码基于django的宿舍管理系统dormitory+mysql数据库文件
  • Java和 JS 的10大不同之处,你清楚吗?
  • vue动态配置路由
  • 科技云报道:全球勒索攻击创历史新高,如何建立网络安全的防线?