purazumakoiの[はてなブログ]

技術メモから最近はライフログも増えてきてます。

awsでAmazon Linuxにs3cmdをインストールしてコマンドラインでS3を操作する

via

s3cmdをインストール

epelリポジトリから

sudo yum -y --enablerepo epel install s3cmd

コンフィグウィザードを起動

  • Access KeyはAWSサイトの「アカウント」→「セキュリティ証明書」
  • Secret Key「シークレットアクセスキー」の「表示」リンクをクリックする

f:id:purazumakoi:20130828192636j:plain

s3cmd --configure

Access Key:
Secret Key:
Encryption password:
Path to GPG program [/usr/bin/gpg]:
Use HTTPS protocol [No]:
HTTP Proxy server name:
Test access with supplied credentials? [Y/n]

Retry configuration? [Y/n] → n
Save settings? [y/N] → y

Configuration saved to '/home/ec2-user/.s3cfg'

/home/ec2-user/.s3cfg に保存されたようだ
同じコマンドを打てばもう一回設定できる

バケット一覧

s3cmd ls

「The AWS Access Key Id you provided does not exist in our records.」
というエラーが出たらAccess Ke、Secret Key:あたりが違うはず

バケットを作る

バッケト名は全ユーザでユニークなのでかぶったら変える

s3cmd mb s3://hogebacket

バケットの使用量を確認(-Hオプションで見やすい単位に)

s3cmd du s3://hogebacket -H

EC2からS3にフォルダごとアップロード

s3cmd put -r /var/www/html/ s3://hogebacket/html/
  • /var/www/htmlフォルダをアップロードする
  • s3://hogebacket/htmlフォルダは予め作っておく

S3からEC2にダウンロード

s3cmd get -r s3://hogebacket/html/ /var/www/html_hoge/
  • /var/www/html_hoge/は予め作っておく 権限はとりあえず777で試す

EC2→S3への同期

アップロードと違うのは、完全にファイル、フォルダの情報を”同期”すること

s3cmd sync /var/www/html/ s3://hogebacket/html/