Amazon S3をバックアップ先として使ってみる
Amazon S3 申し込み
- http://www.misuzilla.org/~mayuki/misc/AmazonS3
- サインアップ (日本のamazonのメールアドレスでいけた)
- E-mailが来る
- アカウントの使用状況を見るためのURLがかかれている
基本情報取得
- 右上の「Your Web Services Account」にマウスを合わせるとポップアップ
- View Access Key Identifiersを選択
- X.509 Certも入手できるのでHTTPSとかはこれを使うのがよい
secret Access Keyは再生成することもできる
構成要素
Amazon S3 実際に使ってみる
s3sync.rb (http://s3sync.net/wiki)
- S3に再帰的にアップロードする
s3sync.rb -v -r /path/to/data bucketname:data/
- S3から再帰的にダウンロードする
s3sync.rb -v -r bucketname:data/ /path/to/data
bucketname:/backup/ としないこと。ForkLiftでみると落ちるようになる。
s3config.yml
s3config.ymlというファイル(sampleも付いている)にAccess KeyとSecret Keyを書いておけば、s3syncもs3cmdも自動的にこのファイルから読み込んでくれるので便利。
s3cmdのput/getの引数の順番
s3cmd.rbは、put/getの両方とも同じ引数の順番なことに注意。必ず最初にS3のbucketnameが来る。
- s3cmd.rb get BucketName:TheFileOnS3.txt ALocalFile.txt
- s3cmd.rb put BucketName:TheFileOnS3.txt ALocalFile.txt
1.0GBのディレクトリを丸ごと転送してみた。
かかった時間はだいたい1時間半。
28.71s user 24.42s system 1% cpu 1:21:25.59 total
1.4Gのディレクトリで
37.61s user 32.42s system 0% cpu 2:24:21.43 total
まあ、こんなのたいして参考にはならないけどいちおう。しかし遅いなぁ。
ForkLift (http://www.binarynights.com/)
15-day trialを使用。(買うと$29.95)
トップでフォルダを作成することでbucketが作れるみたいだ。
ただし、s3sync.rbで bucketname:/hoge/ というように、/を先頭に付けたディレクトリを作ってしまうとForkLiftごと落ちてしまう。
Access Controlを変える
JungleDisk (http://www.jungledisk.com/)
- Access KeyとSecret Acess Keyの二つを入力
- EncyptSettingで暗号化しない(Do not encrypt files)を選択
- あとで別のs3syncとかからいじれるように
- Bucket Nameは"pictures"にする
- できたみたい。別にBucket Nameは共通じゃないのかな?
- と思ったら、 9323ed955AAAAA6057dea858-pictures みたいなのができた
- 内部構成も JungleDisk 独自形式がいっぱいみたいだ。
- mountされる
- /Volumes/JungleDisk
- /Volumes/JungleDiskBetaUncompressed
普通にcp -r とかいけた感じ。
注意:
どうもJungleDiskは、他のツールとは違って、独自の形式で中身を作るみたい。従って、
- JungleDiskで作ったbucketは頭に固有IDっぽいのが付く
- 付くが、junglediskを経由しているとその部分は見えない
- ForkLiftで作ったbucketはJungleDiskでは見えない
- s3sync.rbでは見えた
JungleDiskだけで完結させるのならば構わないだろうが、他のツールと一緒にとなるとJungleDiskは避けた方がよさそうだ。
rsh3ll (http://rubyforge.org/projects/rsh3ll/)
対話型なんだけど、host、user、passコマンドを使って設定して、listbucketsを行っても、listを行ってもなにも出ない。むふー。
お金はどれぐらいかかるの?
今回の転送コスト。
- 転送容量: 3.409GB
- 転送コスト: $0.35 ($0.10 per GB)
- out: $0.01 (0.014GB)
- PUT or LIST request: $0.08 (7502 Requests)
- GET: $0.01 (39 Requests)
- 合計: $0.45
$0.45ってことは、119円換算で53円。安い…。
今回は写真を貯めておくために使おうと思っているので、転送コストはあんまり考えないとし、今回の転送では0.4GBぐらいテストで無駄なのを送ってしまっているが、まあざっくり保持容量を4Gとして、
4GB * $0.15 per GB-Month = $0.6 = 71.4円/month
仮にあと10GB増えたとして、
14GB * $0.15 = $2.1 = 250円/month
これなら全然問題ないね。