Saltar al contenido

Backups

Por qué no puedes descargar tu backup de Supabase

No puedes descargar tu backup de Supabase en un proyecto actual: la copia diaria es una instantánea física. Cómo comprobarlo y tener tu propia copia.

Vlad Tkachenko12 min de lectura
Cuatro instantáneas diarias de una base apiladas en un recinto de Supabase, la delantera iluminada y sellada, junto a una bandeja vacía.

En resumen

  • No puedes descargar tu backup de Supabase en un proyecto con Postgres 15.8.1.079 o posterior. Allí las copias diarias son instantáneas físicas: Supabase puede restaurarlas por ti y tú no puedes descargarlas.
  • El botón de descarga que describen las guías antiguas pertenecía a los backups lógicos, que eran archivos SQL. Solo lo conservan los proyectos que siguen en las versiones antiguas.
  • Para tener un archivo propio, haces tú mismo un dump lógico con la CLI de Supabase o con pg_dump. Es la única copia que sobrevive a perder el acceso a la cuenta.

Tienes un plan de pago de Supabase, así que tienes backups. Abres Database, luego Backups, y ahí están: una lista de copias diarias con fecha, cada una con un botón de Restore. Buscas el botón que te permita descargar tu backup de Supabase y guardarlo en algún sitio tuyo, y no existe.

No hay nada roto. Esta es la parte que las guías antiguas siguen contando mal: en un proyecto actual no hay ningún backup diario que descargar. Supabase pasó sus copias diarias a otro tipo de backup, uno que puede restaurar por ti y que no puede entregarte. El botón de descarga que describen esas guías era del tipo antiguo. Un archivo que tengas en tus manos ahora lo haces tú, y es un tipo de archivo distinto.

Tu móvil es la forma más fácil de ver la diferencia. La copia que hace de sí mismo cada noche es completa y exacta, y vuelve en un solo paso a un móvil con la misma cuenta. No puedes abrirla en un portátil y sacar tus fotos de ella. Para tener fotos que puedas guardar en cualquier sitio, las exportas, y lo que obtienes es una carpeta de archivos normales. El backup diario de Supabase es ahora el primer tipo. El archivo que puedes tener es el segundo.

¿Puedo descargar mi backup de Supabase?

El diario no, si tu proyecto usa Postgres 15.8.1.079 o posterior. La documentación de backups de Supabase dice que todos los proyectos en esa versión y posteriores usan backups físicos, y sus notas de solución de problemas dicen que, con los backups físicos activados, Supabase ya no genera el archivo de backup descargable. Puedes restaurar esas copias cuando quieras. No puedes llevarte ninguna.

El backup diario de Supabase (físico)Un dump que haces tú (lógico)
Qué esUna instantánea de los archivos que Postgres guarda en discoSQL: instrucciones para reconstruir cada tabla, y después las filas
Quién lo restauraSupabase, cuando pulsas RestoreTú, con psql, en cualquier Postgres
Adónde puede irEste proyecto, o uno nuevo en la misma regiónOtro proyecto, otra cuenta, tu portátil, tu servidor
Se puede descargarNoYa es un archivo
Sobrevive a perder el acceso a la cuentaNoSí, si lo guardas en otro sitio

La última fila merece una segunda lectura. Supabase dice que, cuando se borra un proyecto, elimina todos los datos asociados, incluidos los backups guardados en S3. Borra el proyecto y sus copias diarias se van en el mismo paso.

¿Qué diferencia hay entre un backup físico y uno lógico?

De dónde se saca la copia. Un backup físico copia los archivos que el propio Postgres escribe en disco, lo que Supabase describe como una instantánea del directorio subyacente de la base de datos. Un backup lógico le pide a la base de datos que se describa a sí misma en SQL, tabla por tabla y fila por fila, y escribe esa descripción en un archivo de texto.

Cada uno sirve para algo distinto. Una copia física se hace rápido y se devuelve rápido, y vuelve exactamente como estaba. Solo la puede leer el mismo tipo de instalación de Postgres de la que salió, lo que en Supabase significa las máquinas de la propia Supabase. Una copia lógica tarda más en volcarse y ocupa más, y cualquier Postgres de la misma versión o posterior puede cargarla. Es otra vez la copia del móvil y la carpeta exportada, y solo la segunda es un archivo que puedes tener.

El botón de descarga que la gente recuerda era del tipo lógico. La propia documentación de Supabase de 2025 decía que el proceso diario ejecutaba pg_dumpall, comprimía el archivo SQL y lo guardaba, y que los backups físicos cargan menos la base de datos y evitan bloquear tus tablas durante mucho tiempo. La misma página decía que las copias físicas no se pueden descargar desde la sección de Backups del panel.

La copia diaria puede volver a Supabase y a ningún otro sitio. Un dump que haces tú va a cualquier lugar donde funcione un Postgres.

¿Cómo sé cuál tiene mi proyecto?

Busca una opción de descarga en la página de Backups. Abre Database, luego Backups, en tu panel de Supabase. Si cada copia con fecha tiene una forma de descargarla, tu proyecto sigue con backups lógicos. Si cada una ofrece Restore y nada más, está con backups físicos, y la documentación antigua de Supabase usaba exactamente esa prueba.

La segunda comprobación es el número de versión. Aparece en Project Settings, luego General. Cualquier cosa a partir de 15.8.1.079 significa backups físicos. Léelo de izquierda a derecha: una versión que empieza por 17 es posterior a cualquier 15, y 15.8.1.100 es posterior a 15.8.1.079.

Hay dos casos que no necesitas comprobar:

La misma página en dos proyectos. A la izquierda, los antiguos backups lógicos, cada uno con su descarga. A la derecha, backups físicos: solo restaurar.

¿De qué me protege cada uno?

El backup diario te protege de que algo salga mal dentro del proyecto. Un archivo que tengas tú también cubre perder el proyecto en sí.

El primer tipo de pérdida lo causas tú. Un borrado que se llevó más filas de las que querías, una migración que escribió un agente de IA y que tú aprobaste, un script apuntando a la tabla equivocada. La copia diaria es justo la herramienta para eso: eliges ayer, pulsas Restore y el proyecto vuelve a su sitio. Hasta dónde llega depende de tu plan, y en qué plan estás se aclara en unos dos minutos.

El segundo tipo no tiene nada que ver con un error en la base de datos. Una tarjeta que caducó mientras estabas fuera, un acceso que no puedes recuperar, un proyecto que alguien borró. Las copias están al otro lado de la misma puerta que el proyecto, y la puerta es lo que se ha cerrado. La copia de tu móvil se comporta igual: te salva si el móvil cae al mar, y no te sirve de nada el día que no puedes entrar en la cuenta donde vive. Supabase guarda sus backups con la plataforma porque eso es lo que permite que una restauración sea un solo botón. Una copia que sobreviva a la cuenta tiene que guardarse en otro sitio, lo que en Supabase significa un dump lógico sacado de ella.

¿Qué significa restaurar en cada caso?

Con la copia diaria, Supabase hace el trabajo y tú eliges dónde acaba. Con un archivo que tienes tú, el trabajo lo haces tú, y puede acabar en cualquier sitio.

Restaurar la copia diaria en el mismo proyecto sustituye la base de datos por la copia que elijas. Supabase dice que el proyecto no está accesible mientras tanto y que una base de datos más grande tarda más.

Restaurarla en un proyecto nuevo es una función de pago que Supabase llama Restore to a New Project, todavía marcada como beta. Crea un proyecto aparte en la misma región, con tus usuarios y sus contraseñas cifradas con hash, y se factura como un segundo proyecto. Hay un aviso en esa misma página que es fácil pasar por alto. Copia la base de datos entera, incluidas las extensiones que actúan hacia fuera como pg_cron y pg_net, y esas tareas empiezan a ejecutarse en cuanto termina la restauración. Si una tarea programada de tu app envía correos o llama a una API de pagos, el proyecto nuevo también empieza a hacerlo desde el momento en que existe.

Restaurar un archivo que tienes tú significa volcarlo con psql en lo que le indiques: un proyecto nuevo de Supabase, uno en otra cuenta o un Postgres en tu propio ordenador. Cómo restaurar un backup de Supabase repasa los comandos, y también lo que sigue roto cuando termina.

¿Cómo consigo una copia de mi base de datos de Supabase en un archivo?

Haz tú mismo un dump lógico. Supabase lo publica en su guía de backup y restauración como tres comandos, cada uno de los cuales escribe un archivo:

supabase db dump --db-url "postgresql://…" -f roles.sql --role-only
supabase db dump --db-url "postgresql://…" -f schema.sql
supabase db dump --db-url "postgresql://…" -f data.sql --use-copy --data-only

La cadena de conexión sale del botón Connect en la parte superior de tu proyecto, con la contraseña de tu base de datos en lugar del marcador. La CLI de Supabase necesita Docker instalado, porque ejecuta pg_dump dentro de un contenedor en vez de usar el de tu ordenador.

Guarda los tres archivos. El segundo por sí solo es la forma de tus tablas sin una sola fila dentro, y tus usuarios solo están en el tercero.

También puedes ejecutar pg_dump directamente. Antes, dos cosas. Supabase dice que un pg_dump en bruto se lleva los esquemas internos de Supabase junto con los tuyos, y que volcarlos provoca errores de permisos a la vuelta. Y Postgres documenta que pg_dump no hace el dump de un servidor con una versión mayor más nueva que la suya, así que una copia antigua en tu ordenador se niega a arrancar en vez de escribir un archivo defectuoso.

Guarda los archivos en algún sitio que no sea tu cuenta de Supabase, y no solo en tu portátil.

¿Puedo restaurar un backup de Supabase en mi propio ordenador?

Uno lógico sí, en un Postgres de la misma versión mayor o posterior. La copia diaria física no se puede restaurar en ningún sitio salvo en Supabase.

La regla de versiones viene del propio Postgres. Su documentación dice que un dump debería poder cargarse en versiones más nuevas y que no hay garantía de que cargue en una anterior, ni siquiera en la misma de la que salió. La guía de Supabase para pasar un proyecto de la plataforma a Supabase autoalojado muestra cómo se ve eso. La plataforma puede usar Postgres 17 mientras que la imagen autoalojada usa 15 por defecto, y entonces el archivo de datos lleva una línea, SET transaction_timeout = 0, que Postgres 15 no reconoce.

Un dump avanza. Cargarlo en un Postgres más antiguo que aquel del que salió es donde empiezan los errores.

Esos mismos tres archivos son también la forma de salir de Supabase del todo. Esa guía es el camino para tener Supabase en un servidor tuyo, y el desajuste de versiones es lo primero de lo que avisa.

En tu propio ordenador, la CLI de Supabase levanta una copia local de Supabase en Docker cuando escribes supabase start. Vuelca los tres archivos en ella con el comando psql de la guía de backup y restauración de Supabase, apuntando a postgresql://postgres:postgres@localhost:54322/postgres, y tus datos se pueden leer en tu propio ordenador sin ninguna cuenta de por medio.

Hay un sitio donde Supabase todavía ofrece un backup para descargar. Un proyecto gratuito pausado más allá de su ventana de restauración cambia el botón de Restore por la descarga de la última copia hecha antes de la pausa, y qué hacer con ese archivo es otro artículo.

¿Qué no está en ninguna de las dos copias?

Tus archivos subidos, tus Edge Functions y la mayor parte de la configuración de tu proyecto.

Supabase dice que los backups de la base de datos no incluyen los objetos guardados mediante la Storage API. La base de datos guarda una fila que describe cada archivo, y el archivo en sí vive en otro sitio, así que ningún backup de la base de datos, en ningún plan, contiene lo que han subido tus usuarios. Hacer backup de Storage es un trabajo aparte.

La lista que da Supabase para Restore to a New Project es un buen inventario del resto: Edge Functions, ajustes de autenticación y claves de API, ajustes de Realtime, ajustes de extensiones y réplicas de lectura hay que volver a configurarlos a mano.

Hay un hueco que solo afecta al archivo que tienes tú. Si tu app guarda secretos en Supabase Vault o usa columnas cifradas, Supabase dice que los archivos de backup nunca contienen la clave raíz, solo los datos cifrados. Un proyecto nuevo empieza con su propia clave, así que esos valores llegan ilegibles hasta que se copia la clave antigua. Y la clave antigua solo se puede obtener mientras el proyecto antiguo sigue activo. Una vez pausado o borrado ese proyecto, la clave ya no se puede recuperar, y tampoco nada de lo que se cifró con ella.

Qué hacer esta semana

Qué hacer

  • Abre Database, luego Backups, y busca una opción de descarga. Si cada copia solo ofrece Restore, tienes backups físicos y nada ahí que llevarte.
  • Haz hoy un dump lógico con los tres comandos y guarda los tres archivos juntos.
  • Busca auth.users en data.sql antes de fiarte de él. Ese es el archivo donde están tus cuentas, cuando están.
  • Guarda los archivos en un sitio que no sea tu cuenta de Supabase.
  • Si usas Supabase Vault o columnas cifradas, lee cómo se traslada la clave raíz antes de necesitarla. No está en el archivo.
  • Vuelca el dump una vez en un proyecto de prueba o en un Supabase local, para que la primera vez que lo abras no sea el día que lo necesites.

Dónde encaja Reeve Care

Care hace la copia lógica por ti, la guarda fuera de Supabase, y cada copia es un archivo que puedes descargar.

  • Descarga cualquier copia como zip. Dentro van schema.sql, data.sql y roles.sql, un manifiesto que cuenta las filas de cada tabla y una nota sobre cómo cargarlo en cualquier Postgres. Es un dump estándar, así que cualquier desarrollador puede abrirlo, y también cualquier otro proveedor de hosting.
  • Guardada fuera de tu cuenta de Supabase, cifrada, así que sigue ahí el día que la cuenta ya no está.
  • Se relee antes de contar. La fecha de tu panel es la de la última copia que se abrió y se verificó, nunca la del último intento.
  • Tus usuarios van dentro. El esquema auth viaja con tus tablas, y los archivos que han subido tus usuarios también vienen en cuanto conectas una credencial de Storage.

Care guarda una copia de tu base de datos de Supabase. Deja los backups diarios de Supabase activados a su lado: son la vía más rápida para volver de una migración que salió mal, y el archivo es lo que queda si pierdes la cuenta. Cómo se hace, se comprueba y se descarga una copia está dibujado paso a paso en la página de backups de Supabase, y qué incluye cada plan está en la página de precios.

Antes de cerrar esta pestaña, abre Database, luego Backups, y mira al lado de tu copia más reciente. Si ahí no hay nada que descargar, el próximo archivo que tengas será el que hagas tú, y qué hace que un dump esté completo es lo que conviene leer antes de hacerlo.

Preguntas frecuentes

¿Puedo descargar mi backup de Supabase?

El diario no, si tu proyecto usa Postgres 15.8.1.079 o posterior. Supabase dice que todos los proyectos en esas versiones usan backups físicos y que, una vez activados, ya no genera el archivo de backup descargable. Esas copias se pueden seguir restaurando desde el panel. Para tener un archivo que puedas guardar, haz tú mismo un dump lógico con la CLI de Supabase o con pg_dump.

¿Qué diferencia hay entre un backup físico y uno lógico?

Un backup físico copia los archivos que Postgres guarda en disco. Se restaura rápido y de forma exacta, y solo sobre el mismo tipo de instalación de Postgres de la que salió, lo que en Supabase significa que Supabase lo restaura por ti. Un backup lógico es SQL: las instrucciones para reconstruir cada tabla, seguidas de las filas. Tarda más en volcarse y se carga en cualquier Postgres de la misma versión o posterior, también en uno en tu propio ordenador.

¿Por qué ha desaparecido el botón de descarga?

Porque lo que descargaba ya no se produce. El botón pertenecía a los antiguos backups diarios lógicos, que eran archivos SQL que Supabase comprimía y guardaba. Cuando un proyecto pasa a backups físicos, Supabase deja de producir ese archivo y la página de Backups ofrece Restore sin ninguna descarga al lado. Desactivar la recuperación a un punto en el tiempo no lo devuelve, porque Supabase sigue haciendo backups físicos después.

¿Cómo consigo una copia de mi base de datos de Supabase en un archivo?

Ejecuta los tres comandos que Supabase publica en su guía de backup y restauración: supabase db dump con --role-only, luego sin opciones para el esquema, y luego con --data-only y --use-copy para las filas. La CLI necesita Docker, porque ejecuta pg_dump dentro de un contenedor. Guarda los tres archivos juntos, en un sitio que no sea tu cuenta de Supabase.

¿Puedo restaurar un backup de Supabase en mi propio ordenador?

Uno lógico sí, en un Postgres de la misma versión mayor o posterior. Postgres documenta que un dump se carga hacia delante y que no hay garantía de que cargue en una versión anterior, y Supabase da un ejemplo: su plataforma puede usar Postgres 17 mientras que Supabase autoalojado usa 15 por defecto. Una copia diaria física no se puede restaurar en ningún sitio salvo en Supabase.

¿El plan Pro me da un backup descargable?

No en un proyecto con Postgres 15.8.1.079 o posterior. Allí, Pro te da backups físicos diarios guardados durante siete días, que puedes restaurar en el mismo proyecto o, mientras la función siga en beta, en un proyecto nuevo de la misma región. Ninguna de las dos vías te da un archivo. Una copia descargable la haces tú o pagas a alguien para que la haga.

Escrito por

Vlad Tkachenko

Fundador de Reeve

Me paso el día mirando apps creadas con Lovable, Bolt, v0, Cursor y Replit, y la corta lista de errores que aparecen en ellas una y otra vez.

Más sobre el autor

Sigue leyendo

Todos los artículos

¿No sabes cómo está tu propia app?

Haz un escaneo gratuito y obtén una nota clara de la A a la F en unos 20 segundos. Sin cuenta y sin tarjeta.

Analizar mi app gratis

Comprobación externa automatizada, no una auditoría completa. La ausencia de hallazgos no es garantía de seguridad.