s3cmdとs3syncをさわってみる - mechamogera/MyTips GitHub Wiki
導入環境
- rvm 1.10.3
- ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin10.8.0]
- aproxacs-s3sync-1.3.6
s3cmdとs3syncの導入、初期設定
- gemの導入
# Ruby1.9系
$ gem install aproxacs-s3sync
# Ruby1.8系ならこれ?
$ gem install s3sync
- 環境設定
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'
s3synの使用例
rails hoge --database sqlite3
s3sync -r --delete hoge [bucket名]:data/
s3sync --delete -r [bucket名]:data/hoge /var --exclude='(/\.bundle)|(/vendor/bundle)|(/log/[^/]*\.log)|(/db/[^/]*\.sqlite3)'
メモ
- s3syncでのユーザ権限について
- どうもアップロードしたファイルには、メタ情報としてユーザー、グループのID情報を保持していて、ダウンロード時にアップロード時の状態を再現しようとするみたいである
- このためユーザが存在しなかったりするとエラーになる