Amazon Simple Storage Service(A3)をバックアップストレージとして使うときのメモです。
ここでは自分のみがアクセスする目的と考え、ファイルを公開して配布する目的では必要となるであろうログの取得についてなどは省きます。
http://developer.amazonwebservices.com/connect/entry.jspa?externalID=372&categoryID=47
バケツブラウザ。作ったり削除したり出来る。でもファイルは殆ど扱えないです。
GUIで操作できるバックアップを目的としたツール。
http://jroller.com/page/silvasoftinc/Weblog?catname=%2F%23Sh3ll
CLI(コマンドライン)的に扱えるツール。C#製。もともとはjSh3ll。
http://rubyforge.org/projects/rsh3ll/
jSh3llのRuby版。UNIX系とか向け。
http://developer.amazonwebservices.com/connect/thread.jspa?threadID=10116&tstart=0
Perlで書かれた同期ツール。S3::AWSAuthConnectionを必要とします。なにそれ。
http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz (README.txt)
s3syncのRuby版。
http://www.backup-manager.org/
Linuxとかで動くバックアップツール。0.7.3 以降で S3 をサポートしています。
S3をWebDAVに見せかけるプロクシ。Windows、Mac OS X、Linux版がある。
でもWindowsのはなんだかうまく動きませんでした。
README.txtを読めば大体のことが書いてありますが、折角なのでまとめておきます。
アーカイブをダウンロードして展開します。
次にとりあえず必要な環境変数を何らかの方法でセットします。必要な環境変数は以下の二つです。
例えばいずれは繰り返し実行することを考え、シェルスクリプトを作成して、
#!/bin/sh AWS_ACCESS_KEY_ID='AccessKey' AWS_SECRET_ACCESS_KEY='SecretAccessKey' export AWS_SECRET_ACCESS_KEY export AWS_ACCESS_KEY_ID ruby s3sync.rb -option
などとします。 最初は
ruby s3sync.rb $@
としていてそのシェルスクリプトを使って試行錯誤すると良いのかも。
data ディレクトリとそれ以下を bucketname という bucket の /backup/ にコピーする
s3sync -v -r /path/to/data bucketname:/backup/
bucketname という bucket の /backup/ にある data ディレクトリの内容をローカルにコピーする
s3sync -v -r bucketname:/backup/data/ /path/to/data
/backup/data/の最後のスラッシュは重要。/path/to/data ディレクトリに/backup/dataの中身が展開されます。
マウントできたらあとは普通にFinderでファイル操作を行えるようになります。
なお作成したbucketとアイテムの権限はprivateとなっているので、そのままでは外からは読めません。
以下は #Sh3ll で説明しますが、jSh3llやrSh3llなどでも共通だと思われます。
#Sh3ll> host s3.amazonaws.com Host = 's3.amazonaws.com' #Sh3ll> user AccessKey User = 'AccessKey' #Sh3ll> pass SecretKey Password = 'SecretKey'
#Sh3ll> bucket bucketname Bucket set to 'bucketname'
bucket コマンドで操作する bucket を設定してから。
#Sh3ll> createbucket Created bucket 'bucketname'
bucket コマンドで操作する bucket を設定し、さらに中身を全て削除してから。
#Sh3ll> deletebucket Deleted bucket 'bucketname'
#Sh3ll> listbuckets bucketname - 2006/11/19 0:30:30 bucketname2 - 2006/11/19 0:30:30
以下、基本的に bucket コマンドで操作する bucket を設定してから実行します。
#Sh3ll> putfile itemname test.txt Stored item 'bucketname/itemname'
#Sh3ll> putdir dirname Stored item 'bucketname/itemname' Stored item 'bucketname/itemname2' Stored item 'bucketname/itemname3'
ディレクトリを作成できるわけではないので注意。
#Sh3ll> list Item list for bucket 'bucketname' key=itemname, owner=username, size=100 bytes, last modified=2006/11/19 4:07:57 key=itemname2, owner=username, size=100 bytes, last modified=2006/11/19 4:07:57
この username は AWS を使ったときの Nickname?
#Sh3ll> delete itemname Deleted 'bucketname/itemname'
#Sh3ll> deleteall
特定のプレフィックスを持つファイル(item*のような感じに)を消したい場合には
#Sh3ll> deleteall item Deleted 1 item(s), could not delete 0 item(s)
とするとkeyがitemで始まるファイルが削除されます。
#Sh3ll> getfile itemname gaogao.txt Got item 'bucketname/itemname' as 'gaogao.txt'
#Sh3ll> setacl bucket bucketname public-read Set ACL for bucket 'bucketname' to public-read
#Sh3ll> setacl item itemname public-read Set ACL for item 'itemname' to public-read
権限は bucket と同じ。
#Sh3ll> putfilewacl itemname test.txt public-read
#Sh3ll> putdirwacl dir public-read