GUIDE

Firestore のバックアップ方法まとめ(gcloud / PITR / 自動スナップショット)

Firestore には「ゴミ箱」も「元に戻す」もありません。消えたデータは、バックアップがなければ 本当に消えたままです。この記事では公式の2つの仕組みと、運用でよく使う2つの方法を、「いざという時に戻せるか」の視点で比較します。

方法1: gcloud firestore export(公式・全体バックアップ)

# Cloud Storage バケットへ全データをエクスポート
gcloud firestore export gs://my-backup-bucket/2026-07-06

# 特定のコレクションだけ
gcloud firestore export gs://my-backup-bucket/users-only \
  --collection-ids=users,orders
  • データベース全体の災害対策としては王道。Cloud Scheduler + Cloud Functions で定期実行が定石
  • 注意①: 復元(import)はコレクション単位の丸ごと上書き。 「この10件だけ昨日の状態に戻す」はできません
  • 注意②: エクスポート形式はバイナリで中身は読めません。復元して初めて確認できます
  • 注意③: Blaze プラン+Cloud Storage の料金が必要です

方法2: ポイントインタイムリカバリ(PITR・公式)

有効化すると過去7日間の任意の時点のデータを読み取れる公式機能です(Google Cloud コンソールの Firestore 設定から有効化)。

  • 「昨日の14時の状態」をクエリで参照でき、誤操作からの復旧に強い
  • 注意①: 事故の前に有効化しておく必要があります(事後には使えない)
  • 注意②: 保持は最大7日。それ以前には戻れません
  • 注意③: 追加の読み取り・ストレージ料金がかかります

方法3: スクリプトで JSON ダンプ(手軽・自己管理)

firebase-admin でコレクションを読んで JSON 保存する方法。中身が読める・ diff が取れる・特定ドキュメントだけ戻せるのが利点ですが、Timestamp などの型の シリアライズ/復元を自前で正しく実装する必要があり、「戻す側」のコードのテストが甘いと本番でつまずきます

方法4: 操作の直前に自動でスナップショット(Firescope)

そもそもバックアップが一番ほしい瞬間は「手動でデータを触る直前」です。 筆者が開発している Firescope(Firestore GUI クライアント)は、 削除・一括更新・インポートなどの破壊的操作の前に、対象ドキュメントを自動でスナップショットします。オフにはできません。

  • 事故ったその場で、差分プレビューを見ながらワンクリック復元
  • 操作ログと紐づくので「どの操作の前の状態か」が明確
  • 接続ごとの定期自動バックアップ(スケジュール実行)も設定可能
  • 直近の書き込みは ⌘Z(Ctrl+Z)ですぐ取り消せます
復元前の差分プレビュー。再作成・上書き・変更なしが色分きで確認できる
復元前の差分プレビュー。再作成・上書き・変更なしが色分きで確認できる

まとめ: 組み合わせが正解

  • 災害・全損対策 → gcloud export の定期実行(週次〜日次)
  • 直近7日の「あの時点に戻りたい」 → PITR を有効化しておく
  • 手動オペレーションの事故対策 → 操作前スナップショットが自動で取られる GUI(Firescope)を使う

どれか1つではなく、層で守るのがおすすめです。特に3つ目は「バックアップを 取り忘れた日の事故」を構造的になくせます。

14日間、全機能を無料で試す

すべての破壊的操作の前に、自動でバックアップ。14日間すべての機能を無料で試せます。

Firescope をダウンロード(Mac / Windows)