Vai al contenuto

Backups

Perché non puoi scaricare il tuo backup di Supabase

Non puoi scaricare il tuo backup di Supabase su un progetto recente, perché la copia giornaliera è uno snapshot fisico. Come verificarlo e tenere una copia tua.

Vlad Tkachenko12 min di lettura
Quattro snapshot giornalieri impilati in un contenitore Supabase, quello davanti illuminato e sigillato, accanto a un vassoio vuoto.

In breve

  • Non puoi scaricare il tuo backup di Supabase su un progetto con Postgres 15.8.1.079 o successivo. Lì le copie giornaliere sono snapshot fisici: Supabase può ripristinarli per te, tu non puoi scaricarli.
  • Il pulsante di download che descrivono le guide più vecchie apparteneva ai backup logici, che erano file SQL. Ce l'hanno ancora solo i progetti rimasti sulle versioni precedenti.
  • Per avere un file tuo, fai da te un dump logico con la CLI di Supabase o con pg_dump. È l'unica copia che sopravvive alla perdita dell'accesso all'account.

Sei su un piano Supabase a pagamento, quindi hai i backup. Apri Database, poi Backups, ed eccoli: un elenco di copie giornaliere con la data, ognuna con un pulsante Restore. Cerchi il pulsante che ti permetta di scaricare il tuo backup di Supabase e tenerlo da qualche parte di tuo, e non c'è.

Non c'è niente di rotto. Ecco la parte che le guide più vecchie raccontano ancora male: su un progetto recente non esiste un backup giornaliero da scaricare. Supabase ha spostato le sue copie giornaliere su un altro tipo di backup, uno che può ripristinare per te e non può consegnarti. Il pulsante di download che descrivono quelle guide apparteneva al tipo vecchio. Un file da tenere in mano ora lo fai tu, ed è un tipo di file diverso.

Il tuo telefono è il modo più semplice per capire la differenza. Il backup che fa di se stesso ogni notte è completo ed esatto, e torna in un solo passaggio su un telefono collegato allo stesso account. Non puoi aprirlo su un portatile e tirarne fuori le foto. Per avere foto da tenere ovunque, le esporti, e quello che ottieni è una cartella di file normali. Il backup giornaliero di Supabase ora è del primo tipo. Il file che puoi tenere è del secondo.

Posso scaricare il mio backup di Supabase?

Quello giornaliero no, se il tuo progetto usa Postgres 15.8.1.079 o successivo. La documentazione di Supabase sui backup dice che tutti i progetti da quella versione in poi usano backup fisici, e le sue note di risoluzione dei problemi dicono che, con i backup fisici attivi, Supabase non genera più il file di backup scaricabile. Puoi ripristinare quelle copie quando vuoi. Non puoi portartene via nessuna.

Il backup giornaliero di Supabase (fisico)Un dump che fai tu (logico)
Che cos'èUno snapshot dei file che Postgres tiene sul discoSQL: istruzioni per ricostruire ogni tabella, poi le righe
Chi lo ripristinaSupabase, quando premi RestoreTu, con psql, in qualsiasi Postgres
Dove può andareQuesto progetto, o uno nuovo nella stessa regioneUn altro progetto, un altro account, il tuo portatile, il tuo server
Si può scaricareNoÈ già un file
Sopravvive alla perdita dell'accesso all'accountNoSì, se lo tieni da un'altra parte

L'ultima riga va letta due volte. Supabase dice che, quando un progetto viene eliminato, rimuove tutti i dati collegati, compresi i backup conservati in S3. Elimini il progetto e le sue copie giornaliere se ne vanno nello stesso passaggio.

Che differenza c'è tra un backup fisico e uno logico?

Da dove viene presa la copia. Un backup fisico copia i file che Postgres stesso scrive sul disco, cosa che Supabase descrive come uno snapshot della directory sottostante del database. Un backup logico chiede al database di descriversi da solo in SQL, tabella per tabella e riga per riga, e scrive quella descrizione in un file di testo.

Ognuno è bravo in qualcosa di diverso. Una copia fisica si fa in fretta e si rimette in fretta, e torna esattamente com'era. Può leggerla solo lo stesso tipo di installazione Postgres da cui proviene, il che su Supabase significa le macchine di Supabase. Una copia logica si rigioca più lentamente e occupa più spazio, e qualsiasi Postgres della stessa versione o successiva può caricarla. È di nuovo il backup del telefono e la cartella esportata, e solo la seconda è un file che puoi tenere.

Il pulsante di download che la gente ricorda era del tipo logico. La documentazione di Supabase stessa, nel 2025, diceva che il processo giornaliero eseguiva pg_dumpall, comprimeva il file SQL e lo conservava, e che i backup fisici pesano meno sul database ed evitano di tenere bloccate le tue tabelle a lungo. La stessa pagina diceva che le copie fisiche non si possono scaricare dalla sezione Backups della dashboard.

La copia giornaliera può tornare su Supabase e da nessun'altra parte. Un dump che fai tu va ovunque giri un Postgres.

Come capisco quale ha il mio progetto?

Cerca un'opzione di download nella pagina Backups. Apri Database, poi Backups, nella tua dashboard di Supabase. Se ogni copia con la data ha un modo per scaricarla, il tuo progetto è ancora sui backup logici. Se ognuna offre Restore e nient'altro, è sui backup fisici, e la vecchia documentazione di Supabase usava proprio questo test.

Il secondo controllo è il numero di versione. Si trova in Project Settings, poi General. Qualsiasi cosa da 15.8.1.079 in su significa backup fisici. Leggilo da sinistra a destra: una versione che inizia con 17 è più recente di qualsiasi 15, e 15.8.1.100 è più recente di 15.8.1.079.

Due casi non hanno bisogno di alcun controllo:

La stessa pagina su due progetti. A sinistra i vecchi backup logici, ognuno con il suo download. A destra i backup fisici: solo ripristino.

Da cosa mi protegge ciascuno?

Il backup giornaliero ti protegge da qualcosa che va storto dentro il progetto. Un file che tieni tu copre anche la perdita del progetto stesso.

Il primo tipo di perdita lo causi tu. Una cancellazione che ha preso più righe del previsto, una migrazione scritta da un agente IA e che hai approvato, uno script puntato sulla tabella sbagliata. La copia giornaliera è esattamente lo strumento per questo: scegli ieri, premi Restore e il progetto torna a posto. Quanto indietro arriva dipende dal tuo piano, e su quale piano sei lo scopri in circa due minuti.

Il secondo tipo non ha niente a che fare con un errore nel database. Una carta scaduta mentre eri via, un accesso che non riesci a recuperare, un progetto che qualcuno ha eliminato. Le copie stanno dietro la stessa porta del progetto, e la porta è proprio ciò che si è chiuso. Il backup del tuo telefono funziona allo stesso modo: ti salva se il telefono cade in mare, e non ti serve a niente il giorno in cui non riesci più ad accedere all'account in cui si trova. Supabase tiene i suoi backup insieme alla piattaforma perché è questo che rende il ripristino un solo pulsante. Una copia che sopravvive all'account deve stare da un'altra parte, il che su Supabase significa un dump logico tirato fuori dall'account.

Cosa significa ripristinare, per ciascuno?

Con la copia giornaliera, il lavoro lo fa Supabase e tu scegli dove arriva. Con un file che tieni tu, il lavoro lo fai tu, e può arrivare ovunque.

Ripristinare la copia giornaliera nello stesso progetto sostituisce il database con la copia che scegli. Supabase dice che nel frattempo il progetto non è raggiungibile e che un database più grande richiede più tempo.

Ripristinarla in un nuovo progetto è una funzione a pagamento che Supabase chiama Restore to a New Project, ancora segnata come beta. Crea un progetto separato nella stessa regione, con i tuoi utenti e le loro password hashate, e viene fatturato come un secondo progetto. Un avvertimento sulla stessa pagina passa facilmente inosservato. Copia l'intero database, comprese le estensioni che agiscono verso l'esterno come pg_cron e pg_net, e quei job partono non appena il ripristino è completato. Se un job pianificato della tua app manda email o chiama un'API di pagamento, il nuovo progetto comincia a farlo anche lui, dal momento in cui esiste.

Ripristinare un file che tieni tu vuol dire rigiocarlo con psql dentro ciò che indichi: un nuovo progetto Supabase, uno su un altro account o un Postgres sul tuo computer. Come ripristinare un backup di Supabase passa in rassegna i comandi, e anche ciò che resta rotto quando hanno finito.

Come ottengo una copia del mio database Supabase in un file?

Fai da te un dump logico. Supabase lo pubblica nella sua guida a backup e ripristino come tre comandi, ognuno dei quali scrive un file:

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 stringa di connessione arriva dal pulsante Connect in cima al tuo progetto, con la password del tuo database al posto del segnaposto. La CLI di Supabase ha bisogno di Docker installato, perché esegue pg_dump dentro un container invece di usare quello del tuo computer.

Tieni tutti e tre i file. Il secondo da solo è la forma delle tue tabelle senza una sola riga dentro, e i tuoi utenti sono solo nel terzo.

Puoi anche eseguire pg_dump direttamente. Due cose da sapere prima. Supabase dice che un pg_dump grezzo si porta dietro gli schemi interni di Supabase insieme ai tuoi, e che rigiocarli provoca errori di permessi al ritorno. E Postgres documenta che pg_dump non fa il dump di un server con una versione principale più recente della sua, quindi una copia vecchia sul tuo computer si rifiuta di partire invece di scrivere un file sbagliato.

Metti i file da qualche parte che non sia il tuo account Supabase, e non solo sul tuo portatile.

Posso ripristinare un backup di Supabase sul mio computer?

Uno logico sì, in un Postgres della stessa versione principale o successiva. La copia giornaliera fisica non si può ripristinare da nessuna parte se non su Supabase.

La regola delle versioni viene da Postgres stesso. La sua documentazione dice che un dump dovrebbe potersi caricare nelle versioni più recenti e che non è garantito che si carichi in una più vecchia, nemmeno in quella da cui proviene. La guida di Supabase per spostare un progetto della piattaforma su Supabase self-hosted mostra come appare. La piattaforma può usare Postgres 17 mentre l'immagine self-hosted parte da 15 per impostazione predefinita, e il file dei dati contiene allora una riga, SET transaction_timeout = 0, che Postgres 15 non riconosce.

Un dump va in avanti. Gli errori cominciano quando lo carichi in un Postgres più vecchio di quello da cui proviene.

Quegli stessi tre file sono anche il modo per lasciare Supabase del tutto. Quella guida è la strada per far girare Supabase su un server tuo, e il disallineamento di versioni è la prima cosa di cui avverte.

Sul tuo computer, la CLI di Supabase avvia una copia locale di Supabase in Docker quando scrivi supabase start. Rigioca lì dentro i tre file con il comando psql della guida a backup e ripristino di Supabase, puntato su postgresql://postgres:postgres@localhost:54322/postgres, e i tuoi dati sono leggibili sul tuo computer senza alcun account di mezzo.

C'è un posto dove Supabase offre ancora un backup da scaricare. Un progetto gratuito in pausa oltre la sua finestra di ripristino sostituisce il pulsante Restore con il download dell'ultima copia fatta prima della pausa, e cosa fare con quel file è un articolo a parte.

Cosa non c'è in nessuna delle due copie?

I file caricati, le tue Edge Functions e la maggior parte delle impostazioni del tuo progetto.

Supabase dice che i backup del database non includono gli oggetti salvati tramite la Storage API. Il database tiene una riga che descrive ogni file, e il file vero e proprio vive altrove, quindi nessun backup del database, su nessun piano, contiene ciò che i tuoi utenti hanno caricato. Fare il backup di Storage è un lavoro a sé.

L'elenco che Supabase dà per Restore to a New Project è un buon inventario del resto: Edge Functions, impostazioni di autenticazione e chiavi API, impostazioni di Realtime, impostazioni delle estensioni e repliche di lettura vanno tutte riconfigurate a mano.

Una lacuna riguarda solo il file che tieni tu. Se la tua app conserva segreti in Supabase Vault o usa colonne cifrate, Supabase dice che i file di backup non contengono mai la chiave radice, solo i dati cifrati. Un nuovo progetto parte con una chiave sua, quindi quei valori arrivano illeggibili finché la vecchia chiave non viene copiata. E la vecchia chiave si può recuperare solo finché il vecchio progetto è attivo. Una volta messo in pausa o eliminato quel progetto, la chiave non si può più recuperare, e nemmeno nulla di ciò che cifrava.

Cosa fare questa settimana

Cosa fare

  • Apri Database, poi Backups, e cerca un'opzione di download. Se ogni copia offre solo Restore, hai backup fisici e lì non c'è niente da portare via.
  • Fai oggi un dump logico con i tre comandi e tieni i tre file insieme.
  • Cerca auth.users in data.sql prima di fidarti. È il file in cui ci sono i tuoi account, quando ci sono.
  • Conserva i file in un posto che non sia il tuo account Supabase.
  • Se usi Supabase Vault o colonne cifrate, leggi come si trasferisce la chiave radice prima di averne bisogno. Non è nel file.
  • Rigioca il dump una volta in un progetto usa e getta o in un Supabase locale, così la prima volta che lo apri non sarà il giorno in cui ti serve.

Dove si inserisce Reeve Care

Care fa la copia logica al posto tuo, la tiene fuori da Supabase, e ogni copia è un file che puoi scaricare.

  • Scarica qualsiasi copia come zip. Dentro ci sono schema.sql, data.sql e roles.sql, un manifest che conta le righe di ogni tabella e una nota su come caricarla in qualsiasi Postgres. È un dump standard, quindi qualsiasi sviluppatore può aprirlo, e anche qualsiasi altro hosting.
  • Conservata fuori dal tuo account Supabase, cifrata, quindi è ancora lì il giorno in cui l'account non c'è più.
  • Riletta prima di contare. La data nella tua dashboard è quella dell'ultima copia aperta e verificata, mai quella dell'ultimo tentativo.
  • I tuoi utenti ci sono. Lo schema auth viaggia con le tue tabelle, e i file caricati dai tuoi utenti arrivano anche loro non appena colleghi una credenziale di Storage.

Care conserva una copia del tuo database Supabase. Lascia accesi accanto a lei i backup giornalieri di Supabase: sono la via più rapida per tornare indietro da una migrazione andata male, e il file è ciò che resta se perdi l'account. Come una copia viene fatta, verificata e scaricata è disegnato passo per passo nella pagina sui backup di Supabase, e cosa include ogni piano è nella pagina dei prezzi.

Prima di chiudere questa scheda, apri Database, poi Backups, e guarda accanto alla tua copia più recente. Se lì non c'è niente da scaricare, il prossimo file che terrai è quello che fai tu, e cosa rende completo un dump è la cosa da leggere prima di farlo.

FAQ

Posso scaricare il mio backup di Supabase?

Quello giornaliero no, se il tuo progetto usa Postgres 15.8.1.079 o successivo. Supabase dice che tutti i progetti su quelle versioni usano backup fisici e che, una volta attivati, non genera più il file di backup scaricabile. Quelle copie puoi comunque ripristinarle dalla dashboard. Per avere un file da tenere, fai da te un dump logico con la CLI di Supabase o con pg_dump.

Che differenza c'è tra un backup fisico e uno logico?

Un backup fisico copia i file che Postgres tiene sul disco. Si ripristina in fretta e in modo esatto, e solo sullo stesso tipo di installazione Postgres da cui proviene, il che su Supabase significa che è Supabase a ripristinarlo per te. Un backup logico è SQL: le istruzioni per ricostruire ogni tabella, seguite dalle righe. Si rigioca più lentamente e si carica in qualsiasi Postgres della stessa versione o successiva, anche su un tuo computer.

Perché il pulsante di download è sparito?

Perché quello che scaricava non viene più prodotto. Il pulsante apparteneva ai vecchi backup giornalieri logici, file SQL che Supabase comprimeva e conservava. Quando un progetto passa ai backup fisici, Supabase smette di produrre quel file e la pagina Backups offre Restore senza alcun download accanto. Disattivare il ripristino a un punto nel tempo non lo fa tornare, perché anche dopo Supabase continua a fare backup fisici.

Come ottengo una copia del mio database Supabase in un file?

Esegui i tre comandi che Supabase pubblica nella sua guida a backup e ripristino: supabase db dump con --role-only, poi senza opzioni per lo schema, poi con --data-only e --use-copy per le righe. La CLI ha bisogno di Docker, perché esegue pg_dump dentro un container. Tieni i tre file insieme, in un posto che non sia il tuo account Supabase.

Posso ripristinare un backup di Supabase sul mio computer?

Uno logico sì, in un Postgres della stessa versione principale o successiva. Postgres documenta che un dump si carica in avanti e che non è garantito che si carichi in una versione precedente, e Supabase fa un esempio: la sua piattaforma può usare Postgres 17 mentre Supabase self-hosted parte da 15 per impostazione predefinita. Una copia giornaliera fisica non si può ripristinare da nessuna parte se non su Supabase.

Il piano Pro mi dà un backup scaricabile?

Non su un progetto con Postgres 15.8.1.079 o successivo. Lì Pro ti dà backup fisici giornalieri conservati per sette giorni, che puoi ripristinare nello stesso progetto o, finché la funzione è in beta, in un nuovo progetto nella stessa regione. Nessuna delle due strade ti dà un file. Una copia scaricabile la fai tu, oppure paghi qualcuno perché la faccia.

Scritto da

Vlad Tkachenko

Fondatore di Reeve

Passo le giornate a guardare app costruite con Lovable, Bolt, v0, Cursor e Replit, e la breve lista di errori che vi ricompaiono di continuo.

Altro sull'autore

Da leggere dopo

Tutti gli articoli

Non sai come sta messa la tua app?

Esegui una scansione gratuita e ottieni un voto chiaro da A a F in una ventina di secondi. Senza account e senza carta.

Scansiona la tua app gratis

Controllo esterno automatizzato, non un audit completo. L'assenza di risultati non è una garanzia di sicurezza.