Amazon も独自の CLI ツールを提供しています。
http://aws.amazon.com/cli/から
<ブロック引用>使い慣れた構文を使用して、ディレクトリベースのリストで S3 バケットの内容を表示できます。
$ aws s3 ls s3://mybucket
LastWriteTime Length Name
------------- ------ ----
PRE myfolder/
2013-09-03 10:00:00 1234 myfile.txt
...
1 つのフォルダー レベルのコマンドで、複数のファイルの再帰的なアップロードとダウンロードを実行できます。 AWS CLI はこれらの転送を並行して実行し、パフォーマンスを向上させます。
$ aws s3 cp myfolder s3://mybucket/myfolder --recursive
upload: myfolder/file1.txt to s3://mybucket/myfolder/file1.txt
upload: myfolder/subfolder/file1.txt to s3://mybucket/myfolder/subfolder/file1.txt
...
sync コマンドを使用すると、ローカル フォルダーの内容を S3 バケット内のコピーと簡単に同期できます。
$ aws s3 sync myfolder s3://mybucket/myfolder --exclude *.tmp
upload: myfolder/newfile.txt to s3://mybucket/myfolder/newfile.txt
...
ファイル関連コマンドのドキュメントはこちらです。
S3cmd あなたが望むことをします。ファイルのアップロードとダウンロード、ディレクトリの同期、バケットの作成。
<ブロック引用>S3cmd は、Amazon S3 および S3 プロトコルを使用する他のクラウド ストレージ サービス プロバイダー (Google Cloud Storage や DreamHost DreamObjects など) でデータをアップロード、取得、管理するための無料のコマンド ライン ツールおよびクライアントです。コマンド ライン プログラムに精通しているパワー ユーザーに最適です。また、cron などからトリガーされるバッチ スクリプトや S3 への自動バックアップにも最適です。
できない場合 (おそらく共有ホストを使用している場合)、または追加のツールをインストールしたくない場合は、bash、curl、および openssl のみを使用できます。
http://tmont.com/blargh/2014/1/uploading-to-s3-in-bash
file=/path/to/file/to/upload.tar.gz
bucket=your-bucket
resource="/${bucket}/${file}"
contentType="application/x-compressed-tar"
dateValue=`date -R`
stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}"
s3Key=xxxxxxxxxxxxxxxxxxxx
s3Secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`
curl -L -X PUT -T "${file}" \
-H "Host: ${bucket}.s3.amazonaws.com" \
-H "Date: ${dateValue}" \
-H "Content-Type: ${contentType}" \
-H "Authorization: AWS ${s3Key}:${signature}" \
https://${bucket}.s3.amazonaws.com/${file}
上記のリンクのスクリプトからこのスクリプトを変更したことに注意してください。 -L
を追加しました AWS がそこにリダイレクトを挿入する可能性があるためです。 -L
オプションはリダイレクトに従います。
もう1つの注意事項。これは、5GB を超えるファイルでは機能しません。それらは、より複雑なスクリプトを必要とするマルチパート アップロードを必要とします。