hacer - firestore backup
Firestore nueva base de datos-¿Cómo puedo hacer una copia de seguridad (6)
Actualización de julio de 2018: Cloud Firestore ahora admite la importación y exportación de datos administrados. Consulte la documentación para más detalles:
https://firebase.google.com/docs/firestore/manage-data/export-import
[Googler aquí] No, en este momento no ofrecemos un servicio de copia de seguridad o importación / exportación administrado. Esto es algo que definitivamente ofreceremos en el futuro, simplemente no lo preparamos para la versión Beta inicial.
La mejor manera de realizar una copia de seguridad ahora es escribir su propio script con nuestros SDK de servidor Java / Python / Node.js / Go. Debería ser bastante sencillo descargar todos los documentos de cada colección y volver a escribirlos si es necesario.
¿El servicio de base de datos de Google Firestore proporciona una copia de seguridad? Si es así, ¿cómo hago una copia de seguridad de la base de datos y cómo restauro en caso de un error?
Estoy utilizando la siguiente solución temporal para tener copias de seguridad diarias de firestore:
Instalé esto globalmente: https://www.npmjs.com/package/firestore-backup-restore
Tengo un trabajo de cron que se ve así:
0 12 * * * cd ~/my/backup/script/folder && ./backup-script.sh
Y mi backup-script.sh se ve así:
#!/bin/sh
. ~/.bash_profile
export PATH=/usr/local/bin/
dt=$(/bin/date ''+%d-%m-%Y %H:%M:%S'');
echo "starting backup for $dt"
firestore-backup-restore -a ~/path/to/account/credentials/file.json -B ./backups/"$dt"
He escrito una herramienta que recorre las colecciones / documentos de la base de datos y exporta todo en un solo archivo json. Además, también importará la misma estructura (útil para clonar / mover bases de datos Firestore). Se publica como un paquete NPM. Siéntete libre de probarlo y dar algún comentario.
Una solución utilizando Python 2 .
Búscalo en https://github.com/RobinManoli/python-firebase-admin-firestore-backup
Primero instale y configure Firebase Admin Python SDK: https://firebase.google.com/docs/admin/setup
Luego instálalo en tu entorno python:
pip install firebase-admin
Instale el módulo Firestore:
pip install google-cloud-core
pip install google-cloud-firestore
(de ImportError: no se pudo importar la biblioteca de Cloud Firestore para Python )
Código Python
# -*- coding: UTF-8 -*-
import firebase_admin
from firebase_admin import credentials, firestore
import json
cred = credentials.Certificate(''xxxxx-adminsdk-xxxxx-xxxxxxx.json'') # from firebase project settings
default_app = firebase_admin.initialize_app(cred, {
''databaseURL'' : ''https://xxxxx.firebaseio.com''
})
db = firebase_admin.firestore.client()
# add your collections manually
collection_names = [''myFirstCollection'', ''mySecondCollection'']
collections = dict()
dict4json = dict()
n_documents = 0
for collection in collection_names:
collections[collection] = db.collection(collection).get()
dict4json[collection] = {}
for document in collections[collection]:
docdict = document.to_dict()
dict4json[collection][document.id] = docdict
n_documents += 1
jsonfromdict = json.dumps(dict4json)
path_filename = "/mypath/databases/firestore.json"
print "Downloaded %d collections, %d documents and now writing %d json characters to %s" % ( len(collection_names), n_documents, len(jsonfromdict), path_filename )
with open(path_filename, ''w'') as the_file:
the_file.write(jsonfromdict)
https://www.npmjs.com/package/firestore-backup
Es una herramienta que ha sido creada para hacer precisamente esto.
(No lo creé, solo lo agregué aquí ya que la gente encontrará esta pregunta)
Actualización : ahora es posible realizar copias de seguridad y restaurar Firebase Firestore utilizando el servicio de exportación e importación administrado de Cloud Firestore
Lo haces por:
Cree un cubo de almacenamiento en la nube para su proyecto : asegúrese de que sea un tipo de cubo regional en us-central1 o 2 / multi regional
Configure gcloud para su proyecto utilizando
gcloud config set project [PROJECT_ID]
EXPORTAR
Exportar todo llamando a gcloud alpha firestore export gs://[BUCKET_NAME]
O Exportar una colección específica usando gcloud alpha firestore export gs://[BUCKET_NAME] --collection-ids=''[COLLECTION_ID_1]'',''[COLLECTION_ID_2]''
IMPORTAR
Importe todo llamando a gcloud alpha firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/
donde [BUCKET_NAME] y [EXPORT_PREFIX] apuntan a la ubicación de sus archivos de exportación. Por ejemplo, gcloud alpha firestore import gs://exports-bucket/2017-05-25T23:54:39_76544/
Importe una colección específica llamando a: gcloud alpha firestore import --collection-ids=''[COLLECTION_ID_1]'',''[COLLECTION_ID_2]'' gs://[BUCKET_NAME]/[EXPORT_PREFIX]/
Las instrucciones completas están disponibles aquí: https://firebase.google.com/docs/firestore/manage-data/export-import