Firebaseのバックアップとレストアについて調べてみた

こんにちは、株式会社PentagonでエンジニアをしているYamatoです。

目次

この記事の内容

Firebaseを複数環境セットアップする機会があったので、複数環境に同じコレクション・ドキュメントを挿入する方法を調べました。
今後Firebaseに同じコレクションやドキュメントを挿入する機会があれば参考にしてください。
また、定期的にインポートをすればバックアップとしても機能します。

firebaseの秘密鍵を作成します。

https://firebase.google.com/docs/admin/setup?hl=ja#initialize-sdk
こちらを参考に秘密鍵を作成して作業ディレクトリにfirebase_secret.jsonという名前で保存します。

fsrplのインストール

# https://github.com/matsu0228/fsrpl#homebrew
# Macの場合
# add informal formula
brew tap matsu0228/homebrew-fsrpl

brew install fsrpl

Mac以外の場合は公式のREADMEを参考にインストールをします。

fsrplの使い方

インポート

fsrpl dump --cred firebase_secret.json --path "保存場所" "collection名/ドキュメント名"
# 例
fsrpl dump --cred ./firebase_secret.json --path "userData/test01" "test01/*"

レストア

fsrpl restore --cred firebase_secret.json --path "保存場所" "collection名/ドキュメント名"

# 例
fsrpl restore --cred firebase_secret.json --path "userData/test01" "test01/*"

インポートについて

今回はまとめてインポートをするBashスクリプトを使います。
listというファイルを作成してコレクションを列挙します。

test01
test02
test03

次に保存場所を作成します。

#保存場所
mkdir userData
#ドキュメントの保存場所を作成
for target in cat list; do mkdir userData/$target; done
# もしくは
cd userData
mkdir $(cat ../list )

インポートをします(download.sh)

#!/bin/bash

OIFS=$IFS

IFS=$'\n'

for target in cat list; do
  fsrpl dump --cred firebase_secret.json --path "userData/$target" "$target/*"
done

実行
bash download.sh

レストアについて

インポートの手順と同じでまとめてレストアします
レストアのスクリプトは下記の通りです(restore.sh)

#!/bin/bash

OIFS=$IFS

IFS=$'\n'

for target in cat list; do
  fsrpl restore --cred firebase_secret.json --path "userData/$target" "$target/*"
done

実行
bash restore.sh

まとめ

fsrplを使って簡単にデータを吸い出すことができました。
インポートしたデータを参考にjsonを用意することによって、新規データをまとめて登録することもできます。

採用情報はこちら
目次