Skip to main content

Migration vers S3

Ces instructions concernent la v5.x et les versions ultérieures. Si vous suivez ce guide pour une version antérieure, utilisez sharelatex au lieu de overleaf dans les noms de chemins et le préfixe SHARELATEX_ au lieu de OVERLEAF_ pour les variables d’environnement. Pour la v6 et les versions ultérieures, ignorez les anciennes commandes user_files.
Nous aimerions avoir de vos nouvelles ! Si vous souhaitez nous indiquer combien de fichiers vous avez migrés, leur volume total et la durée de la migration, envoyez un e-mail à ayaka-notes@outlook.com.
Ce guide vous accompagne dans la migration d’un stockage sur disque vers un stockage objet compatible S3. Il fait référence à des sections du document d’introduction sur la configuration S3.

Prérequis

  • Un stockage objet compatible S3 avec lequel communiquer ; voir #s3-setup pour les options
  • De l’espace disque libre pour migrer les données existantes, environ la taille actuelle sur disque
  • Une fenêtre de maintenance pour effectuer la migration proprement dite
  • Une sauvegarde complète, configuration comprise, permettant une restauration

Estimer l’espace disque nécessaire à la migration

Nous pouvons utiliser du pour calculer l’utilisation actuelle du disque :
Si vous ne disposez pas de suffisamment d’espace disque sur le serveur actuel, essayez d’y attacher un disque supplémentaire.
Les répertoires d’historique ont déjà la bonne structure. Vous pouvez les téléverser directement depuis le dossier source monté (bind-mount), ce qui ne nécessite aucun espace disque supplémentaire.

Étapes de migration

Étape 0 : arrêter l’instance

Nous devons nous assurer que tous les fichiers utilisateurs et de modèles seront migrés. Il est préférable d’arrêter l’instance pour éviter de manquer des fichiers nouvellement téléversés. Consultez 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 de projet pour les téléverser vers S3. La structure de répertoires du stockage local dans le filestore est <project-id>_<file-id> et celle dans S3 est <project-id>/<file-id>. Dans la suite, /srv/overleaf-s3-migration est utilisé pour stocker les fichiers dans la nouvelle structure de répertoires. Remplacez /srv/overleaf-bind-mount par le répertoire de l’hôte monté sur /var/lib/overleaf. Exécutez les commandes de copie sur l’hôte avec les permissions nécessaires pour lire et écrire dans ces répertoires ; le conteneur reste arrêté. Nous pouvons utiliser tar pour réécrire la structure :

Étape 2 : téléverser les fichiers

Selon vos préférences, vous pouvez utiliser le client S3 minio mc ou l’aws cli pour téléverser les fichiers vers votre stockage objet compatible S3. aws cli
  • Remplacez ici 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 bind-mount /var/lib/overleaf. Par défaut, il s’agit de ~/overleaf_data dans un déploiement docker-compose.yml et de <toolkit-checkout>/data/overleaf avec le Toolkit.
minio mc Nous utilisons ici l’alias de serveur « s3 » ; vous avez peut-être choisi un autre nom.

Étape 3 : démarrer l’instance en la pointant vers S3

Ajoutez toutes les variables liées à S3 à votre configuration, comme indiqué dans la section Aperçu des variables du guide de configuration S3. Conservez le bind-mount du répertoire de données : il peut également contenir des clés de chiffrement Zotero ou Mendeley qui ne sont pas migrées vers S3. Vous pouvez maintenant démarrer l’instance et valider la migration :
  • prévisualisation des fichiers binaires dans l’éditeur
  • compilation d’un PDF contenant des images
  • téléversement de nouveaux fichiers

Revenir en arrière

Vous pouvez annuler la migration proprement en inversant les étapes :
  1. Arrêtez l’instance
  2. Recopiez les fichiers en inversant l’ordre source/destination
  3. Réécrivez les nouveaux fichiers dans le répertoire local à l’aide d’un transform inverse
  4. Redémarrez l’instance avec l’ancienne configuration
La première transformation supprime le dossier de premier niveau. La seconde transforme la structure de répertoires en structure plate. Les jokers (wildcards) garantissent que seuls les fichiers sont extraits, et non leurs dossiers parents (de projet).
Dernière modification le 5 octobre 2026