You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何备份Firebase项目(含Firestore数据库、云函数等组件)

Firebase 全项目定期备份与恢复方案

针对你需要定期备份Firebase项目(含Firestore、云函数、安全规则)并能快速恢复的需求,以下是可落地的分步方案:

一、Firestore 数据库备份与恢复

自动全量备份(官方推荐)

Firebase自带Firestore自动备份功能,无需额外代码:

  • 打开Firebase控制台 → Firestore数据库 → 「备份」标签页
  • 点击「创建计划」,设置备份频率(每日/每周)、存储目标Cloud Storage桶,完成后系统会自动定期执行全量导出
  • 恢复操作:在「备份」页选择对应备份文件,点击「导入」即可;或用gcloud命令行:
    gcloud firestore import gs://[你的备份桶名]/[备份文件路径]
    

自定义增量/按需备份

如果需要更灵活的备份策略(比如只备份特定集合),可以用Cloud Functions结合Pub/Sub定时触发:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

exports.scheduledFirestoreBackup = functions.pubsub.schedule('every 24 hours').onRun(async () => {
  const bucket = admin.storage().bucket('your-backup-bucket');
  const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
  const exportPath = `firestore-backups/${timestamp}`;

  try {
    await admin.firestore().exportDocuments({
      outputUriPrefix: `gs://${bucket.name}/${exportPath}`,
      // 可选:指定要备份的集合,留空则全量备份
      collectionIds: ['users', 'orders']
    });
    console.log('Firestore备份完成');
  } catch (err) {
    console.error('Firestore备份失败:', err);
    throw new functions.https.HttpsError('internal', '备份执行失败');
  }
});

二、云函数备份与恢复

云函数的核心是代码和配置,分两部分备份:

代码备份

直接将云函数代码托管到Git仓库,定期提交代码并打版本标签,确保每个部署版本都有记录。

配置与环境变量备份

用gcloud命令批量导出所有云函数的配置和环境变量,脚本示例:

#!/bin/bash
BACKUP_DIR="functions-backup/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR

# 遍历所有云函数,导出配置和环境变量
for func in $(gcloud functions list --format="value(name)"); do
  gcloud functions describe $func > "$BACKUP_DIR/${func}-config.json"
  gcloud functions describe $func --format="value(envVariables)" > "$BACKUP_DIR/${func}-env.txt"
done

恢复操作:从Git拉取对应版本代码,用gcloud部署并导入环境变量:

gcloud functions deploy [函数名] --source ./functions/[函数目录] --set-env-vars=$(cat $BACKUP_DIR/[函数名]-env.txt)

三、Firestore 安全规则备份与恢复

规则内容可以通过命令行或控制台备份:

  • 备份:执行以下命令导出规则到本地文件
    firebase firestore:rules get > firestore-rules-backup-$(date +%Y%m%d).rules
    
  • 恢复:修改本地规则文件后,执行部署命令:
    firebase firestore:rules deploy firestore-rules-backup-[日期].rules
    
    也可以直接在Firebase控制台的规则页面粘贴备份内容并保存。

四、其他组件备份(可选)

如果需要覆盖更多项目组件,补充以下方案:

  • Cloud Storage:用gsutil命令定期同步存储桶内容到备份桶:
    gsutil cp -r gs://[源存储桶] gs://[备份存储桶]/backup-$(date +%Y%m%d)
    
    也可以设置存储桶生命周期规则,自动归档旧文件。
  • Auth用户数据:导出用户数据到Cloud Storage:
    gcloud auth export gs://[备份桶]/auth-backup-$(date +%Y%m%d).json
    
    恢复时执行:
    gcloud auth import gs://[备份桶]/auth-backup-[日期].json
    

五、全流程自动化

把所有备份操作整合到定时任务,实现一键全量备份:

  1. 创建Cloud Scheduler任务,设置每日固定时间触发
  2. 触发一个Cloud Run服务,执行所有备份脚本(Firestore导出、云函数配置备份、规则导出等)
  3. 给备份存储桶设置生命周期策略,比如保留最近30天的备份,自动删除旧文件节省成本

六、恢复注意事项

  • 恢复前暂停相关服务(比如云函数、API访问),避免数据写入冲突
  • 优先恢复Firestore核心数据,再依次恢复安全规则、云函数等组件
  • 定期在测试环境验证备份的可恢复性,避免紧急情况出现意外

内容的提问来源于stack exchange,提问作者Marc Van Daele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 02:52:15