> For the complete documentation index, see [llms.txt](https://overleaf-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://overleaf-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; los scripts de migración se utilizan 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 de Overleaf más grande del mundo, por lo que la mayoría de los casos ya se habrán encontrado; sin embargo, no ofrecemos garantías sobre sus datos. Asegúrese de crear una **consistente** copia de seguridad de sus datos **antes de** al actualizar su 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 dependiendo del tamaño de su conjunto de datos, y seguir los registros le mostrará el progreso. Para obtener más información, consulte nuestro [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 datos en tránsito, almacenando principalmente información relacionada con las ediciones de proyectos y la colaboración.
* **Sistema de archivos de Overleaf:** almacena los archivos no editables del proyecto (incluidas las imágenes) y también actúa como una caché temporal en disco durante las compilaciones de proyectos.

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

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

Consulte Carpetas en detalle para obtener 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 hacer 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 se ejecuta el proceso de copia de seguridad. Por ello, recomendamos programar una ventana de mantenimiento durante la cual los usuarios no puedan acceder a la instancia ni editar sus proyectos.

Antes de iniciar el proceso de copia de seguridad, deberá desconectar su instancia. En Server Pro, `3.5.0` el proceso de apagado automatiza el cierre del sitio y la desconexión de los usuarios.

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

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

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

{% hint style="danger" %}

* Las copias de seguridad deben almacenarse en un servidor distinto del que ejecuta su instancia de Overleaf, idealmente en una ubicación completamente diferente.
* Replicar bases de datos en múltiples instancias de MongoDB podría ofrecer cierta redundancia, pero no protege contra la corrupción.
* Probar sus copias de seguridad es la mejor manera de garantizar que estén completas y funcionen correctamente.
  {% endhint %}

### MongoDB

MongoDB incluye una herramienta de línea de comandos llamada [mongodump](https://docs.mongodb.com/manual/reference/program/mongodump/) que puede utilizarse 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

Para implementaciones de Toolkit, la ruta donde se almacenan sus 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ó su 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 vuelquen a MongoDB.

La persistencia Append Only File (AOF) es la configuración recomendada para la persistencia de Redis.

Los usuarios de Toolkit tienen la persistencia AOF habilitada por defecto para **nuevas** 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 decide seguir usando instantáneas RDB junto con la persistencia AOF, puede copiar el archivo RDB a una ubicación segura como copia de seguridad.

### Migrar datos entre servidores

En el mejor de los casos, aún no tiene datos valiosos en la nueva instancia. No disponemos de un proceso para fusionar los datos de las instancias.

Suponiendo que la nueva instancia aún no tenga datos, aquí hay algunos pasos que puede seguir. A grandes rasgos, generamos un tarball de los `mongo`, `redis` y `overleaf` volúmenes, lo copiamos al nuevo servidor y lo descomprimimos allí de nuevo.

#### Toolkit

```bash
# Apague correctamente la instancia antigua
old-server$ bin/stop

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

# Copie el archivo backup-old-server.tar del servidor antiguo al
# servidor nuevo usando cualquier método que encaje

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

# Mueva los nuevos datos, también puede eliminarlos
new-server$ mkdir backup-new-server
new-server$ mv config/ data/ backup-new-server/

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

# Inicie los contenedores
new-server$ bin/up
```

#### Docker Compose

```bash
# Apague correctamente la instancia antigua
old-server$ docker stop sharelatex
old-server$ docker stop mongo redis

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

# Copie el archivo backup-old-server.tar del servidor antiguo al
# servidor nuevo usando cualquier método que encaje

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

# Mueva los nuevos datos, también puede eliminarlos
new-server$ mkdir backup-new-server
new-server$ mv ~/OVERLEAF_data ~/mongo_data ~/redis_data backup-new-server/

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

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

Dependiendo de su **docker-compose.yml** archivo, es posible que deba 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; es mejor cuando la instancia está detenida para garantizar la coherencia
* (d) puede eliminarse
* (e) archivos efímeros, pueden eliminarse cuando la instancia esté detenida
  {% endhint %}

1. `~/mongo_data` (b)
   * directorio de datos de MongoDB
2. `~/redis_data` (b)
   * directorio de datos de la BD de Redis
3. `~/overleaf_data`
   1. bin
      1. synctex (d)
         * no se usa en la versión más reciente; anteriormente se utilizaba un binario synctex personalizado (synctex se usa para el mapeo 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 versión más reciente; anteriormente almacenaba detalles de la caché de clsi (o se trasladaron a mapas simples en memoria o analizamos el disco)
      4. db.sqlite-wal (d)
         * no se usa en la versión más reciente; consulte db.sqlite
      5. salida (e)
         * almacenamiento de la salida de compilación de LaTeX para servirla al cliente
      6. template\_files (b)
         * previsualizaciones de imagen 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 generados al procesar archivos zip
      2. uploads (e)
         * almacenamiento intermedio de subidas de archivos (subida de archivo binario/nuevo proyecto desde zip)
      3. projectHistories (e)
         * archivos temporales para 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://overleaf-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.
