【发布时间】:2013-03-21 13:45:43
【问题描述】:
是否有任何工具可以帮助将数据从 dev 迁移到 staging 到 prod?如果没有,是否有建造它们的计划?
我知道您可以从 Forge 导出 JSON 和导入 JSON,但这不包括授权和安全设置。
【问题讨论】:
标签: firebase
是否有任何工具可以帮助将数据从 dev 迁移到 staging 到 prod?如果没有,是否有建造它们的计划?
我知道您可以从 Forge 导出 JSON 和导入 JSON,但这不包括授权和安全设置。
【问题讨论】:
标签: firebase
我们所有的数据都可以通过 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),但它们可能不应该如此,因为它们在分阶段和生产之间会有所不同。
【讨论】:
安德鲁上面所说的大部分是正确的,但是对于大型火力基地来说这可能是一个痛苦。 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 文件链接的导入模块。
祝你好运!
【讨论】:
如果你想要一个不需要 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”工具才能正常工作。如果您以后想恢复或只使用部分数据,单独导出每个集合非常有用。
【讨论】:
Firebase 正在开发一项新服务“S3 客户备份”,该服务将每晚将整个 Firebase 的 .gz 压缩备份复制到您提供给他们的 s3 存储桶中。我现在正在评估这项服务的测试版,但如果您需要它,我建议您寻求支持。
我们的 firebase 太大而无法完成 curl 操作,而这个新解决方案将使我们能够管理我们的开发环境。因此,如果您有一个大型火力库,请设置 S3 客户备份,然后使用 firebase-import 将数据推送到您的开发/暂存火力库中。胜利!
【讨论】:
我刚刚创建了this ruby gem,用于从现有项目或新项目中克隆 Firebase 远程配置数据。
【讨论】: