9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Cloud PlatformAdvent Calendar 2015

Day 12

GCPでMineCraft鯖のバックアップ

Last updated at Posted at 2015-12-13

#はじめに
Qiitaでは初めて記事を書きます。あとそんなにGCP知らないです。
だから学びましょう。という記事を書こうと思っていたのですが1日目の方と、まるまる内容がかぶってしまいそうなので、MineCraftのサーバ建てることにしようとしたんですが、普通すぎてつまらないかなと思ったので、サーバのバックアップしてみることにしました。
【2015年版】AWS ユーザが Google Cloud Platform に15分で入門する!

#GCPとは。
Google Cloud Platfromの略です。
Youtubeとかで使われてるインフラを提供してくれる感じですね。
似たようなサービスでMicrosoftのAzure、AmazonのAmazonWebService(AWS)がありますね!
という話も1日目でされています。

#料金
こういうのは、Google Cloud 料金計算ツールで計算するといいです。
今回は、CloudStorageの中で最安であるNearlineを使います。大体1GB/1セントなので500GB保存しても5ドル+ネットワーク使用料ということになりますね。
とはいっても、アップロードは無料なのでそこまでかからないでしょう。
#はじめてみる
早速やってみましょう。
##バケットを作る
GCPのダッシュボードからCloud Storageを選択しバケットを作成します
名前は適当にストレージクラスはNearlineを選択します。場所は好きなところを。

##gsutilコマンドを入れる
Install gsutilを見ながら進めていきます。
ZIPとかからインストールするのはとてもじゃないですが面倒なので、コマンドで入れていきます。

$ sudo apt-get install gcc python-dev python-setuptools libffi-dev
$ sudo apt-get install python-pip
$ sudo pip install -U gsutil

インストール後、以下のコマンドを実行しOAuth認証を行います。

$ gsutil config

設定後、コマンドを実行して作成したバケットが出てくれば成功です。

$ gsutil ls
gs://backet-name/

##試しにアップロードしてみる。
試しに server.proptiesをアップロードしてみたいと思います。

$ gsutil cp server.properties gs://backet-name/
Copying file://server.properties [Content-Type=application/octet-stream]...
Uploading   gs://backet-name/server.properties:         755 B/755 B  

アップロードできたのか確認してみましょう。

$ gsutil ls gs://backet-name/
gs://backet-name/server.properties

しっかりアップロードされています。

##ワールドデータをバックアップする。

さっそく本題のスクリプトを書いていきましょう。

backup.sh
BACKUP_DATE=`date "+%Y%m%d_%H%M%S"`
COMMAND="gsutil cp -r world gs://backet-name/world_backup_${BACKUP_DATE}"
${COMMAND}

いい方法が思いつかなかったです。もっとスマートにかける気がします。
あとは適当にスクリプトをCronとかで動かせば自動的にバックアップされます。

##ライフサイクルを設定する
このまま動かし続けたら永遠にファイルはたまっていきます。料金もすごいことになってしまうので自動的に削除するようにライフサイクルを設定しましょう。
lifecycle - Get or set lifecycle configuration for a bucket

lifecycle_config.json.json
{
  "rule":
  [
    {
      "action": {"type": "Delete"},
      "condition": {"age": 30}
    }
  ]
}

サンプルのままで、十分な気がするので日付を適切に設定して適用させます。

$ gsutil lifecycle set lifecycle_config.json gs://backet-name

#まとめ
たぶん、こういうのってMineCraft以外にも応用できますし、安いので頑張ってください。
わりとダメダメな記事で申し訳ないです。

9
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?