技术

shell通过curl判断本地文件和阿里云OSS文件是否一致大小?

OnlyCEC · 4月15日 · 2020年 390次已读
host="oss-cn-shanghai.aliyuncs.com"
bucket="test"
Id="xxxxxx"
Key="xxxxxx"
osshost=$bucket.$host
#此处加入objectMeta来获取,oss文件元信息。
source="$zipname?objectMeta"

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}
#通过curl请求获取文件大小信息
Etag=`sudo curl -m 1 -i -X GET -H "Host: ${osshost}" -H "Date: ${dateValue}" -H "Content-Type: ${contentType}"  -H "Authorization: OSS ${Id}:${signature}"  ${url} 2> /dev/null|grep 'Content-Length'|awk '{print $2}'|sed s/[[:space:]]//g`
#通过stat获取文件详细信息。
Letag=`stat -t /tmp/"$zipname"|awk '{print $2}'`
#进行大小对比,如果本地大小和oss大小不一致,判定为需要更新!
if [ "$Etag" != "$Letag" ];then
	echo -e "$y1 `date` 发现更新包,开始自动更新.更新完成后会自动退出!$y2" && sleep 1
	update1 && exit 4
fi
0 条回应