是否可以备份Firebase DB?

时间:2015-01-12 21:09:30

标签: firebase

想知道备份firebase数据库是否有任何常见做法。我担心的是一些过程意外消除了我们的数据库。

谢谢!

5 个答案:

答案 0 :(得分:36)

截至发布此问题时,Firebase每天都会备份所有实例。因此,尽管保留自己的备份可能仍然有用,但它并不重要。

要创建自己的备份,您只需简单地卷曲数据:

curl https://<instance>.firebaseio.com/.json?format=export

请注意,对于数千兆字节的数据,这会减慢速度并在短时间内锁定读取访问权限。在这种情况下,最好将备份分块并使用较小的部分。 shallow parameter可以通过为Firebase中的任何指定路径提供密钥列表来提供帮助,而无需先获取数据。

curl https://<instance>.firebaseio.com/.json?shallow=true

如前所述,还有几个GitHub库可用于此,增量备份是实用的,具有一些创造性和实时SDK上的工作线程。

答案 1 :(得分:13)

现在有&#34;导入数据&#34;和&#34;导出数据&#34;每个项目的Web界面数据页面上的按钮,现在您可以通过单击按钮来备份数据!

Import and Export buttons

答案 2 :(得分:8)

就在昨天写了一个shell脚本,它使用了firebase-tools(public Int32 Size { get { return _model.Size; } } ),以便将这些数据库转储包含在我的常规备份npm install -g firebase-tools中:

cronjob

更新:同时,可以自动备份到Google云存储桶

...转到#!/bin/bash # $1 is the Firebase projectId. # $2 is the destination directory. # example usage: cron_firebase.sh project-12345 /home/backups/firebase # currently being triggered by /etc/cron.hourly/firebase-hourly.cron PROJECTID=$1 DESTINATION=$2 FIREBASE="$(which firebase)" NOW="$(date +"%Y-%m-%d_%H%M")" cd $DESTINATION $FIREBASE --project $PROJECTID database:get / > ./$PROJECTID.$NOW.json tar -pczf $PROJECTID.$NOW.tar.gz ./$PROJECTID.$NOW.json && rm ./$PROJECTID.$NOW.json - &gt; Firebase Console - &gt;然后点击标签Backups

答案 3 :(得分:4)

使用curl扩展@kato的答案。

我一直在寻找每晚运行命令的方法。我的解决方案:
1)在Google Cloud中创建了一个计算引擎(基本上是一个VM)。如果您来自AWS世界,您可能熟悉EC2 2)写了一个简单的cronjob,就像这样

  

0 23 * * * /usr/bin/curl https://yourdatabaseurl.com/.json?format=export -o /tmp/backuptest_`date +\%d\%m\%y`.bk

我确信在免费层中可能有一种更简单的方法可以做到这一点。 喜欢使用云功能。

答案 4 :(得分:2)

现在可以使用Cloud Firestore托管的导出和导入服务备份和还原 Firebase Firestore

您可以通过以下方式进行操作:

  1. Create a Cloud Storage bucket for your project

  2. 使用gcloud config set project [PROJECT_ID]

  3. 为您的项目设置 gcloud

导出

通过致电

全部导出 gcloud alpha firestore export gs://[BUCKET_NAME]导出特定收藏集使用 gcloud alpha firestore export gs://[BUCKET_NAME] --collection-ids='[COLLECTION_ID_1]','[COLLECTION_ID_2]'

导入

通过致电

全部导入 gcloud alpha firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ [BUCKET_NAME]和[EXPORT_PREFIX]指向导出文件的位置。例如-gcloud alpha firestore import gs://exports-bucket/2017-05-25T23:54:39_76544/

导入特定集合,方法是: gcloud alpha firestore import --collection-ids='[COLLECTION_ID_1]','[COLLECTION_ID_2]' gs://[BUCKET_NAME]/[EXPORT_PREFIX]/

此处提供完整说明: https://firebase.google.com/docs/firestore/manage-data/export-import