仕事中の問題と解決メモ。

最近はPythonとGoogle Cloud Platformがメイン。株式会社ビズオーシャンで企画と開発運用、データ活用とか。 http://mstdn.bizocean.co.jp/@uyamazak https://github.com/uyamazak/

Google Cloud Storageにプロジェクトのディレクトリをまるごとバックアップする

gitはバックアップではないとどこかで聞いたのが印象的で、いつかやろうと思ってたのをやった。

たしかにパスワードとか環境変数もろもろはgitに入れていないので、開発サーバーが死んだときは大変面倒なことになってしまう。

今のところ、GCPで済ましているのでバックアップ先もCloud Storageに。

とりあえず手で思いつく通りやったのをファイルにまとめて実行してみたらできた。

#!/bin/bash

BACKUP_FILENAME="oceanus-backup-`date +'%Y-%m-%d-%I-%M-%S'`.tar.gz"
echo $BACKUP_FILENAME

gcloud config configurations activate oceanus
tar --exclude-vcs -zcvf $BACKUP_FILENAME /path/to/project
gsutil cp $BACKUP_FILENAME gs://path-to-gs-bucket
rm $BACKUP_FILENAME

こけた時の通知などが今後必要になる。

.gitのフォルダはいらないなと思って、検索してたらtarの--exclude-vcsというオプションを見つけた。.gitをはじめバージョン管理系のファイルを省くルールが適応されて自分で書かなくてよかったので便利。

あと実行するマシンでは複数のGCPプロジェクトを使っているので、gcloud config configurations activateで対象のプロジェクト設定に切り替えている。

設定の追加は下記が参考になる

gcloud config configurations create  |  Cloud SDK  |  Google Cloud Platform


料金は、とりあえず無難にRegional Storageにしたので、1GB $0.023/month。

1年後の毎月の料金を計算してみると、1回のバックアップで7MB弱だったので、今後増えて10MBになるとして計算してみると

0.01GB * 365days * $0.023 = $0.08395/month

1年回して、毎月約9円。

10倍になっても90円なら問題ない。さらにデータを滅多に触らないことが分かったらNearlineなりColdlineなりにすればさらに節約できそう。

毎日cronで実行するとして、触らない日もあるので、前日との差分がなかったらアップしないとかも考えたけど、この値段なら全部保存しちゃっていいかなと思った。


Google Cloud Storage の料金体系  |  Cloud Storage ドキュメント  |  Google Cloud Platform