Skip to main content
Los snapshots son copias de seguridad del almacenamiento de una aplicación o de una base de datos. Las aplicaciones y las bases de datos comparten los mismos tres métodos:
  • client.apps.snapshots: list(app_id), create(app_id), restore(app_id, name, version_id)
  • client.databases.snapshots: list(database_id), create(database_id), restore(database_id, name, version_id)
La cantidad de snapshots que puedes crear por día depende de tu plan (consulta Límites). Los ejemplos usan el client de Crear el cliente. app_id es el id de una de tus aplicaciones: client.account.me() las lista.

Listar snapshots

Crear un snapshot

create() espera al snapshot (al menos 120 s antes de agotar el tiempo). Es posible que un snapshot grande no termine a tiempo: en ese caso la API responde 202 y el SDK devuelve {'pending': True}. El snapshot se sigue generando y aparece por sí solo en list(), normalmente en menos de 2 minutos. En caso contrario, devuelve {'pending': False, 'url': ..., 'key': ...}.
Nunca vuelvas a llamar a create() para comprobar un snapshot pendiente: eso inicia uno nuevo y cuenta para la cuota diaria de snapshots del plan. Consulta list() periódicamente en su lugar.

Restaurar un snapshot

restore(id, name, version_id) recibe el name y el version_id de un snapshot del listado.

Descargar un snapshot

client.download_snapshot(url, dest) transmite un archivo de snapshot desde su url firmada (de list() o create()) al disco y devuelve la ruta en la que lo escribió. No llama a la API: la clave de API nunca se envía al host de almacenamiento. No se almacena nada en memoria.
  • dest es una ruta de archivo, o un directorio para conservar el nombre del archivo remoto. Una ruta que termina en / se crea como directorio.
  • Los datos van a un archivo .part que se renombra al completarse, así que una descarga fallida nunca sobrescribe un archivo anterior.
  • No hay timeout para toda la descarga: timeout limita cada lectura.
Con AsyncSquareCloud, es await client.download_snapshot(url, dest). Una URL caducada o no válida lanza un SquareCloudAPIError con el estado HTTP del host de almacenamiento y UNKNOWN_ERROR. Un destino en el que no se puede escribir lanza un OSError.

Snapshots de la cuenta

client.account.snapshots(scope=None) lista todos los snapshots de la cuenta, opcionalmente solo los de "applications" o "databases" (solo por palabra clave). Necesita un plan activo y comparte el límite de tasa de los endpoints de red (429 RATE_LIMITED).

Límites

  • create() está limitado a una llamada cada 180 segundos y a una cuota diaria que depende del plan: superar la cuota da 429 DAILY_SNAPSHOTS_LIMIT_REACHED.
  • Mientras se ejecuta una restauración, eliminar la aplicación o iniciar la base de datos da 403 RESTORE_IN_PROGRESS.

Próximos pasos

Bases de datos

Crea y gestiona bases de datos.

Referencia de la API de snapshots

Los endpoints REST detrás de estos métodos.

Snapshots desde la CLI

Las mismas acciones desde la terminal.