想知道备份firebase数据库是否有任何常见做法。我担心的是一些过程意外消除了我们的数据库。
谢谢!
答案 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)
答案 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
您可以通过以下方式进行操作:
使用gcloud config set project [PROJECT_ID]
导出
通过致电 全部导出
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