首页 > 系统相关 >Shell脚本操作OSS服务:PUT、GET(纯shell脚本无sdk)

Shell脚本操作OSS服务:PUT、GET(纯shell脚本无sdk)

时间:2023-10-30 23:32:11浏览次数:33  
标签:脚本 Shell dateValue GET dest OSS bucket source Key

Shell脚本操作OSS服务:PUT、GET(纯shell脚本无sdk)

前提:

一般情况下对OSS操作都会通过SDK,但是很多情况下对OSS进行简单的上传下载的操作,那么SDK就显得有些臃肿,先要下载sdk包,然后再写些简单的操作脚本,而通过shell脚本就会简单很多。

而且很多场景:线上网站、数据库等,生产出来的网站数据、数据库数据、日志数据都需要来备份,如果备份再本地磁盘,那么没过多久磁盘空间就占用光了,如果是NAS来备份数据,价格又比较贵,如果把数据备份到OSS 低频存储就比较实惠一些。

使用方法:

上传文件到OSS:PUT

#!/bin/bash

host="oss-cn-shanghai.aliyuncs.com"
bucket="bucket名"
Id="AccessKey ID"
Key="Access Key Secret"
osshost=$bucket.$host

source="localfilename"
dest="objecetename"

resource="/${Bucket}/${dest}"
contentType=`file -ib ${source} |awk -F ";" '{print $1}'`
dateValue="`TZ=GMT env LANG=en_US.UTF-8 date +'%a, %d %b %Y %H:%M:%S GMT'`"
stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}"
signature=`echo -en $stringToSign | openssl sha1 -hmac ${Key} -binary | base64`

url=http://${OssHost}/${dest}
echo "upload ${source} to ${url}"

curl -i -q -X PUT -T "${source}" \
    -H "Host: ${OssHost}" \
    -H "Date: ${dateValue}" \
    -H "Content-Type: ${contentType}" \
    -H "Authorization: OSS ${Id}:${signature}" \
    ${url}

下载OSS的文件:GET

#!/bin/bash

host="oss-cn-shanghai.aliyuncs.com"
bucket="bucket名"
Id="AccessKey ID"
Key="Access Key Secret"
osshost=$bucket.$host

source="objecetename"
dest="localfilename"
resource="/${bucket}/${source}"
contentType=""
dateValue="`TZ=GMT env LANG=en_US.UTF-8 date +'%a, %d %b %Y %H:%M:%S GMT'`"
stringToSign="GET\n\n${contentType}\n${dateValue}\n${resource}"
signature=`echo -en $stringToSign | openssl sha1 -hmac ${Key} -binary | base64`

url=http://${osshost}/${source}
echo "download ${url} to ${dest}"

curl --create-dirs \
    -H "Host: ${osshost}" \
    -H "Date: ${dateValue}" \
    -H "Content-Type: ${contentType}" \
    -H "Authorization: OSS ${Id}:${signature}" \
    ${url} -o ${dest}


标签:脚本,Shell,dateValue,GET,dest,OSS,bucket,source,Key
From: https://blog.51cto.com/lenglingx/8097906

相关文章

  • 备份数据库文件至OSS服务(纯shell脚本无sdk)
    背景:凡事使用服务器搭建的网站就需要定时备份网站数据,常见的方法是打包网站目录,然后备份到FTP服务器上等。也有通过OSSSDK把备份的网站文件上传到OSS服务器上,但是通过SDK来实现,需要一定的技术能力,而且相对比较复杂,需要使用更多的文件,而这篇文章是通过shell脚本,并不是通过OSSSDK......
  • 阿里云argusagent的监控客户端的安装脚本,值得借鉴
    阿里云argusagent的监控客户端的安装脚本agent_install_necs-1.7.sh #!/bin/bashecho"installing"exportLANG=en_US.UTF-8exportLANGUAGE=en_US:#有些系统下安装后可能没有写文件的权限,导致日志文件写入失败ulimit-vunlimitedif[[-z"${VERSION}"]];thenVERS......
  • .NET 反序列化 GetterSettingsPropertyValue 攻击链
    0x01 链路1 SettingsPropertyValueSettingsPropertyValue位于命名空间 System.Configuration,用于应用程序存储和检索设置的值,此类具有Name、IsDirty、Deserialized、PropertyValue、SerializedValue等多个公共成员,其中SerializedValue属性用于获取或者设置序列化的值,便于持久......
  • QTreeWidget 的搜索实时显示功能
    QTreeWidget的子条目很多时候需要提供实时的搜索功能,以便能快速找到所需要的条目。代码如下://1.创建当输入框文本变化时的信号槽。connect(ui.lineEditSearch,&QLineEdit::textChanged,this,&Demo01_GUI::OnFindItem);//2.槽函数实现检索时,实时显示符合要求的QTre......
  • Linux21--shell编程基础
    1bashshell介绍#介绍shell是一门解释型、弱类型、动态语言#类比shell语法<===>python语法bash解释器<===>python解释器平台<===>平台2变量2.1基本使用###交互式环境中[root@localhost~]#x=1#1定义变量中间不能有空......
  • QTreeWidget 添加右键菜单
    有时需要为QTreeWidget的子条目添加右键菜单功能,主要有两种方案来实现:方案一该方案比较通用,通过为QTreeWidget建立信号槽,在接受itemPressed的信号时会被触发,然后判断当前是否为鼠标右键,若为鼠标右键则创建添加对应的菜单栏,并提供相应的功能。//1.QTreeWidget*tree为......
  • shell脚本里如何设置Python的环境变量
    在shell脚本中设置Python的环境变量可以通过以下几个步骤来完成。首先,需要确定Python的安装路径。可以通过以下命令来查找Python的安装路径:该命令会返回Python可执行文件的路径,例如:/usr/bin/python。whichpython接下来,将Python的安装路径添加到PATH环境变量中。PA......
  • PowerShell系列(七)PowerShell当中的Provider介绍
    今天给大家讲解PowerShell当中的非常重要的概念Provider相关的知识,希望对大家能有所帮助!1、Provider概念介绍 PowerShell Provider是基于NetFrameWork运行的一个框架,它的作用是让数据(文件、注册表环境对象等等)以特殊的方式保存在PowerShell里面,然后可以直接通过脚本命令查看和管......
  • Linux Shell 基础 -- 总结几种括号、引号的用法
    Shell脚本中经常需要用到一些括号、引号表达式,功能各不相同,本文详细介绍一下。1、双引号""双引号常用于包含一组字符串,在双引号中,除了"$"、"\"、"`(反引号)"有特殊含义外,其余字符(如IFS、换行符、回车符等)没有特殊含义。$a=3$echo"$a"输出结果为3,在双引号中$符......
  • PowerShell脚本调试
    官方的IDEWindowsPowerShellISE是支持调试的。但从PowerShell6.0开始,微软改变了战略计划,PowerShell支持跨平台更名为PowershellCore了。而且安装包中不再带ISE了。我们编写脚本的时候和写程序一样可能会发生问题,如果只使用Write-Host输出信息来调试也太Low了。所以支持脚本调试......