GoogleCloudStorage
nearline
Coldline

Google Cloud Storage Nearline の使い方

More than 1 year has passed since last update.
2016.10.28追記

Coldlineという、Nearlineよりさらに長期保存向けのものも追加されました。gsutil の使い方は変わりませんので、nearline としているところを coldline とすることでそのまま利用出来ます。
内容やNearlineとの違いに関しては「Google Cloud StorageのColdlineをNealineと比較」をご確認ください。


Nearline / Coldline Storage とは

Amazon S3 Glacier などへの対抗馬で、比較的アクセスが少なかったり長期保存したりという用途向けのサービスです。

Nearline: 保管$0.010/GB/mo, アップロード無料, ダウンロード$0.13/GB
Coldline: 保管$0.007/GB/mo, アップロード無料, ダウンロード$0.17/GB

詳しくは先の通り比較した記事をご覧ください。

かんたんスタートアップ

Webで良ければチョロいです。

  1. Google Cloud Console - Storage に行く
  2. (プロジェクトがなければ作ったりクレカを登録したりする手順が入るかも)
  3. 「バケットを追加」から作成
  4. 名前はお好きにuniqなものを。クラスは Nearline、場所は日本ならアジアがいんじゃないかな多分。
  5. 出来上がったらそのバケットの中に移動してるはず
  6. とりあえず上のボタンからアップロード・ダウンロードをしてみよう

Webだと2-4MB/secぐらいかな?

本格的に使う

gsutil が、かなりの規模まで Google Cloud Storage をシームレスに扱える上にチョッパヤな万能ツールです。ただしコンソール。

インストール

基本的に Google Cloud SDK を入れると付いてきます。
Python2.7ですが、入っていない場合もSDKに付いてくるようです。
詳しくは公式の Install gsutil を参照してください。

使い方

Usage: gsutil [-D] [-DD] [-h header]... [-m] [-o] [-q] [command [opts...] args...]
Available commands:
acl            Get, set, or change bucket and/or object ACLs
cat            Concatenate object content to stdout
compose        Concatenate a sequence of objects into a new composite object.
config         Obtain credentials and create configuration file
cors           Set a CORS JSON document for one or more buckets
cp             Copy files and objects
defacl         Get, set, or change default ACL on buckets
du             Display object size usage
hash           Calculate file hashes
help           Get help about commands and topics
lifecycle      Get or set lifecycle configuration for a bucket
logging        Configure or retrieve logging on buckets
ls             List providers, buckets, or objects
mb             Make buckets
mv             Move/rename objects and/or subdirectories
notification   Configure object change notification
perfdiag       Run performance diagnostic
rb             Remove buckets
rm             Remove objects
rsync          Synchronize content of two buckets/directories
setmeta        Set metadata on already uploaded objects
signurl        Create a signed url
stat           Display object status
test           Run gsutil tests
update         Update to the latest gsutil release
version        Print version info about gsutil
versioning     Enable or suspend versioning for one or more buckets
web            Set a main page and/or error page for one or more buckets

特に嵌まりポイントも無く見れば分かるだろーって感じですがザッと。

gsutil_commands.sh
# バケット一覧
gsutil ls
gsutil ls -L   # 詳細

# ファイル一覧
gsutil ls gs://your_bucket/
gsutil ls -la gs://your_bucket/

# アップロード
gsutil cp local_file gs://your_bucket/
gsutil cp *.txt gs://your_bucket/foobar
gsutil cp -r local_dir gs://your_bucket/
gsutil -m cp -r local_dir gs://your_bucket/  # マルチプロセスも可能

# ダウンロード
gsutil cp gs://your_bucket/foobar.txt .
gsutil cp -r gs://your_bucket/dir .
gsutil cp gs://your_bucket/foobar.txt .
gsutil -m cp gs://your_bucket/foobar.txt .
gsutil -m cp -r gs://your_bucket/log[0-3]* dir  # "log01.txt"などをDL

# 削除
gsutil rm gs://your_bucket/foobar
gsutil -m rm gs://your_bucket/*

# rsync
gsutil rsync -r data gs://your_backet  # コピーのみ
gsutil -m rsync -r data gs://your_backet
gsutil rsync -d -r data gs://your_backet  # 同期

# s3からまとめてコピー
gsutil -m cp -r s3://your_bucket/* gs://your_bucket/

# gsutilでバケット作成
gsutil mb -c NEARLINE -l ASIA gs://your_new_backet

# バケット削除
gsutil rm -r NEARLINE -l ASIA gs://your_backet

# 履歴管理
gsutil versioning get gs://your_bucket/   # 状態取得
gsutil versioning set on gs://your_bucket/
gsutil versioning set off gs://your_bucket/
# Nearlineでも使える。履歴を見るときは ls -la 。

# ライフサイクル管理
gsutil lifecycle get gs://your_bucket/   # 状態取得
gsutil lifecycle set <json_file> gs://your_bucket/  # 設定
# ライフサイクルは「N日で削除」「履歴管理N件目で削除」など設定出来る。
# 指示はJSONで書く。詳しくは下記URL参照。そんなに難しくない。
# https://cloud.google.com/storage/docs/gsutil/commands/lifecycle

大体分かると思うのであとは help かドキュメントか解説サイト参照で。
gsutil の使い方は standard と変わらないので探せば色々出てきます。

その他のツールなど

gsutil がこんなだし、standard で使える機能は全て使えそうな気がします。

価格と用途

最初にも書いた様に保管料が\$0.007~0.010/GB、転送料が\$0.13~0.17/GBなので、保管するのは安いけどダウンロードしまくると高くなります。例えば1TBを保存しても月800~1,000円程度ですが、 1TB全てダウンロードすると14,000~18,000円ぐらい掛かります 。(1USD=105円計算 2016/10現在)

このため、容量や保管する回数は多いが一括DLすることはあまりない様な用途が向いています。個人だと次の様な感じでしょうか。

(以下、「保管」=ローカルには残さない、「バックアップ」=ローカルにも残す、という意味で使います)

  • 写真など、大事だし良く見るけどそれほど個々のサイズが大きくないデータの保管
  • ISOイメージや動画などで、あまり普段見ることが無いものの保管やバックアップ
  • システムや作業環境などをまるっと定期バックアップ・世代管理
  • 念のために置いておきたい古いログファイルの保管
  • Google Play Store のレビューデータ保管
  • S3の定期バックアップ先

APIは他のストレージと互換性がありますのでBigQueryにロードするなどは可能なはずです。Nearlineならデータアクセス料もさほどではないのでこのような用途も良さそうです。

私は主に会社のPCのディスクイメージをNearlineへ保存しています。
クラッシュしなければ使う事もありませんし、でも長らく放置していていざ必要になったら壊れてたと言うことも無いですし、ちょうど良い置き場所ではないかと思います。

参考


有用そうな情報を見つけたら適宜追加します。