Usa un backup JSON quando hai bisogno di una copia offline di dati di contenuto selezionati. EmDash non può importare quel file. Un piano di ripristino necessita di un backup grezzo del database o un ripristino point-in-time e una copia separata dei binari media.
Cosa contiene un backup
Un backup JSON include:
- Tutte le voci di contenuto, incluse bozze, post programmati ed elementi eliminati
- Definizioni di collezioni e campi che compongono il modello di contenuto
- Definizioni di tassonomia, termini e i termini assegnati a ciascuna voce
- Menu ed elementi di menu, sezioni, aree widget e widget, record SEO, cronologia revisioni, metadati media e cronologia migrazioni database
- Impostazioni del sito come titolo, sottotitolo, URL, locale, logo, preferenze di visualizzazione, profili social e impostazioni SEO predefinite. Queste provengono dai gruppi di impostazioni
site:,emdash:site_eemdash:locale.
Omette tutte le altre tabelle del database, incluse:
- Account utente, sessioni, passkey, dati OAuth, token API e altri dati di autenticazione
- Storage dei plugin e impostazioni dei plugin, inclusi i segreti dei plugin
- Commenti e reazioni, redirect e log 404, firme degli autori, relazioni e riferimenti di contenuto, log di audit, limiti di frequenza e stato delle attività programmate
- Cartelle media, record di dove i media sono utilizzati, upload incompleti o in corso e i file media stessi
- Altre opzioni del sito, incluso il segreto di firma dell’anteprima e il programma di backup
I backup sono file JSON nello stesso formato snapshot usato dal sistema di anteprima di EmDash, versionati con la release di EmDash che li ha creati.
Download con un clic
In Settings → Backups nell’admin, il pulsante Download backup genera un backup fresco e lo scarica come file JSON. Richiede il ruolo admin.
Il download è per ispezione o strumenti di migrazione personalizzati. Prima di importazioni massive, modifiche allo schema o aggiornamenti importanti, crea un backup ripristinabile del database usando una delle opzioni seguenti.
Backup automatici nello storage
Se il tuo sito ha un backend di storage configurato (R2 su Cloudflare, S3 o storage locale), puoi abilitare i backup giornalieri automatici:
-
Apri Settings → Backups nell’admin.
-
Attiva Daily automatic backups.
-
Scegli quanti backup conservare (1–30). Gli archivi più vecchi vengono eliminati automaticamente.
-
Salva. I backup vengono eseguiti come parte della manutenzione programmata di EmDash — non serve configurazione cron aggiuntiva.
Gli archivi sono memorizzati sotto il prefisso backups/ nel tuo bucket come emdash-backup-<timestamp>-<random>.json. La lista Stored Backups nell’admin ti permette di scaricare o eliminare singoli archivi, e Back up now ne crea uno su richiesta.
I backup automatici sfruttano il tick di manutenzione programmata (lo stesso meccanismo che alimenta la pubblicazione programmata) — su Cloudflare è il cron trigger del Worker, su Node lo scheduler integrato. Se il tuo deployment non ha un cron trigger configurato, usa Back up now o il pulsante di download.
Backup e ripristino degli oggetti media
I bucket R2 e compatibili S3 necessitano di un backup a livello di oggetto oltre al database. Il seguente esempio AWS CLI copia ogni oggetto, inclusi gli archivi backups/ di EmDash, in una directory di backup locale. Per AWS S3, ometti --endpoint-url.
aws s3 sync s3://emdash-media ./emdash-media-backup \
--endpoint-url https://<account-id>.r2.cloudflarestorage.com
Usa credenziali bucket di sola lettura per i lavori di backup di routine. Conserva il backup fuori dall’account di produzione o dal dominio di errore, e registra il backup del database o il punto Time Travel creato contemporaneamente.
Ripristina in un bucket di ripristino vuoto anziché sovrascrivere la produzione mentre serve richieste:
aws s3 sync ./emdash-media-backup s3://emdash-media-recovery \
--endpoint-url https://<account-id>.r2.cloudflarestorage.com
Dai al lavoro di ripristino accesso in scrittura solo al bucket di ripristino. Punta un deployment non di produzione a quel bucket, apri diversi URL media noti, e carica ed elimina un file usa e getta. Cambia il binding di produzione o la configurazione del bucket solo dopo che il database ripristinato e il set di media passano i loro controlli insieme.
Ripristinare un database D1 con Time Travel
Prima di un’operazione rischiosa, chiedi a Time Travel il segnalibro corrente e registralo con il deployment o il record di modifica:
npx wrangler d1 time-travel info my-database
Se è necessario il ripristino, ferma le scritture al sito e ispeziona il punto di ripristino disponibile prima di eseguire il comando di ripristino distruttivo:
npx wrangler d1 time-travel restore my-database --timestamp=2026-07-08T13:00:00Z
Time Travel ripristina l’intero database, inclusi contenuto, utenti, impostazioni, dati dei plugin e record di migrazione. Non ripristina gli oggetti media R2. Al termine del comando, deploya la versione dell’applicazione che corrisponde al database ripristinato, riapri il traffico e verifica l’accesso, le letture di contenuto, le modifiche allo schema e una scrittura.
Vedi la documentazione D1 Time Travel per i dettagli.
Creare un dump D1 offsite
Per un dump SQL completo del database grezzo (incluse le tabelle utenti e auth), usa Wrangler:
npx wrangler d1 export my-database --remote --output=backup.sql
Conserva il file SQL con la versione dell’applicazione corrispondente e il backup media creato contemporaneamente. Testa il ripristino importando il dump in un database D1 vuoto appena provisionato, aggiornando un binding non di produzione a quel database e verificando il sito.
Importa nel database di ripristino vuoto con il seguente comando:
npx wrangler d1 execute my-recovery-database --remote --file=backup.sql
Backup e ripristino SQLite
Per un backup SQLite offline, ferma ogni processo che scrive nel database e copia il file del database. Per un backup online consistente, usa il comando di backup di SQLite:
sqlite3 emdash.db ".backup backup.db"
Esegui il backup della directory di upload locale o del bucket compatibile S3 separatamente. Per il ripristino, ferma ogni processo server, conserva una copia del database danneggiato, sostituiscilo con il backup verificato, ripristina eventuali oggetti media necessari e avvia la versione dell’applicazione corrispondente. Verifica l’accesso, il contenuto pubblico, una modifica e una lettura media prima di riaprire il traffico.
Le esportazioni JSON non possono ripristinare un sito
EmDash non ha azione admin, endpoint API o comando CLI per il ripristino JSON. Usa D1 Time Travel, un dump SQL grezzo D1 o una copia del database SQLite come descritto sopra.