> 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/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) sur la première, qui est la plus grande instance d’Overleaf au monde, donc la plupart des éventualités auront déjà été rencontrées ; cependant, nous ne donnons aucune garantie concernant vos données. Veuillez vous assurer de créer une **cohérente** sauvegarde de vos données **avant** lors de 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 le seront automatiquement ; cela peut prendre un certain temps selon la taille de votre jeu de données, surveiller les journaux vous indiquera sa progression. 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 endroits 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, stockant principalement les informations liées aux versions de projets et à la collaboration.
* **Système de fichiers Overleaf :** stocke les fichiers de projet non modifiables (y compris les images) et sert également de disque cache temporaire pendant les compilations de projets.

{% hint style="info" %}
Cela pourrait être `~/sharelatex_data` ou `~/overleaf_data`, selon la date de configuration de votre instance.
{% 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 les backends de stockage compatibles S3.
{% endhint %}

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

### Réalisation d’une sauvegarde cohérente

Il y a trois magasins à inclure lors de la réalisation 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 l’exécution du processus de sauvegarde. Nous conseillons donc de planifier une fenêtre de maintenance pendant laquelle les utilisateurs ne doivent 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 exécutez un déploiement Toolkit ou `docker compose stop sharelatex` si vous exécutez Docker Compose.

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

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

{% hint style="danger" %}

* Les sauvegardes doivent être stockées sur un serveur distinct de celui sur lequel votre instance Overleaf s’exécute, idéalement dans un emplacement entièrement différent.
* La réplication des bases de données sur plusieurs instances MongoDB peut offrir une certaine redondance, mais 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 utilisateur 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ù sont stockés vos fichiers non modifiables est spécifié dans `config/overleaf.rc` à l'aide des `variable d’environnement OVERLEAF_DATA_PATH` la variable d’environnement, mais, selon la date de création de votre instance, cela peut être `data/sharelatex`.

L’utilisation d’un outil tel que **rsync** pour copier récursivement ce répertoire est nécessaire pour 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 vidées vers MongoDB.

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

Les utilisateurs de Toolkit ont la persistance AOF activée par défaut pour **les nouveaux** les nouvelles installations, les utilisateurs existants peuvent trouver plus d’informations sur l’activation d’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.

### Migration des données entre serveurs

Au mieux, vous ne disposez pas encore de données précieuses dans la nouvelle instance. Nous n’avons pas de processus pour fusionner les données des instances.

En supposant que la nouvelle instance ne contient encore aucune donnée, voici quelques étapes que vous pourriez suivre. En gros, nous produisons une archive tar du `mongo`, `redis` et `Overleaf` des volumes, la copions sur le nouveau serveur, puis 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 de l’ancien serveur vers le
# nouveau serveur en utilisant toute méthode adapté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 de l’ancien serveur vers
# le nouveau serveur en utilisant toute méthode adapté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" %}
Lorsqu’il est exécuté en tant qu’utilisateur root (ou avec sudo), tar conservera le propriétaire/groupe des fichiers et les autorisations, ce qui est crucial lors de la restauration de la sauvegarde.
{% endhint %}

### Dossiers en détail

{% hint style="info" %}
Les dossiers suivants ont 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 parcourons le disque)
      4. db.sqlite-wal (d)
         * non utilisé dans la dernière version, voir db.sqlite
      5. sortie (e)
         * stockage de la sortie de compilation LaTeX pour la servir au client
      6. template\_files (b)
         * aperçus d’image du système de modèles (Server Pro uniquement)
      7. user\_files (b)
         * fichiers binaires des projets
      8. history (b)
         * fichiers complets de l’historique des projets
   3. tmp
      1. dumpFolder (e)
         * fichiers temporaires issus du traitement des fichiers zip
      2. uploads (e)
         * 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 complètes de l’historique 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://ayakaleaf-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.
