Firestore のデータのバックアップ

Firebase のデータベースのバックアップについて書いてみようと思います。

Firebase には Realtime Database と Cloud Firestore がありますが、

Realtime Database の方は Firebase コンソールから使えるバックアップ機能があります。

日次バックアップや gzip 圧縮、30日ライフサイクルといった機能を持っています。

しかし、Cloud Firestore の方には、今のところそのような機能が用意されていません。


Cloud SDK の gcloud コマンドを使って、Firebase Storage にデータをコピーすることができます。

Cloud SDK をインストールし、以下のコマンドなどで準備を整えます。

$ gcloud init
$ gcloud config set project [project_id]


以下のコマンドで、Firestore のデータを Firebase Storage にコピーします。

なお、実行には Blaze プランが必要なようです。

$ gcloud firestore export gs://bucket_name/folder_name


Firebase Storage のファイルを、ローカルにコピーするには以下のようにします。

local_backup_dir は予め作っておく必要があります。

$ gsutil cp -r gs://bucket_name/folder_name local_backup_dir

しかし、筆者の Windows 環境では、このコマンドを実行した際に以下のエラーが出ました。

UnicodeDecodeError: 'ascii' codec can't decode byte 0x83 in position 0: ordinal not in range(128)

Cloud SDK に含まれる python に関するエラーのようです。


解決策を探ってみたのですが、どれも上手くいきませんでした。

そこで、Google Cloud Shell 環境を試すことにしました。

GCP コンソールで Cloud Shell を開き、上記の gsutil cp コマンドを実行します。

すると、今度は上手くいきました。


Cloud Shell にて、コピーしたフォルダを zip 圧縮します。

$ zip export.zip local_backup_dir

最後に、そのアーカイブファイルを、ローカルの PC にコピーします。

$ gcloud alpha cloud-shell scp cloudshell:/home/(usename)/export.zip localhost:.

cloudshell: の部分に Cloud Shell 環境のファイルパスを、localhost: の部分にローカルのパスを指定します。

フォルダをコピーしたい場合は、--recurse パラメータが必要です。

※掲載内容は、記事公開時点のものです。紹介されているサービス内容は変更される場合がありますので、ご利用の際は事前にサービス提供元等をご確認ください。

shiba

スマホアプリエンジニアです。
Firebaseについて勉強した事を書いていこうと思います。

銀座ITラボ | FirebaseやAWSに関する技術情報を配信中

銀座ITラボは、iOS/Androidアプリなどのスマホアプリ、Firebase、AWSなどのクラウドサービス、Webシステム等の技術情報に関する記事を紹介するシンプルメーカーのオウンドメディアです。

0コメント

  • 1000 / 1000