> 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/s3-migration.md).

# Migration S3

## Migration S3

{% hint style="info" %}
Ces instructions concernent v5.x et les versions ultérieures. Si vous suivez ce guide pour une version antérieure, veuillez utiliser `conteneur sharelatex.` au lieu de `overleaf` dans les noms de chemin et `SHARELATEX_` le préfixe au lieu de `OVERLEAF_` pour les variables d'environnement.
{% endhint %}

{% hint style="warning" %}
Clients Server Pro : veuillez contacter l'assistance avant de migrer vos données vers S3.
{% endhint %}

{% hint style="success" %}
**Nous aimerions avoir de vos nouvelles !** Si vous souhaitez nous indiquer combien de fichiers vous avez migrés, leur volume total et combien de temps la migration a pris, envoyez un e-mail à [`support@overleaf.com`](mailto:support@overleaf.com) .
{% endhint %}

Ce guide vous accompagnera dans la migration du stockage sur disque vers un stockage d'objets compatible S3. Il fait référence à des sections du document d'introduction sur le [Configuration S3](/on-premises/fr/configuration/overleaf-toolkit/s3.md).

### Exigences

* Un stockage d'objets compatible S3 à utiliser, voir [S3](/on-premises/fr/configuration/overleaf-toolkit/s3.md#s3-setup) pour les options
* De l'espace disque libre pour migrer les données existantes, soit environ la taille actuelle sur disque
* Une fenêtre de maintenance pour effectuer la migration proprement dite
* Une sauvegarde complète, y compris la configuration, pour permettre la restauration à partir de celle-ci

### Estimer la taille de disque nécessaire pour la migration

Nous pouvons utiliser `du` pour calculer l'utilisation actuelle du disque :

```shell
docker exec sharelatex \
  du --human-readable --max-depth=0 /var/lib/overleaf/data/user_files

docker exec sharelatex \
  du --human-readable --max-depth=0 /var/lib/overleaf/data/template_files
```

Au cas où vous ne disposeriez pas de suffisamment d'espace disque sur le serveur actuel, essayez de connecter un autre disque au serveur.

{% hint style="info" %}
Les répertoires d'historique ont déjà la bonne structure. Vous pouvez téléverser directement depuis le dossier source monté en bind, ce qui ne nécessite aucun espace disque supplémentaire.
{% endhint %}

### Étapes de la migration

#### Étape 0 : arrêter l'instance

Nous devons nous assurer que tous les fichiers utilisateur/modèle seront migrés. Il est préférable d'arrêter l'instance pour éviter d'omettre des fichiers nouvellement téléversés.

Veuillez consulter notre guide sur la réalisation d'une sauvegarde cohérente pour la procédure d'arrêt.

#### Étape 1 : réécrire la structure des répertoires

Nous devons réécrire la structure des répertoires des fichiers du projet pour les téléverser vers S3. La structure des répertoires pour le stockage local dans filestore est `<project-id>_<file-id>` et la structure des répertoires dans S3 est `<project-id>/<file-id>`.

Dans ce qui suit, `/srv/overleaf-s3-migration` est utilisé pour stocker les fichiers dans la nouvelle structure de répertoires.

Nous pouvons utiliser `tar` pour réécrire la structure :

```shell
mkdir -p /srv/overleaf-s3-migration/user_files \
         /srv/overleaf-s3-migration/template_files
docker exec sharelatex \
  tar --create --directory /var/lib/overleaf/data/user_files . \
| tar --extract --directory /srv/overleaf-s3-migration/user_files \
  --transform=sx_x/x
docker exec sharelatex \
  tar --create --directory /var/lib/overleaf/data/template_files . \
| tar --extract --directory /srv/overleaf-s3-migration/template_files \
  --transform=sx_x/xg
```

#### Étape 2 : téléverser les fichiers

Selon votre préférence, vous pouvez utiliser le client S3 minio mc ou aws cli pour téléverser les fichiers vers votre stockage d'objets compatible S3.

**aws cli**

{% hint style="info" %}

* Ici, vous devez remplacer `overleaf-user-files`, `overleaf-template-files`, `overleaf-project-blobs` et `overleaf-chunks` par les noms de vos buckets S3.
* Remplacez également `/srv/overleaf-bind-mount` par le chemin local du `/var/lib/overleaf` bind-mount. Par défaut, il s'agit de `~/overleaf_data` dans un déploiement docker-compose.yml et `<toolkit-checkout>/data/overleaf` lors de l'utilisation du Toolkit.
  {% endhint %}

{% code overflow="wrap" %}

```shell
aws s3 sync /srv/overleaf-s3-migration/user_files s3://overleaf-user-files
aws s3 sync /srv/overleaf-s3-migration/template_files s3://overleaf-template-files

aws s3 sync /srv/overleaf-bind-mount/data/history/overleaf-project-blobs s3://overleaf-project-blobs
aws s3 sync /srv/overleaf-bind-mount/data/history/overleaf-chunks s3://overleaf-chunks
```

{% endcode %}

**minio mc**

Nous utilisons ici l'alias serveur « s3 » ; vous avez peut-être choisi un autre nom.

{% code overflow="wrap" %}

```shell
mc mirror /srv/overleaf-s3-migration/user_files s3/overleaf-user-files
mc mirror /srv/overleaf-s3-migration/template_files s3/overleaf-template-files

mc mirror /srv/overleaf-bind-mount/data/history/overleaf-project-blobs s3/overleaf-project-blobs
mc mirror /srv/overleaf-bind-mount/data/history/overleaf-chunks s3/overleaf-chunks
```

{% endcode %}

#### Étape 3 : démarrer l'instance en pointant vers S3

Ajoutez toutes les variables liées à S3 à votre configuration, comme détaillé dans la [Présentation des variables](/on-premises/fr/configuration/overleaf-toolkit/s3.md#overview-of-variables) section du [S3](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/s3) guide de configuration.

Pour les déploiements Docker Compose, vous pouvez également supprimer le bind-mount du répertoire de données de la section volumes.

{% hint style="success" %}
Veuillez conserver le [bind-mount d'un disque temporaire pour les fichiers éphémères](/on-premises/fr/support/troubleshooting.md#running-overleaf-with-an-nfs-filesystem) en place.
{% endhint %}

Vous pouvez maintenant démarrer l'instance et valider la migration :

* peut prévisualiser les fichiers binaires dans l'éditeur
* peut compiler un PDF avec des images
* peut téléverser de nouveaux fichiers

### Retour arrière

Vous pouvez annuler proprement la migration en inversant les étapes :

1. Arrêter l'instance
2. Recopier les fichiers en sens inverse en inversant l'ordre source/destination
3. Réécrire les nouveaux fichiers dans le répertoire local à l'aide d'une `transformation`
4. Redémarrer l'instance avec l'ancienne configuration

{% code overflow="wrap" %}

```shell
# Lors de l'utilisation de aws cli
aws s3 sync s3://overleaf-user-files /srv/overleaf-s3-migration/user_files
aws s3 sync s3://overleaf-template-files /srv/overleaf-s3-migration/template_files
aws s3 sync s3://overleaf-project-blobs /srv/overleaf-bind-mount/data/history/overleaf-project-blobs
aws s3 sync s3://overleaf-chunks /srv/overleaf-bind-mount/data/history/overleaf-chunks

# Lors de l'utilisation de minio mc
mc mirror s3/overleaf-user-files /srv/overleaf-s3-migration/user_files
mc mirror s3/overleaf-template-files /srv/overleaf-s3-migration/template_files
mc mirror s3/overleaf-project-blobs /srv/overleaf-bind-mount/data/history/overleaf-project-blobs
mc mirror s3/overleaf-chunks /srv/overleaf-bind-mount/data/history/overleaf-chunks
```

{% endcode %}

```shell
# Écrire les fichiers dans l'installation locale de Server CE/Server Pro
tar --create --directory /srv/overleaf-s3-migration/user_files . \
| docker exec --interactive sharelatex \
    tar \
      --extract \
      --keep-old-files \
      --directory /var/lib/overleaf/data/user_files \
      --transform=sx./xx --transform=sx/x_x \
      --wildcards '*/*/*'

tar --create --directory /srv/overleaf-s3-migration/template_files . \
| docker exec --interactive sharelatex \
    tar \
      --extract \
      --keep-old-files \
      --directory /var/lib/overleaf/data/template_files \
      --transform=sx./xx --transform=sx/x_xg \
      --wildcards '*/*/*/*/pdf-converted-cache/*' \
      --wildcards '*/*/*/*/pdf' \
      --wildcards '*/*/*/*/zip'
```

{% hint style="info" %}
La première transformation supprime le dossier de premier niveau. La deuxième transformation change la structure des répertoires en une structure plate. Les jokers garantissent que seuls les fichiers sont extraits, et non leurs dossiers parents (projet).
{% endhint %}


---

# 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/s3-migration.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.
