-
Notifications
You must be signed in to change notification settings - Fork 4
s3cmdとs3syncをさわってみる
mechamogera edited this page Apr 3, 2013
·
17 revisions
- s3cmdとs3syncでs3をさわってみる
- rvm 1.10.3
- ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin10.8.0]
- aproxacs-s3sync-1.3.6
- gemの導入
# Ruby1.9系
$ gem install aproxacs-s3sync
# Ruby1.8系ならこれ?
$ gem install s3sync
- 環境設定
- aproxacs/s3sync参照
- AmazonS3が安すぎるのでデータバックアップ置き場にした | Azrael参照
- IAMのroleは効かない感じ
- 以下のような環境変数を指定する
export AWS_CALLING_FORMAT="SUBDOMAIN" # これをしておかないとAWS_CALLING_FORMATにSUBDOMAINを指定しろというエラーになる場合がある
export AWS_ACCESS_KEY_ID=[任意の値]
export AWS_SECRET_ACCESS_KEY=[任意の値]
# proxyを利用する場合
# export HTTP_PROXY_HOST=[任意の値]
# export HTTP_PROXY_PORT=[任意の値]
# export HTTP_PROXY_USER=[任意の値]
# export HTTP_PROXY_PASSWORD=[任意の値]
- 以下のファイルを下記のような内容で保存しても良い
$S3CONF/s3config.yml
$HOME/.s3conf/s3config.yml
/etc/s3conf/s3config.yml
AWS_CALLING_FORMAT : "SUBDOMAIN"
AWS_ACCESS_KEY_ID : [任意の値]
AWS_SECRET_ACCESS_KEY : [任意の値]
# proxyを利用する場合
# HTTP_PROXY_HOST : [任意の値]
# HTTP_PROXY_PORT : [任意の値]
# HTTP_PROXY_USER : [任意の値]
# HTTP_PROXY_PASSWORD : [任意の値]
- コードの修正
- このままs3cmdを実行するとエラーが出るので修正
/Users/hoge/.rvm/gems/ruby-1.9.3-p125@aws/gems/aproxacs-s3sync-1.3.6/lib/s3sync/HTTPStreaming.rb:53:in `<module:S3sync>': uninitialized constant S3sync::SimpleDelegator (NameError)
$ vi [aproxacs-s3sync gemのhome]/lib/s3sync/HTTPStreaming.rb
# 以下を追加
require 'delegate'
- ローカルからs3へ
rails hoge --database sqlite3
s3sync -r --delete hoge [bucket名]:data/
- s3からローカルへ(-nでドライラン)
s3sync --delete -r [bucket名]:data/hoge /var --exclude='(/\.bundle)|(/vendor/bundle)|(/log/[^/]*\.log)|(/db/[^/]*\.sqlite3)'
- s3syncでのユーザ権限について
- どうもアップロードしたファイルには、メタ情報としてユーザー、グループのID情報を保持していて、ダウンロード時にアップロード時の状態を再現しようとするみたいである
- このためユーザが存在しなかったりするとエラーになる