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