> 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/fr/maintenance/data-and-backups.md).

# Données et sauvegardes

Parfois, nous devons modifier le schéma des données dans la base de données à mesure qu’Overleaf évolue ; des scripts de migration sont utilisés pour automatiser ce processus. Ils auront été exécutés sur [overleaf.com](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit) la première, qui est la plus grande instance d’Overleaf au monde, donc la plupart des cas auront déjà été rencontrés ; toutefois, nous n’offrons aucune garantie concernant vos données. Veuillez vous assurer de créer une **cohérente** sauvegarde de vos données **avant** pendant la mise à niveau de votre instance.

{% hint style="info" %}
Lors de la mise à niveau vers une nouvelle image Docker, toutes les migrations qui n’ont pas **ne pas** encore été exécutées seront automatiquement lancées ; cela peut prendre un certain temps selon la taille de votre jeu de données, et consulter les journaux vous indiquera l’avancement. Pour plus d’informations, consultez notre [Journalisation](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/logging) documentation.
{% endhint %}

### Stockage des données

Overleaf Community Edition et Server Pro stockent leurs données à trois emplacements distincts :

* **Base de données MongoDB :** C’est ici que résident les données des utilisateurs et des projets.
* **Redis :** sert de cache haute performance pour les données en cours de traitement, en stockant principalement les informations liées aux éditions de projet et à la collaboration.
* **Système de fichiers Overleaf :** stocke les fichiers de projet non modifiables (y compris les images) et sert également de cache disque temporaire pendant les compilations de projet.

{% hint style="info" %}
Cela peut être `~/sharelatex_data` ou `~/overleaf_data`, selon le moment où votre instance a été configurée.
{% endhint %}

{% hint style="success" %}
Pour les fichiers de projet et les données complètes de l’historique des projets, nous prenons également en charge des backends de stockage compatibles S3.
{% endhint %}

Voir Dossiers en détail pour plus d’informations sur l’organisation des dossiers sur le disque.

### Réaliser une sauvegarde cohérente

Il y a trois stockages qui doivent être inclus lors de la création d’une sauvegarde cohérente :

* MongoDB
* Redis
* Données du système de fichiers Overleaf

Afin de produire une sauvegarde cohérente, il est **obligatoire** d’empêcher les utilisateurs de produire de nouvelles données pendant que le processus de sauvegarde s’exécute. Nous conseillons donc de planifier une fenêtre de maintenance durant laquelle les utilisateurs ne devraient pas pouvoir accéder à l’instance ni modifier leurs projets.

Avant de commencer le processus de sauvegarde, vous devrez mettre votre instance hors ligne. À partir de Server Pro `3.5.0` le processus d’arrêt automatise la fermeture du site et la déconnexion des utilisateurs.

Pour arrêter votre instance, vous devrez exécuter `bin/docker-compose stop sharelatex` si vous utilisez un déploiement Toolkit ou `docker compose stop sharelatex` si vous utilisez Docker Compose.

Une fois le `conteneur sharelatex.` conteneur arrêté, vous pouvez lancer le processus de sauvegarde.

Une fois le processus de sauvegarde terminé **avec succès** vous devrez démarrer le `conteneur sharelatex.` conteneur. Pour ce faire, exécutez `bin/docker-compose start sharelatex` si vous utilisez un déploiement Toolkit ou `docker compose start sharelatex` si vous utilisez Docker Compose.

{% hint style="danger" %}

* Les sauvegardes devraient être stockées sur un serveur distinct de celui sur lequel votre instance Overleaf s’exécute, idéalement dans un endroit complètement différent.
* La réplication des bases de données sur plusieurs instances MongoDB peut offrir une certaine redondance, mais cela ne protège pas contre la corruption.
* Tester vos sauvegardes est la meilleure façon de s’assurer qu’elles sont complètes et fonctionnelles.
  {% endhint %}

### MongoDB

MongoDB est fourni avec un outil en ligne de commande appelé [mongodump](https://docs.mongodb.com/manual/reference/program/mongodump/) qui peut être utilisé pour créer une sauvegarde des données des utilisateurs et des projets stockées dans la base de données.

### Données du système de fichiers Overleaf

Pour les déploiements Toolkit, le chemin où vos fichiers non modifiables sont stockés est indiqué dans `config/overleaf.rc` à l'aide des `OVERLEAF_DATA_PATH` variable d’environnement, mais, selon le moment où votre instance a été créée, cela peut être `data/sharelatex`.

L’utilisation d’un outil tel que **rsync** pour copier récursivement ce répertoire est nécessaire afin de garantir la création d’une sauvegarde complète.

### Redis

Redis stocke les sessions utilisateur et les mises à jour de documents en attente avant qu’elles ne soient transférées vers MongoDB.

La persistance Append Only File (AOF) est la configuration recommandée pour la persistance Redis.

Les utilisateurs de Toolkit ont la persistance AOF activée par défaut pour **les nouvelles** installations ; les utilisateurs existants peuvent trouver plus d’informations sur l’activation de AOF [ici](/on-premises/fr/configuration/overleaf-toolkit/redis.md#enabling-append-only-file-persistence).

Si vous décidez de continuer à utiliser les instantanés RDB avec la persistance AOF, vous pouvez copier le fichier RDB vers un emplacement sécurisé en tant que sauvegarde.

### Migrer des données entre serveurs

Dans le meilleur des cas, vous n’avez pas encore de données précieuses dans la nouvelle instance. Nous n’avons pas de procédure pour fusionner les données de plusieurs instances.

En supposant que la nouvelle instance n’a pas encore de données, voici quelques étapes que vous pouvez suivre. En résumé, nous produisons une archive tar du `mongo`, `redis` et `overleaf` des volumes, nous la copions vers le nouveau serveur, puis nous la décompressons à nouveau là-bas.

#### Toolkit

```bash
# Arrêter proprement l’ancienne instance
old-server$ bin/stop

# Créer l’archive tar
old-server$ tar --create --file backup-old-server.tar config/ data/

# Copier le fichier backup-old-server.tar depuis old-server vers le
# new-server en utilisant toute méthode appropriée

# Arrêter proprement la nouvelle instance (si elle a déjà été démarrée)
new-server$ bin/stop

# Déplacer les nouvelles données, vous pouvez aussi les supprimer
new-server$ mkdir backup-new-server
new-server$ mv config/ data/ backup-new-server/

# Remplir à nouveau le répertoire config/data
new-server$ tar --extract --file backup-old-server.tar

# Démarrer les conteneurs
new-server$ bin/up
```

#### Docker Compose

```bash
# Arrêter proprement l’ancienne instance
old-server$ docker stop sharelatex
old-server$ docker stop mongo redis

# Créer l’archive tar
old-server$ tar --create --file backup-old-server.tar ~/OVERLEAF_data ~/mongo_data ~/redis_data

# Copier le fichier backup-old-server.tar depuis old-server vers
# new-server en utilisant toute méthode appropriée

# Arrêter proprement la nouvelle instance (si elle a déjà été démarrée)
new-server$ docker stop sharelatex
new-server$ docker stop mongo redis

# Déplacer les nouvelles données, vous pouvez aussi les supprimer
new-server$ mkdir backup-new-server
new-server$ mv ~/OVERLEAF_data ~/mongo_data ~/redis_data backup-new-server/

# Remplir à nouveau les répertoires de données
new-server$ tar --extract --file backup-old-server.tar

# Démarrer les conteneurs
new-server$ docker start mongo redis
new-server$ docker start sharelatex
```

Selon votre **docker-compose.yml** fichier, vous devrez peut-être ajuster les chemins des `mongo`, `redis`, `overleaf` volumes.

{% hint style="info" %}
Lorsque vous exécutez la commande en tant qu’utilisateur root (ou avec sudo), tar conservera le propriétaire/groupe du fichier ainsi que les permissions, ce qui est crucial lors de la restauration de la sauvegarde.
{% endhint %}

### Dossiers en détail

{% hint style="info" %}
Les dossiers suivants comportent des indications supplémentaires :

* (b) à inclure dans les sauvegardes, de préférence lorsque l’instance est arrêtée afin de garantir la cohérence
* (d) peut être supprimé
* (e) fichiers éphémères, peuvent être supprimés lorsque l’instance est arrêtée
  {% endhint %}

1. `~/mongo_data` (b)
   * répertoire de données MongoDB
2. `~/redis_data` (b)
   * répertoire de données de la base Redis
3. `~/overleaf_data`
   1. bin
      1. synctex (d)
         * non utilisé dans la dernière version ; auparavant, un binaire synctex personnalisé était utilisé (synctex est utilisé pour le mappage de source entre les fichiers .tex et le pdf)
   2. data
      1. cache (e)
         * cache de fichiers binaires pour les compilations
      2. compilations (e)
         * la compilation LaTeX se déroule ici
      3. db.sqlite (d)
         * non utilisé dans la dernière version, stockait auparavant les détails du cache clsi (soit déplacés vers de simples cartes en mémoire, soit nous analysons le disque)
      4. db.sqlite-wal (d)
         * non utilisé dans la dernière version, voir db.sqlite
      5. output (e)
         * stockage des sorties de compilation LaTeX pour la diffusion au client
      6. template\_files (b)
         * aperçus d’images du système de modèles (Server Pro uniquement)
      7. user\_files (b)
         * fichiers binaires des projets
      8. history (b)
         * fichiers de l’historique complet des projets
   3. tmp
      1. dumpFolder (e)
         * fichiers temporaires issus de la gestion des fichiers zip
      2. uploads (e)
         * mise en mémoire tampon des téléversements de fichiers (téléversement de fichier binaire/nouveau projet à partir d’un zip)
      3. projectHistories (e)
         * fichiers temporaires pour les migrations de l’historique complet des projets


---

# 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/fr/maintenance/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.
