> For the complete documentation index, see [llms.txt](https://ayakaleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ayakaleaf-pro.ayaka.space/on-premises/es/mantenimiento/data-and-backups.md).

# Datos y copias de seguridad

A veces necesitamos cambiar el esquema de los datos en la base de datos a medida que evolucionamos Overleaf; se utilizan scripts de migración para automatizar este proceso. Se habrán ejecutado en [overleaf.com](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit) primero, que es la instancia más grande de Overleaf en el mundo, por lo que la mayoría de los casos ya se habrán encontrado; sin embargo, no ofrecemos garantías sobre tus datos. Asegúrate de crear una **consistente** copia de seguridad de tus datos **antes de** al actualizar tu instancia.

{% hint style="info" %}
Al actualizar a una nueva imagen de Docker, cualquier migración que haya **no** aún no se haya ejecutado se ejecutará automáticamente; esto puede tardar un tiempo según el tamaño de tu conjunto de datos, y seguir los registros te mostrará el progreso. Para más información, consulta nuestra [Registro](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/logging) documentación.
{% endhint %}

### Almacenamiento de datos

Overleaf Community Edition y Server Pro almacenan sus datos en tres lugares separados:

* **Base de datos MongoDB:** Aquí es donde residen los datos de usuarios y proyectos.
* **Redis:** sirve como una caché de alto rendimiento para los datos en tránsito, almacenando principalmente información relacionada con las ediciones de proyectos y la colaboración.
* **Sistema de archivos de Overleaf:** almacena archivos de proyecto no editables (incluidas imágenes) y también actúa como una caché temporal en disco durante las compilaciones de proyectos.

{% hint style="info" %}
Podría ser `~/sharelatex_data` o `~/overleaf_data`, dependiendo de cuándo se configuró tu instancia.
{% endhint %}

{% hint style="success" %}
Para los archivos de proyecto y los datos completos del historial del proyecto, también admitimos backends de almacenamiento compatibles con S3.
{% endhint %}

Consulta Carpetas en detalle para más información sobre la disposición de las carpetas en el disco.

### Realizar una copia de seguridad consistente

Hay tres almacenes que deben incluirse al realizar una copia de seguridad consistente:

* MongoDB
* Redis
* datos del sistema de archivos de Overleaf

Para producir una copia de seguridad consistente es **obligatorio** impedir que los usuarios generen nuevos datos mientras el proceso de copia de seguridad está en ejecución. Por ello, recomendamos programar una ventana de mantenimiento durante la cual los usuarios no deberían poder acceder a la instancia ni editar sus proyectos.

Antes de empezar el proceso de copia de seguridad, deberás desconectar tu instancia. A partir de Server Pro `3.5.0` el proceso de apagado automatiza el cierre del sitio y la desconexión de los usuarios.

Para apagar tu instancia, deberás ejecutar `bin/docker-compose stop sharelatex` si estás ejecutando una implementación de Toolkit o `docker compose stop sharelatex` si estás ejecutando Docker Compose.

Una vez que el `sharelatex` contenedor se haya detenido, puedes iniciar el proceso de copia de seguridad.

Una vez que el proceso de copia de seguridad se haya completado **correctamente** deberás iniciar el `sharelatex` contenedor. Para ello, ejecuta `bin/docker-compose start sharelatex` si estás ejecutando una implementación de Toolkit o `docker compose start sharelatex` si estás ejecutando Docker Compose.

{% hint style="danger" %}

* Las copias de seguridad deberían almacenarse en un servidor distinto al que ejecuta tu instancia de Overleaf, idealmente en una ubicación completamente diferente.
* Replicar las bases de datos en varias instancias de MongoDB puede ofrecer cierta redundancia, pero no protege contra la corrupción.
* Probar tus copias de seguridad es la mejor manera de asegurarte de que estén completas y funcionen.
  {% endhint %}

### MongoDB

MongoDB incluye una herramienta de línea de comandos llamada [mongodump](https://docs.mongodb.com/manual/reference/program/mongodump/) que puede usarse para crear una copia de seguridad de los datos de usuarios y proyectos almacenados en la base de datos.

### datos del sistema de archivos de Overleaf

En las implementaciones de Toolkit, la ruta donde se almacenan tus archivos no editables se especifica en `config/overleaf.rc` usando los `OVERLEAF_DATA_PATH` la variable de entorno, pero, dependiendo de cuándo se creó tu instancia, esto podría ser `data/sharelatex`.

Usar una herramienta como **rsync** para copiar este directorio de forma recursiva es necesario para garantizar que se cree una copia de seguridad completa.

### Redis

Redis almacena las sesiones de usuario y las actualizaciones pendientes de documentos antes de que se vacíen en MongoDB.

La persistencia de archivo solo de anexión (AOF) es la configuración recomendada para la persistencia de Redis.

Los usuarios de Toolkit tienen la persistencia AOF habilitada de forma predeterminada para **nuevos** las instalaciones; los usuarios existentes pueden encontrar más información sobre cómo habilitar AOF [aquí](/on-premises/es/configuracion/overleaf-toolkit/redis.md#enabling-append-only-file-persistence).

Si decides seguir usando instantáneas RDB junto con la persistencia AOF, puedes copiar el archivo RDB a una ubicación segura como copia de seguridad.

### Migrar datos entre servidores

Como mucho, aún no tienes ningún dato valioso en la nueva instancia. No tenemos un proceso para fusionar los datos de las instancias.

Suponiendo que la nueva instancia aún no tenga datos, estos son algunos pasos que podrías seguir. En términos generales, generamos un tarball de los `mongo`, `redis` y `overleaf` volúmenes, lo copiamos al nuevo servidor y lo descomprimimos allí de nuevo.

#### Toolkit

```bash
# Apaga correctamente la instancia anterior
old-server$ bin/stop

# Crear el tarball
old-server$ tar --create --file backup-old-server.tar config/ data/

# Copia el archivo backup-old-server.tar del old-server al
# new-server usando cualquier método que convenga

# Apaga correctamente la nueva instancia (si ya se inició)
new-server$ bin/stop

# Mueve los nuevos datos; también puedes borrarlos
new-server$ mkdir backup-new-server
new-server$ mv config/ data/ backup-new-server/

# Rellena de nuevo el directorio config/data
new-server$ tar --extract --file backup-old-server.tar

# Iniciar contenedores
new-server$ bin/up
```

#### Docker Compose

```bash
# Apaga correctamente la instancia anterior
old-server$ docker stop sharelatex
old-server$ docker stop mongo redis

# Crear el tarball
old-server$ tar --create --file backup-old-server.tar ~/OVERLEAF_data ~/mongo_data ~/redis_data

# Copia el archivo backup-old-server.tar del old-server a
# el new-server usando cualquier método que convenga

# Apaga correctamente la nueva instancia (si ya se inició)
new-server$ docker stop sharelatex
new-server$ docker stop mongo redis

# Mueve los nuevos datos; también puedes borrarlos
new-server$ mkdir backup-new-server
new-server$ mv ~/OVERLEAF_data ~/mongo_data ~/redis_data backup-new-server/

# Rellena de nuevo los directorios de datos
new-server$ tar --extract --file backup-old-server.tar

# Iniciar contenedores
new-server$ docker start mongo redis
new-server$ docker start sharelatex
```

Dependiendo de tu **docker-compose.yml** archivo, puede que necesites ajustar las rutas de los `mongo`, `redis`, `overleaf` volúmenes.

{% hint style="info" %}
Al ejecutarse como usuario root (o con sudo), tar conservará el propietario/grupo del archivo y los permisos, lo cual es crucial al restaurar la copia de seguridad.
{% endhint %}

### Carpetas en detalle

{% hint style="info" %}
Las siguientes carpetas tienen indicaciones adicionales:

* (b) incluir en las copias de seguridad; mejor cuando la instancia está detenida para garantizar la consistencia
* (d) se puede eliminar
* (e) archivos efímeros; se pueden eliminar cuando la instancia está detenida
  {% endhint %}

1. `~/mongo_data` (b)
   * directorio de datos de MongoDB
2. `~/redis_data` (b)
   * directorio de datos de la base de datos de Redis
3. `~/overleaf_data`
   1. bin
      1. synctex (d)
         * no se usa en la última versión; anteriormente se utilizaba un binario synctex personalizado (synctex se usa para la asignación de origen entre archivos .tex y el pdf)
   2. data
      1. caché (e)
         * caché de archivos binarios para compilaciones
      2. compilaciones (e)
         * la compilación de LaTeX ocurre aquí
      3. db.sqlite (d)
         * no se usa en la última versión; anteriormente almacenaba detalles de la caché de clsi (o se movieron a mapas simples en memoria o analizamos el disco)
      4. db.sqlite-wal (d)
         * no se usa en la última versión; consulta db.sqlite
      5. output (e)
         * almacenamiento de la salida de la compilación de LaTeX para servirla al cliente
      6. template\_files (b)
         * vistas previas de imágenes del sistema de plantillas (solo Server Pro)
      7. user\_files (b)
         * archivos binarios de los proyectos
      8. history (b)
         * archivos del historial completo del proyecto
   3. tmp
      1. dumpFolder (e)
         * archivos temporales del manejo de archivos zip
      2. uploads (e)
         * almacenamiento en búfer de las subidas de archivos (subida de archivo binario/nuevo proyecto desde zip)
      3. projectHistories (e)
         * archivos temporales para las migraciones del historial completo del proyecto


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ayakaleaf-pro.ayaka.space/on-premises/es/mantenimiento/data-and-backups.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
