Verwenden Sie ein JSON-Backup, wenn Sie eine Offline-Kopie ausgewählter Inhaltsdaten benötigen. EmDash kann diese Datei nicht importieren. Ein Wiederherstellungsplan benötigt ein rohes Datenbank-Backup oder eine Point-in-Time-Wiederherstellung und eine separate Kopie der Medien-Binärdateien.
Was in einem Backup enthalten ist
Ein JSON-Backup enthält:
- Alle Inhaltseinträge, einschließlich Entwürfe, geplante Beiträge und gelöschte Elemente
- Sammlungs- und Felddefinitionen, die das Inhaltsmodell ausmachen
- Taxonomie-Definitionen, Begriffe und die jedem Eintrag zugewiesenen Begriffe
- Menüs und Menüelemente, Abschnitte, Widget-Bereiche und Widgets, SEO-Einträge, Revisionshistorie, Medien-Metadaten und Datenbankmigrationshistorie
- Website-Einstellungen wie Titel, Slogan, URL, Locale, Logo, Anzeigeeinstellungen, Social-Media-Profile und SEO-Standards. Diese stammen aus den Einstellungsgruppen
site:,emdash:site_undemdash:locale.
Es lässt alle anderen Datenbanktabellen aus, einschließlich:
- Benutzerkonten, Sitzungen, Passkeys, OAuth-Daten, API-Token und andere Authentifizierungsdaten
- Plugin-Speicher und Plugin-Einstellungen, einschließlich Plugin-Geheimnisse
- Kommentare und Reaktionen, Weiterleitungen und 404-Protokolle, Autorenzeilen, Inhaltsrelationen und -referenzen, Audit-Protokolle, Ratenlimits und Zustand geplanter Aufgaben
- Medienordner, Aufzeichnungen darüber, wo Medien verwendet werden, unvollständige oder laufende Uploads und die Mediendateien selbst
- Andere Website-Optionen, einschließlich des Preview-Signierungsgeheimnisses und des Backup-Zeitplans
Backups sind JSON-Dateien im gleichen Snapshot-Format, das von EmDashs Preview-System verwendet wird, versioniert mit der EmDash-Version, die sie erstellt hat.
Ein-Klick-Download
Unter Settings → Backups im Admin generiert die Schaltfläche Download backup ein frisches Backup und lädt es als JSON-Datei herunter. Erfordert die Admin-Rolle.
Der Download dient zur Inspektion oder für benutzerdefinierte Migrationstools. Vor Massenimporten, Schemaänderungen oder größeren Upgrades erstellen Sie ein wiederherstellbares Datenbank-Backup mit einer der folgenden Optionen.
Automatische Backups in den Speicher
Wenn Ihre Website ein konfiguriertes Speicher-Backend hat (R2 auf Cloudflare, S3 oder lokaler Speicher), können Sie tägliche automatische Backups aktivieren:
-
Öffnen Sie Settings → Backups im Admin.
-
Schalten Sie Daily automatic backups ein.
-
Wählen Sie, wie viele Backups aufbewahrt werden sollen (1–30). Ältere Archive werden automatisch bereinigt.
-
Speichern. Backups werden als Teil der geplanten Wartung von EmDash ausgeführt — kein zusätzliches Cron-Setup erforderlich.
Archive werden unter dem backups/-Präfix in Ihrem Bucket als emdash-backup-<timestamp>-<random>.json gespeichert. Die Liste Stored Backups im Admin ermöglicht es Ihnen, einzelne Archive herunterzuladen oder zu löschen, und Back up now erstellt eines auf Anfrage.
Automatische Backups nutzen den geplanten Wartungstakt (derselbe Mechanismus, der das geplante Veröffentlichen antreibt) — auf Cloudflare ist das der Cron-Trigger des Workers, auf Node der eingebaute Scheduler. Wenn Ihr Deployment keinen Cron-Trigger konfiguriert hat, verwenden Sie Back up now oder die Download-Schaltfläche stattdessen.
Medien-Objekte sichern und wiederherstellen
R2 und S3-kompatible Buckets benötigen zusätzlich zur Datenbank ein Backup auf Objektebene. Das folgende AWS-CLI-Beispiel kopiert jedes Objekt, einschließlich EmDashs backups/-Archive, in ein lokales Backup-Verzeichnis. Für AWS S3 lassen Sie --endpoint-url weg.
aws s3 sync s3://emdash-media ./emdash-media-backup \
--endpoint-url https://<account-id>.r2.cloudflarestorage.com
Verwenden Sie schreibgeschützte Bucket-Anmeldedaten für routinemäßige Backup-Jobs. Speichern Sie das Backup außerhalb des Produktionskontos oder der Fehlerdomäne und notieren Sie das Datenbank-Backup oder den Time-Travel-Punkt, der zur gleichen Zeit erstellt wurde.
Stellen Sie in einen leeren Wiederherstellungs-Bucket wieder her, anstatt die Produktion zu überschreiben, während sie Anfragen bedient:
aws s3 sync ./emdash-media-backup s3://emdash-media-recovery \
--endpoint-url https://<account-id>.r2.cloudflarestorage.com
Geben Sie dem Wiederherstellungsjob Schreibzugriff nur auf den Wiederherstellungs-Bucket. Richten Sie ein Nicht-Produktions-Deployment auf diesen Bucket, öffnen Sie mehrere bekannte Medien-URLs und laden Sie eine Testdatei hoch und löschen Sie sie. Ändern Sie das Produktions-Binding oder die Bucket-Konfiguration erst, nachdem die wiederhergestellte Datenbank und der Mediensatz ihre Prüfungen gemeinsam bestanden haben.
Eine D1-Datenbank mit Time Travel wiederherstellen
Vor einer riskanten Operation fragen Sie Time Travel nach dem aktuellen Lesezeichen und notieren Sie es zusammen mit dem Deployment- oder Änderungsprotokoll:
npx wrangler d1 time-travel info my-database
Wenn eine Wiederherstellung erforderlich ist, stoppen Sie Schreibvorgänge auf der Website und überprüfen Sie den verfügbaren Wiederherstellungspunkt, bevor Sie den destruktiven Wiederherstellungsbefehl ausführen:
npx wrangler d1 time-travel restore my-database --timestamp=2026-07-08T13:00:00Z
Time Travel stellt die gesamte Datenbank wieder her, einschließlich Inhalte, Benutzer, Einstellungen, Plugin-Daten und Migrationsdatensätze. Es stellt keine R2-Medienobjekte wieder her. Nach Abschluss des Befehls deployen Sie die Anwendungsversion, die zur wiederhergestellten Datenbank passt, öffnen den Traffic wieder und überprüfen Anmeldung, Inhaltslesen, Schemaänderungen und einen Schreibvorgang.
Siehe die D1 Time Travel Dokumentation für Details.
Einen Offsite-D1-Dump erstellen
Für einen vollständigen SQL-Dump der Rohdatenbank (einschließlich Benutzer- und Auth-Tabellen) verwenden Sie Wrangler:
npx wrangler d1 export my-database --remote --output=backup.sql
Bewahren Sie die SQL-Datei zusammen mit der passenden Anwendungsversion und dem zur gleichen Zeit erstellten Medien-Backup auf. Testen Sie die Wiederherstellung, indem Sie den Dump in eine neu bereitgestellte leere D1-Datenbank importieren, ein Nicht-Produktions-Binding auf diese Datenbank aktualisieren und die Website überprüfen.
Importieren Sie in die leere Wiederherstellungsdatenbank mit dem folgenden Befehl:
npx wrangler d1 execute my-recovery-database --remote --file=backup.sql
SQLite-Backup und -Wiederherstellung
Für ein Offline-SQLite-Backup stoppen Sie jeden Prozess, der in die Datenbank schreibt, und kopieren Sie die Datenbankdatei. Für ein konsistentes Online-Backup verwenden Sie SQLites Backup-Befehl:
sqlite3 emdash.db ".backup backup.db"
Sichern Sie das lokale Upload-Verzeichnis oder den S3-kompatiblen Bucket separat. Zur Wiederherstellung stoppen Sie jeden Serverprozess, behalten Sie eine Kopie der beschädigten Datenbank, ersetzen Sie sie durch das verifizierte Backup, stellen Sie alle erforderlichen Medienobjekte wieder her und starten Sie die passende Anwendungsversion. Überprüfen Sie Anmeldung, öffentliche Inhalte, eine Bearbeitung und einen Medien-Lesevorgang, bevor Sie den Traffic wieder öffnen.
JSON-Exporte können keine Website wiederherstellen
EmDash hat keine Admin-Aktion, keinen API-Endpunkt und keinen CLI-Befehl für die JSON-Wiederherstellung. Verwenden Sie D1 Time Travel, einen rohen D1-SQL-Dump oder eine Kopie der SQLite-Datenbank wie oben beschrieben.