[Shell 腳本] 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}

原文地址: http://blog.daobidao.com/shell-put-get-oss.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章