15

是否有任何工具可以帮助将数据从 dev 迁移到 staging 到 prod?如果没有,是否有建造它们的计划?

我知道您可以从 Forge 导出 JSON 和导入 JSON,但这不包括授权和安全设置。

4

5 回答 5

16

我们所有的数据都可以通过 REST API 获得,因此您可以轻松编写脚本来自己执行此操作。您可以通过设置 format=export 导出数据(这包括响应中的所有优先级数据):

curl https://myapp.firebaseIO.com/.json?format=export&auth=YOUR_FIREBASE_SECRET

至于导出安全规则,您可以在这里访问它们:

curl https://myapp.firebaseIO.com/.settings/rules/.json?auth=YOUR_FIREBASE_SECRET

然后,您可以使用 PUT 将它们写回新的 Firebase。

各种 Auth 设置不能轻易地自动传输(例如 Authorized Origins),但它们可能不应该如此,因为它们在 staging 和 production 之间会有所不同。

于 2013-03-21T15:30:16.307 回答
5

安德鲁上面所说的大部分是正确的,但是对于大型火力基地来说这可能是一个痛苦。https://github.com/firebase/firebase-import有一个导入项目,它将通过分解 put 请求来帮助导入大型 firebase。另外需要注意的是,您需要在 curl url 周围使用引号,否则 & 将成为该过程的背景。所以安德鲁上面给出的将改为

curl -o outputfile.json " https://myapp.firebaseIO.com/.json?format=export&auth=YOUR_FIREBASE_SECRET "

然后您可以使用我与该 json 文件链接的导入模块。

祝你好运!

于 2014-07-12T03:24:06.970 回答
2

如果你想要一个不需要 cURL 的选项,并且你已经firebase-tools安装了项目,你可以运行这个:

firebase database:get --export -o backup.json /

请注意,这应该从配置为 Firebase 项目的工作目录运行。此选项的优点是它将使用您为该项目设置的身份验证,因此您无需将身份验证密钥硬编码到命令行中(出于安全意识),并且它不依赖于不推荐使用的身份验证密钥模式。

命令行 Fu:如果您想要为每个顶级键单独的文件,另一种很酷的技术是调用:

for i in `firebase database:get --shallow / | jq -r 'keys[]'`; do
    echo "Downloading $i..."
    firebase database:get --export -o $i.json /$i
done

您需要安装“jq”工具才能使其工作。如果您以后想要恢复或仅使用部分数据,则单独导出每个集合非常有用。

于 2017-01-05T18:22:05.450 回答
0

Firebase 正在开发一项新服务“S3 客户备份”,该服务将每晚将整个 Firebase 的 .gz 压缩备份复制到您提供给他们的 s3 存储桶中。我现在正在评估这项服务的测试版,但如果您需要它,我建议您寻求支持。

我们的 firebase 太大而无法完成 curl 操作,而这个新解决方案将使我们能够管理我们的开发环境。因此,如果您有一个大型火力库,请设置 S3 客户备份,然后使用 firebase-import 将数据推送到您的开发/暂存火力库中。胜利!

于 2014-09-05T19:13:11.567 回答
0

我刚刚创建了这个 ruby​​ gem,用于从现有项目或新项目中克隆 firebase 远程配置数据。

于 2016-10-06T19:25:04.857 回答