Zum Inhalt springen

Backups

Warum du dein Supabase-Backup nicht herunterladen kannst

Dein Supabase-Backup kannst du auf aktuellen Projekten nicht herunterladen, weil die Tageskopie physisch ist. Wie du es prüfst und selbst eine Kopie hältst.

Vlad Tkachenko11 Min. Lesezeit
Vier tägliche Datenbank-Snapshots in einem Supabase-Gehäuse, der vordere beleuchtet und versiegelt, daneben eine leere Download-Ablage.

Kurz gesagt

  • Dein Supabase-Backup kannst du auf einem Projekt mit Postgres 15.8.1.079 oder neuer nicht herunterladen. Die täglichen Kopien sind dort physische Snapshots: Supabase kann sie für dich wiederherstellen, herunterladen kannst du sie nicht.
  • Der Download-Button, den ältere Anleitungen beschreiben, gehörte zu logischen Backups, also SQL-Dateien. Nur Projekte auf den älteren Versionen haben ihn noch.
  • Eine eigene Datei bekommst du nur, wenn du selbst einen logischen Dump mit der Supabase CLI oder pg_dump ziehst. Es ist die einzige Kopie, die den Verlust des Kontozugangs übersteht.

Du bist auf einem bezahlten Supabase-Tarif, also hast du Backups. Du öffnest Database, dann Backups, und da sind sie: eine Liste datierter Tageskopien, jede mit einem Restore-Button. Du suchst den Button, mit dem du dein Supabase-Backup herunterladen und irgendwo bei dir ablegen kannst, und es gibt keinen.

Kaputt ist nichts. Hier ist der Teil, den ältere Anleitungen immer noch falsch darstellen: Auf einem aktuellen Projekt gibt es kein Tages-Backup zum Herunterladen. Supabase hat seine täglichen Kopien auf eine andere Art von Backup umgestellt, eine, die Supabase für dich wiederherstellen und nicht herausgeben kann. Der Download-Button aus diesen Anleitungen gehörte zur älteren Art. Eine Datei, die du selbst hältst, machst du heute selbst, und es ist eine andere Art von Datei.

Am einfachsten stellst du dir den Unterschied mit deinem Handy vor. Das Backup, das es jede Nacht von sich selbst macht, ist vollständig und exakt, und es kommt in einem Schritt zurück auf ein Handy, das im selben Konto angemeldet ist. Du kannst es nicht auf einem Laptop öffnen und deine Fotos herausholen. Für Fotos, die du überall behalten kannst, exportierst du sie, und was du bekommst, ist ein Ordner mit ganz gewöhnlichen Dateien. Das tägliche Supabase-Backup ist jetzt die erste Art. Die Datei, die du halten kannst, ist die zweite.

Kann ich mein Supabase-Backup herunterladen?

Das tägliche nicht, wenn dein Projekt auf Postgres 15.8.1.079 oder neuer läuft. Die Backup-Dokumentation von Supabase sagt, dass alle Projekte ab dieser Version physische Backups nutzen, und die Troubleshooting-Hinweise sagen, dass Supabase mit physischen Backups die herunterladbare Backup-Datei nicht mehr erzeugt. Wiederherstellen kannst du diese Kopien, wann immer du willst. Mitnehmen kannst du keine.

Das tägliche Supabase-Backup (physisch)Ein Dump, den du selbst ziehst (logisch)
Was es istEin Snapshot der Dateien, die Postgres auf der Platte hältSQL: Anweisungen zum Neuaufbau jeder Tabelle, dann die Zeilen
Wer es wiederherstelltSupabase, wenn du auf Restore drückstDu, mit psql, in ein beliebiges Postgres
Wohin es gehen kannDieses Projekt oder ein neues in derselben RegionEin anderes Projekt, ein anderes Konto, dein Laptop, dein Server
Kannst du es herunterladenNeinEs ist bereits eine Datei
Übersteht es den Verlust des KontozugangsNeinJa, wenn du es woanders aufbewahrst

Die letzte Zeile solltest du zweimal lesen. Supabase schreibt, dass beim Löschen eines Projekts alle zugehörigen Daten entfernt werden, einschließlich aller in S3 gespeicherten Backups. Wer das Projekt löscht, löscht die Tageskopien im selben Schritt mit.

Was ist der Unterschied zwischen einem physischen und einem logischen Backup?

Woher die Kopie genommen wird. Ein physisches Backup kopiert die Dateien, die Postgres selbst auf die Platte schreibt, was Supabase als Snapshot des zugrunde liegenden Datenbankverzeichnisses beschreibt. Ein logisches Backup bittet die Datenbank, sich selbst in SQL zu beschreiben, Tabelle für Tabelle und Zeile für Zeile, und schreibt diese Beschreibung in eine Textdatei.

Jede kann etwas anderes gut. Eine physische Kopie ist schnell gemacht und schnell zurückgespielt, und sie kommt genau so zurück, wie sie war. Lesen kann sie nur dieselbe Art von Postgres-Installation, aus der sie stammt, und bei Supabase heißt das: Supabases eigene Maschinen. Eine logische Kopie spielt sich langsamer ein und braucht mehr Platz, und jedes Postgres derselben oder einer neueren Version kann sie laden. Es ist wieder das Handy-Backup und der exportierte Ordner, und nur das zweite ist eine Datei, die du halten kannst.

Der Download-Button, an den sich viele erinnern, war die logische Art. Die eigene Dokumentation von Supabase aus dem Jahr 2025 beschrieb, dass der tägliche Job pg_dumpall ausführte, die SQL-Datei zippte und ablegte, und dass physische Backups die Datenbank weniger belasten und deine Tabellen nicht lange sperren. Auf derselben Seite stand, dass physische Kopien sich nicht im Backups-Bereich des Dashboards herunterladen lassen.

Die Tageskopie kann zurück zu Supabase und sonst nirgendwohin. Ein Dump, den du selbst ziehst, geht überall hin, wo ein Postgres läuft.

Wie finde ich heraus, welche Art mein Projekt hat?

Such auf der Backups-Seite nach einer Download-Möglichkeit. Öffne in deinem Supabase-Dashboard Database, dann Backups. Hat jede datierte Kopie eine Möglichkeit zum Herunterladen, läuft dein Projekt noch mit logischen Backups. Bietet jede nur Restore und sonst nichts, sind es physische Backups, und die ältere Dokumentation von Supabase nutzte genau diesen Test.

Die zweite Prüfung ist die Versionsnummer. Sie steht unter Project Settings, dann General. Alles ab 15.8.1.079 bedeutet physische Backups. Lies sie von links nach rechts: Eine Version, die mit 17 beginnt, ist neuer als jede 15, und 15.8.1.100 ist neuer als 15.8.1.079.

Zwei Fälle musst du gar nicht prüfen:

  • Point-in-Time-Recovery ist an. Das läuft per Definition auf physischen Backups. Supabase schreibt außerdem, dass es nach dem Abschalten von Point-in-Time-Recovery weiter physische Backups nimmt, der Download kommt also nicht zurück.
  • Du bist auf dem Gratis-Tarif. Auf der Backups-Seite gibt es nichts zum Herunterladen oder Wiederherstellen, weil dir der Gratis-Tarif keine nutzbaren Tages-Backups gibt. Eine Kopie ohne Terminal machen ist der Anfang.
Dieselbe Seite auf zwei Projekten. Links die älteren logischen Backups, jedes mit Download. Rechts physische Backups: nur Wiederherstellen.

Wovor schützt mich welche Kopie?

Das Tages-Backup schützt dich davor, dass innerhalb des Projekts etwas schiefgeht. Eine Datei, die du selbst hältst, deckt auch den Verlust des Projekts selbst ab.

Die erste Art von Verlust verursachst du selbst. Ein Löschbefehl, der mehr Zeilen erwischt hat als gedacht, eine Migration, die ein KI-Agent geschrieben und du abgenickt hast, ein Skript, das auf die falsche Tabelle zeigte. Dafür ist die Tageskopie genau das richtige Werkzeug: gestern auswählen, Restore drücken, und das Projekt ist wiederhergestellt. Wie weit sie zurückreicht, hängt von deinem Tarif ab, und auf welchem Tarif du bist, klärst du in etwa zwei Minuten.

Die zweite Art hat mit einem Fehler in der Datenbank gar nichts zu tun. Eine Karte, die abgelaufen ist, während du weg warst, ein Login, das du nicht wiederherstellen kannst, ein Projekt, das jemand gelöscht hat. Die Kopien liegen hinter derselben Tür wie das Projekt, und die Tür ist das, was zugefallen ist. Dein Handy-Backup verhält sich genauso: Es rettet dich, wenn das Handy ins Meer fällt, und es hilft dir nicht an dem Tag, an dem du dich nicht mehr in das Konto einloggen kannst, in dem es liegt. Supabase bewahrt seine Backups bei der Plattform auf, weil eine Wiederherstellung genau deshalb nur einen Klick braucht. Eine Kopie, die das Konto übersteht, muss woanders liegen, und bei Supabase heißt das: ein logischer Dump, der aus dem Konto herausgeholt wurde.

Was bedeutet Wiederherstellen bei welcher Kopie?

Bei der Tageskopie macht Supabase die Arbeit, und du wählst, wo sie landet. Bei einer Datei, die du hältst, machst du die Arbeit, und sie kann überall landen.

Die Tageskopie ins selbe Projekt wiederherstellen ersetzt die Datenbank durch die Kopie, die du auswählst. Supabase schreibt, dass das Projekt währenddessen nicht erreichbar ist und eine größere Datenbank länger braucht.

Sie in ein neues Projekt wiederherstellen ist eine kostenpflichtige Funktion, die Supabase Restore to a New Project nennt und noch als Beta kennzeichnet. Sie legt ein eigenes Projekt in derselben Region an, mit deinen Nutzern und ihren gehashten Passwörtern, und es wird als zweites Projekt abgerechnet. Ein Hinweis auf derselben Seite geht leicht unter. Sie kopiert die gesamte Datenbank, einschließlich Erweiterungen, die nach außen wirken, etwa pg_cron und pg_net, und diese Jobs laufen los, sobald die Wiederherstellung fertig ist. Wenn ein geplanter Job in deiner App E-Mails verschickt oder eine Zahlungs-API aufruft, tut das neue Projekt das ab dem Moment, in dem es existiert, ebenfalls.

Eine Datei wiederherstellen, die du hältst, heißt, sie mit psql in das einzuspielen, worauf du zeigst: ein neues Supabase-Projekt, eines in einem anderen Konto oder ein Postgres auf deinem eigenen Rechner. Wie du ein Supabase-Backup wiederherstellst geht die Befehle durch und auch das, was danach noch kaputt ist.

Wie bekomme ich eine Kopie meiner Supabase-Datenbank als Datei?

Zieh selbst einen logischen Dump. Supabase veröffentlicht ihn in seiner Anleitung zu Backup und Restore als drei Befehle, von denen jeder eine Datei schreibt:

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

Den Connection String bekommst du über den Connect-Button oben in deinem Projekt, mit deinem Datenbankpasswort anstelle des Platzhalters. Die Supabase CLI braucht ein installiertes Docker, weil sie pg_dump in einem Container ausführt, statt eines von deinem Rechner zu nehmen.

Behalte alle drei Dateien. Die zweite allein ist die Form deiner Tabellen ohne eine einzige Zeile darin, und deine Nutzer stecken nur in der dritten.

Du kannst pg_dump auch direkt ausführen. Zwei Dinge solltest du vorher wissen. Supabase schreibt, dass ein rohes pg_dump die internen Schemas von Supabase mit deinen zusammen mitnimmt und dass das Einspielen dieser Schemas Berechtigungsfehler auslöst. Und Postgres dokumentiert, dass pg_dump nicht von einem Server dumpt, der eine neuere Hauptversion hat als es selbst. Eine ältere Kopie auf deinem Rechner weigert sich also zu starten, statt eine fehlerhafte Datei zu schreiben.

Leg die Dateien irgendwo ab, das nicht dein Supabase-Konto ist, und nicht nur auf deinen Laptop.

Kann ich ein Supabase-Backup auf meinem eigenen Rechner wiederherstellen?

Ein logisches schon, in ein Postgres derselben Hauptversion oder einer neueren. Die physische Tageskopie lässt sich nirgends außer bei Supabase wiederherstellen.

Die Versionsregel kommt von Postgres selbst. Seine Dokumentation sagt, dass sich ein Dump in neuere Versionen laden lassen sollte und in eine ältere nicht garantiert, nicht einmal in die, aus der er stammt. Die Anleitung von Supabase zum Umzug eines Plattform-Projekts auf selbst gehostetes Supabase zeigt, wie das aussieht. Die Plattform kann Postgres 17 fahren, während das selbst gehostete Image standardmäßig auf 15 läuft, und die Datendatei enthält dann eine Zeile, SET transaction_timeout = 0, die Postgres 15 nicht kennt.

Ein Dump bewegt sich vorwärts. Wer ihn in ein älteres Postgres lädt als das, aus dem er stammt, bekommt Fehler.

Dieselben drei Dateien sind auch der Weg ganz weg von Supabase. Diese Anleitung beschreibt, wie du Supabase auf einem eigenen Server betreibst, und der Versionskonflikt ist das Erste, wovor sie warnt.

Auf deinem eigenen Rechner startet die Supabase CLI mit supabase start eine lokale Kopie von Supabase in Docker. Spiel die drei Dateien mit dem psql-Befehl aus der Anleitung zu Backup und Restore von Supabase ein, gerichtet auf postgresql://postgres:postgres@localhost:54322/postgres, und deine Daten sind auf deinem eigenen Rechner lesbar, ganz ohne Konto.

Es gibt eine Stelle, an der Supabase noch ein Backup zum Herunterladen anbietet. Ein Gratis-Projekt, das über sein Wiederherstellungsfenster hinaus pausiert ist, ersetzt den Restore-Button durch einen Download der letzten Kopie vor der Pause, und was du mit dieser Datei machst, ist ein eigener Artikel.

Was ist in keiner der beiden Kopien?

Deine hochgeladenen Dateien, deine Edge Functions und die meisten Einstellungen deines Projekts.

Supabase schreibt, dass Datenbank-Backups keine über die Storage API gespeicherten Objekte enthalten. Die Datenbank hält eine Zeile, die jede Datei beschreibt, und die Datei selbst liegt woanders, also enthält kein Datenbank-Backup auf irgendeinem Tarif die Uploads deiner Nutzer. Storage sichern ist eine eigene Aufgabe.

Die Liste, die Supabase für Restore to a New Project angibt, ist eine gute Bestandsaufnahme des Rests: Edge Functions, Auth-Einstellungen und API-Schlüssel, Realtime-Einstellungen, Erweiterungseinstellungen und Read Replicas müssen alle von Hand neu eingerichtet werden.

Eine Lücke betrifft nur die Datei, die du hältst. Wenn deine App Geheimnisse in Supabase Vault ablegt oder verschlüsselte Spalten nutzt, schreibt Supabase, dass Backup-Dateien nie den Root Key enthalten, nur die verschlüsselten Daten. Ein neues Projekt startet mit einem eigenen Schlüssel, also kommen diese Werte unlesbar an, bis der alte Schlüssel hinüberkopiert ist. Und der alte Schlüssel lässt sich nur abrufen, solange das alte Projekt noch aktiv ist. Ist dieses Projekt pausiert oder gelöscht, lässt sich der Schlüssel nicht mehr abrufen, und alles, was damit verschlüsselt wurde, auch nicht.

Was du diese Woche tun solltest

Was zu tun ist

  • Öffne Database, dann Backups, und such nach einer Download-Möglichkeit. Bietet jede Kopie nur Restore, hast du physische Backups und dort nichts zum Mitnehmen.
  • Zieh heute einen logischen Dump mit den drei Befehlen und bewahre alle drei Dateien zusammen auf.
  • Durchsuche data.sql nach auth.users, bevor du dich darauf verlässt. In dieser Datei stecken deine Konten, wenn sie überhaupt drin sind.
  • Leg die Dateien an einem Ort ab, der nicht dein Supabase-Konto ist.
  • Wenn du Supabase Vault oder verschlüsselte Spalten nutzt, lies nach, wie der Root Key umzieht, bevor du ihn brauchst. Er ist nicht in der Datei.
  • Spiel den Dump einmal in ein Wegwerf-Projekt oder ein lokales Supabase ein, damit du ihn nicht zum ersten Mal an dem Tag öffnest, an dem du ihn brauchst.

Wo Reeve Care passt

Care zieht die logische Kopie für dich, bewahrt sie außerhalb von Supabase auf, und jede Kopie ist eine Datei, die du herunterladen kannst.

  • Lade jede Kopie als Zip herunter. Darin stecken schema.sql, data.sql und roles.sql, ein Manifest, das die Zeilen jeder Tabelle zählt, und eine Notiz, wie du alles in ein beliebiges Postgres lädst. Es ist ein Standard-Dump, also kann ihn jede Entwicklerin und jeder Entwickler öffnen, und jeder andere Hoster auch.
  • Außerhalb deines Supabase-Kontos gespeichert, verschlüsselt, also noch da an einem Tag, an dem das Konto es nicht mehr ist.
  • Zurückgelesen, bevor sie zählt. Das Datum in deinem Dashboard ist die letzte Kopie, die geöffnet und geprüft wurde, nie die letzte, die versucht wurde.
  • Deine Nutzer sind drin. Das auth-Schema reist mit deinen Tabellen, und die Dateien, die deine Nutzer hochgeladen haben, kommen mit, sobald du einen Storage-Zugang verbindest.

Care bewahrt eine Kopie deiner Supabase-Datenbank auf. Lass die täglichen Supabase-Backups daneben eingeschaltet: Sie sind der schnellste Weg zurück nach einer schiefgegangenen Migration, und die Datei ist das, was bleibt, wenn du das Konto verlierst. Wie eine Kopie gezogen, geprüft und heruntergeladen wird, ist Schritt für Schritt auf der Seite zu Supabase-Backups gezeichnet, und was jeder Tarif enthält, steht auf der Preisseite.

Bevor du diesen Tab schließt, öffne Database, dann Backups, und schau neben deine neueste Kopie. Gibt es dort nichts zum Herunterladen, ist die nächste Datei, die du hältst, die, die du selbst machst, und was einen Dump vollständig macht, liest du am besten, bevor du ihn machst.

FAQ

Kann ich mein Supabase-Backup herunterladen?

Das tägliche nicht, wenn dein Projekt auf Postgres 15.8.1.079 oder neuer läuft. Supabase schreibt, dass jedes Projekt auf diesen Versionen physische Backups nutzt und dass die herunterladbare Backup-Datei danach nicht mehr erzeugt wird. Wiederherstellen kannst du diese Kopien im Dashboard weiterhin. Eine Datei, die du behalten kannst, bekommst du mit einem logischen Dump, den du selbst mit der Supabase CLI oder pg_dump ziehst.

Was ist der Unterschied zwischen einem physischen und einem logischen Backup?

Ein physisches Backup kopiert die Dateien, die Postgres auf der Festplatte ablegt. Es lässt sich schnell und exakt wiederherstellen, aber nur auf derselben Art von Postgres-Installation, aus der es stammt, und bei Supabase heißt das: Supabase stellt es für dich wieder her. Ein logisches Backup ist SQL, also die Anweisungen zum Neuaufbau jeder Tabelle, gefolgt von den Zeilen. Es spielt sich langsamer ein und lässt sich in jedes Postgres derselben oder einer neueren Version laden, auch auf deinem eigenen Rechner.

Warum ist der Download-Button verschwunden?

Weil das, was er heruntergeladen hat, nicht mehr erzeugt wird. Der Button gehörte zu den älteren logischen Tages-Backups, also SQL-Dateien, die Supabase gezippt und abgelegt hat. Wechselt ein Projekt zu physischen Backups, erzeugt Supabase diese Datei nicht mehr, und die Backups-Seite bietet nur noch Restore ohne Download daneben. Point-in-Time-Recovery abzuschalten bringt ihn nicht zurück, denn Supabase nimmt auch danach physische Backups.

Wie bekomme ich eine Kopie meiner Supabase-Datenbank als Datei?

Führe die drei Befehle aus, die Supabase in seiner Anleitung zu Backup und Restore veröffentlicht: supabase db dump mit --role-only, dann ohne Flags für das Schema, dann mit --data-only und --use-copy für die Zeilen. Die CLI braucht Docker, weil sie pg_dump in einem Container ausführt. Bewahre alle drei Dateien zusammen auf, und zwar an einem Ort, der nicht dein Supabase-Konto ist.

Kann ich ein Supabase-Backup auf meinem eigenen Rechner wiederherstellen?

Ein logisches schon, in ein Postgres derselben Hauptversion oder einer neueren. Postgres dokumentiert, dass ein Dump sich vorwärts laden lässt und in eine ältere Version nicht garantiert, und Supabase nennt ein Beispiel: Die Plattform kann Postgres 17 fahren, während selbst gehostetes Supabase standardmäßig auf 15 läuft. Eine physische Tageskopie lässt sich nirgends außer bei Supabase wiederherstellen.

Bekomme ich mit dem Pro-Tarif ein herunterladbares Backup?

Nicht auf einem Projekt mit Postgres 15.8.1.079 oder neuer. Dort bekommst du mit Pro tägliche physische Backups, sieben Tage lang aufbewahrt, die du ins selbe Projekt wiederherstellen kannst oder, solange die Funktion in der Beta ist, in ein neues Projekt in derselben Region. Keiner der beiden Wege gibt dir eine Datei. Eine herunterladbare Kopie ziehst du selbst oder bezahlst jemanden dafür.

Geschrieben von

Vlad Tkachenko

Gründer, Reeve

Ich schaue mir den ganzen Tag Apps an, die mit Lovable, Bolt, v0, Cursor und Replit gebaut wurden, und die kurze Liste von Fehlern, die darin immer wieder auftauchen.

Mehr über den Autor

Weiterlesen

Alle Artikel

Unsicher, wie es um deine eigene App steht?

Starte einen kostenlosen Scan und erhalte in rund 20 Sekunden eine verständliche Note von A bis F. Ohne Konto, ohne Karte.

App kostenlos scannen

Automatisierte externe Prüfung, kein vollständiges Audit. Das Fehlen von Funden ist keine Garantie für Sicherheit.