Help us understand the problem. What is going on with this article?

curlコマンドを使って、ストレージサービスにファイルをアップロードしたい

More than 1 year has passed since last update.

はじめに

クラウドのストレージサービス(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

最近は、様々なストレージサービスがあるので、うまいこと利用できれば幸いです。

Ackkeee
OpsなIT戦士
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away