はじめに
クラウドのストレージサービス(s3とかBlobとか)に、ファイル転送したいなって時がたまにあります。
しかも日付でディレクトリ分けられると、なお嬉しい的なこともしばしば。
既に同じようなスクリプトは多く出回っているのですとは思うのですが、
必要なだなぁーと思う時は、大体 忘れてしまっており、その都度調べて作るということが多々あったため、
個人用のテンプレート的なものを置いておこうと思いました。
ということで、早速サンプルスクリプト
適宜、ファイル名やアクセスキーなどを変更したら使えるかと思います。
curl_upload.sh
#!/bin/bash
file="FILE_NAME"
bucket="BUCKET__NAME"
subdir=`date +%Y%m%d`
resource="/${bucket}/${subdir}/${file}"
contentType="text/plain"
date="$(LC_ALL=C date -u +"%a, %d %b %Y %X %z")"
accessKey="ACCESS_KEY"
secretKey="SECRET_KEY"
# s3の場合は、endpointは無くても良いかも(その時の環境に合わせて使用する)
endpoint="https://STORAGE_PROXY_ADDRESS"
stringToSign="PUT\n\n${contentType}\n${date}\n${resource}"
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${secretKey} -binary | base64`
curl -k -X PUT -T "${file}" \
-H "Host: ${endpoint}" \
-H "Date: ${date}" \
-H "Content-Type: ${contentType}" \
-H "Authorization: AWS ${accessKey}:${signature}" \
https://${endpoint}/${bucket}/${subdir}/${file} -v
最近は、様々なストレージサービスがあるので、うまいこと利用できれば幸いです。