如何使用生产存储桶数据启动 Firebase 存储模拟器?

Posted

技术标签:

【中文标题】如何使用生产存储桶数据启动 Firebase 存储模拟器?【英文标题】:How do I start the Firebase Storage Emulator with production bucket data? 【发布时间】:2021-11-27 01:16:09 【问题描述】:

我正在使用 Firebase 模拟器来运行所有 Firebase 服务。我已经设法通过运行以下命令来运行模拟器并备份我的 Firestore 数据:

firebase emulators:start --import ./my-directory

...但我找不到对存储数据执行相同操作的方法。

【问题讨论】:

【参考方案1】:

Firestore 可以选择导入和导出,而 Firebase 存储还没有此功能(存储使用上传和下载)。目前,没有本地方法可以在 Storage Emulator 中导入 Google Cloud Storage 数据。

此外,您可以通过在模拟器中上传示例文件然后运行导出来研究模拟器如何注册对象,您将看到模拟器将需要 1 个对象和 1 个包含其元数据的 JSON 文件。目前,您可以从生产存储桶中下载对象以及包含其元数据的单独 JSON 文件,然后对其进行结构化以供导入。

在 github 中还有一个opened issue,您也可以对其进行监控。

【讨论】:

【参考方案2】:

虽然@RJC的回答是正确的,但还是想分享一下我的做法。

您可以在启动模拟器时添加选项--export-on-exit,它会将本地 Firebase 实例的状态导出到您选择的文件夹中。因此,我从真实的 Firebase 项目中下载了所有数据,使用模拟器上传了所有内容,然后关闭了模拟器,导出了所有内容(包括存储),现在我使用导出所有内容的同一文件夹使用 --import 选项启动它。

这并不是很糟糕,因为我的存储空间中没有那么多东西。

【讨论】:

以上是关于如何使用生产存储桶数据启动 Firebase 存储模拟器?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 在 Firebase 中自动导入存储桶 - Google Cloud Storage

如何在 Firebase Cloud Storage 上创建存储桶

我想通过特定的“存储桶/密钥”直接从数据库中获取Firebase数据

Firebase 存储桶不工作

所有存储桶的 Firebase 存储安全规则

是否可以将 Firebase 函数的范围限定为存储桶内的文件夹?