Use una copia de seguridad JSON cuando necesite una copia sin conexión de datos de contenido seleccionados. EmDash no puede importar ese archivo. Un plan de recuperación necesita una copia de seguridad en bruto de la base de datos o recuperación point-in-time y una copia separada de los binarios de medios.
Para copiar el contenido, la configuración y los medios de un sitio a un sitio EmDash nuevo, incluso en otra base de datos, use un paquete de sitio en su lugar.
Si el sitio almacena ajustes de plugin cifrados, conserve la lista completa de rotación de EMDASH_ENCRYPTION_KEY en una copia de seguridad separada del gestor de secretos. La clave nunca se almacena en la base de datos, D1 Time Travel, un volcado SQL o una exportación JSON.
Qué hay en una copia de seguridad
Una copia de seguridad JSON incluye:
- Todas las entradas de contenido, incluidos borradores, publicaciones programadas y elementos en la papelera
- Definiciones de colección y de campos que forman el modelo de contenido
- Definiciones de taxonomía, términos y los términos asignados a cada entrada
- Menús e ítems de menú, secciones, áreas de widgets y widgets, registros SEO, historial de revisiones, metadatos de medios e historial de migraciones de la base de datos
- Ajustes del sitio como el título, el eslogan, la URL, la configuración regional, el logo, las preferencias de visualización, los perfiles sociales
y los valores SEO predeterminados. Provienen del grupo de ajustes
site:y de los ajustesemdash:site_title,emdash:site_taglineyemdash:locale.
Omite todas las demás tablas de la base de datos, incluidas:
- Cuentas de usuario, sesiones, passkeys, datos OAuth, tokens de API y otros datos de autenticación
- Almacenamiento y ajustes de plugins, incluidos los secretos de plugins
- Comentarios y reacciones, redirecciones y registros 404, bylines, relaciones y referencias de contenido, registros de auditoría, límites de tasa y estado de tareas programadas
- Carpetas de medios, registros de dónde se usan los medios, cargas incompletas o en curso, y los archivos de medios en sí
- Otras opciones del sitio, incluida la URL de despliegue registrada en la configuración (
emdash:site_url), el secreto de firma de preview y la programación de copias de seguridad
Las copias de seguridad son archivos JSON en el mismo formato de snapshot que usa el sistema de preview de EmDash, versionados con la versión de EmDash que las creó.
Descarga con un clic
En Settings → Backups del admin, el botón Download backup genera una copia nueva y la descarga como archivo JSON. Requiere el rol de administrador.
La descarga sirve para inspección o herramientas personalizadas. Antes de importaciones masivas, cambios de esquema o actualizaciones importantes, cree una copia restaurable de la base de datos con una de las opciones siguientes. Para mover el sitio a otro sitio EmDash, exporte un paquete de sitio en Settings → Transfer.
Copias automáticas al almacenamiento
Si su sitio tiene un backend de almacenamiento configurado (R2 en Cloudflare, S3 o almacenamiento local), puede habilitar copias diarias automáticas:
-
Abra Settings → Backups en el admin.
-
Active Daily automatic backups.
-
Elija cuántas copias conservar (1–30). Los archivos más antiguos se podan automáticamente.
-
Guarde. Las copias se ejecutan como parte del mantenimiento programado de EmDash — no hace falta cron adicional.
Los archivos se almacenan bajo el prefijo backups/ en su bucket como emdash-backup-<timestamp>-<random>.json. La lista Stored Backups del admin le permite descargar o eliminar archivos individuales, y Back up now crea uno bajo demanda.
Las copias automáticas se apoyan en el tick de mantenimiento programado (el mismo mecanismo que alimenta la publicación programada) — en Cloudflare es el desencadenador cron del Worker, en Node el programador integrado. Si su despliegue no tiene desencadenador cron configurado, use Back up now o el botón de descarga en su lugar.
Respaldar y restaurar objetos de medios
Los buckets R2 y compatibles con S3 necesitan una copia a nivel de objeto además de la base de datos. El siguiente ejemplo de AWS CLI copia cada objeto, incluidos los archivos backups/ de EmDash, a un directorio de copia local. Para AWS S3, omita --endpoint-url.
aws s3 sync s3://emdash-media ./emdash-media-backup \
--endpoint-url https://<account-id>.r2.cloudflarestorage.com
Use credenciales de bucket de solo lectura para trabajos rutinarios de copia. Almacene la copia fuera de la cuenta de producción o dominio de fallo, y registre la copia de la base de datos o el punto de Time Travel creado al mismo tiempo.
Restaure en un bucket de recuperación vacío en lugar de sobrescribir producción mientras atiende peticiones:
aws s3 sync ./emdash-media-backup s3://emdash-media-recovery \
--endpoint-url https://<account-id>.r2.cloudflarestorage.com
Dé al trabajo de restauración acceso de escritura solo al bucket de recuperación. Apunte un despliegue no productivo a ese bucket, abra varias URL de medios conocidas y suba y elimine un archivo desechable. Cambie el binding o la configuración del bucket de producción solo después de que la base de datos y el conjunto de medios restaurados pasen juntos sus comprobaciones.
Recuperar una base de datos D1 con Time Travel
Antes de una operación arriesgada, pida a Time Travel el bookmark actual y regístrelo con el despliegue o el registro del cambio:
npx wrangler d1 time-travel info my-database
Si se requiere recuperación, detenga las escrituras en el sitio e inspeccione el punto de restauración disponible antes de ejecutar el comando de restauración destructivo:
npx wrangler d1 time-travel restore my-database --timestamp=2026-07-08T13:00:00Z
Time Travel restaura toda la base de datos, incluidos contenido, usuarios, ajustes, datos de plugins y registros de migración. No restaura objetos de medios R2 ni EMDASH_ENCRYPTION_KEY. Antes de probar integraciones de plugins, restaure cada clave de cifrado referenciada por los ajustes de plugin recuperados. Tras completar el comando, despliegue la versión de la aplicación que coincida con la base de datos restaurada, reabra el tráfico y verifique el inicio de sesión, lecturas de contenido, cambios de esquema, un ajuste de plugin cifrado y una escritura.
Consulte la documentación de D1 Time Travel para más detalles.
Crear un volcado D1 externo
Para un volcado SQL completo de la base de datos en bruto (incluidas tablas de usuarios y auth), use Wrangler:
npx wrangler d1 export my-database --remote --output=backup.sql
Conserve el archivo SQL con la versión coincidente de la aplicación, la copia de medios creada al mismo tiempo y una copia almacenada por separado de la lista de rotación de EMDASH_ENCRYPTION_KEY. Pruebe la recuperación importando el volcado en una base de datos D1 vacía recién aprovisionada, restaurando las claves de runtime, actualizando un binding no productivo a esa base de datos y verificando el sitio.
Importe en la base de datos de recuperación vacía con el siguiente comando:
npx wrangler d1 execute my-recovery-database --remote --file=backup.sql
Copia de seguridad y recuperación de SQLite
Para una copia SQLite sin conexión, detenga todo proceso que escriba la base de datos y copie el archivo de la base de datos junto con cualquier archivo -wal y -shm a su lado. El archivo -wal puede contener cambios confirmados que aún no están en el archivo principal. Para una copia en línea consistente, use el comando de copia de SQLite:
sqlite3 emdash.db ".backup backup.db"
Respalde por separado el directorio local de cargas o el bucket compatible con S3 y la lista de rotación de EMDASH_ENCRYPTION_KEY. Para recuperar, detenga todo proceso del servidor, conserve una copia de la base de datos dañada, reemplácela con la copia verificada, restaure las claves de runtime y cualquier objeto de medios necesario, e inicie la versión coincidente de la aplicación. Verifique el inicio de sesión, el contenido público, un ajuste de plugin cifrado, una edición y una lectura de medios antes de reabrir el tráfico.
Las exportaciones JSON no pueden restaurar un sitio
EmDash no tiene acción de admin, endpoint de API ni comando CLI para restaurar JSON. Use D1 Time Travel, un volcado SQL D1 en bruto o una copia de la base de datos SQLite como se describe arriba.
Para reconstruir el contenido de un sitio en un sitio EmDash nuevo y vacío, exporte un paquete de sitio del sitio original mientras aún esté disponible e impórtelo en el sitio nuevo. Un paquete de sitio no restaura usuarios, tokens de API, datos de plugins ni secretos, por lo que no sustituye una copia de la base de datos para recuperación ante desastres.