Миграция на S3
Эти инструкции относятся к версии v5.x и более поздним. Если вы следуете этому руководству для более ранней версии, используйте
sharelatex вместо overleaf в путях и префикс SHARELATEX_ вместо OVERLEAF_ для переменных окружения. Для v6 и более поздних версий пропустите устаревшие команды для user_files.Мы будем рады узнать о вашем опыте! Если вы хотите рассказать нам, сколько файлов вы перенесли, каков их общий объём и сколько времени заняла миграция, напишите на
ayaka-notes@outlook.com.Требования
- S3-совместимое объектное хранилище, с которым будет работать сервер; варианты см. в #s3-setup
- Свободное место на диске для переноса существующих данных — примерно равное текущему объёму данных на диске
- Окно обслуживания для выполнения самой миграции
- Полная резервная копия, включая конфигурацию, чтобы можно было из неё восстановиться
Оценка объёма диска, необходимого для миграции
Для расчёта текущего использования диска можно воспользоватьсяdu:
Каталоги истории уже имеют правильную структуру. Их можно загружать непосредственно из смонтированной (bind mount) исходной папки, что не требует дополнительного места на диске.
Этапы миграции
Шаг 0. Остановка экземпляра
Необходимо убедиться, что будут перенесены все пользовательские файлы и файлы шаблонов. Лучше всего остановить экземпляр, чтобы не пропустить новые загруженные файлы. Порядок остановки описан в нашем руководстве по созданию согласованной резервной копии.Шаг 1. Изменение структуры каталогов
Для загрузки файлов проектов в S3 необходимо изменить их структуру каталогов. В локальном хранилище filestore используется структура<project-id>_<file-id>, а в S3 — <project-id>/<file-id>.
Далее для хранения файлов в новой структуре каталогов используется /srv/overleaf-s3-migration. Замените /srv/overleaf-bind-mount каталогом хоста, смонтированным в /var/lib/overleaf. Выполняйте команды копирования на хосте с правами на чтение и запись этих каталогов; контейнер остаётся остановленным.
Для изменения структуры можно воспользоваться tar:
Шаг 2. Загрузка файлов
В зависимости от ваших предпочтений для загрузки файлов в S3-совместимое объектное хранилище можно использовать S3-клиент minio mc или aws cli. aws cli- Замените
overleaf-user-files,overleaf-template-files,overleaf-project-blobsиoverleaf-chunksименами ваших бакетов S3. - Также замените
/srv/overleaf-bind-mountлокальным путём bind mount для/var/lib/overleaf. По умолчанию это~/overleaf_dataв развёртывании на docker-compose.yml и<toolkit-checkout>/data/overleafпри использовании Toolkit.
Шаг 3. Запуск экземпляра с использованием S3
Добавьте в конфигурацию все переменные, относящиеся к S3, как описано в разделе Обзор переменных руководства по настройке S3. Сохраните bind mount каталога данных: в нём также могут храниться ключи шифрования Zotero или Mendeley, которые не переносятся в S3. Теперь можно запустить экземпляр и проверить результаты миграции:- в редакторе открывается предварительный просмотр бинарных файлов
- PDF с изображениями успешно компилируется
- новые файлы успешно загружаются
Откат
Миграцию можно аккуратно откатить, выполнив шаги в обратном порядке:- Остановите экземпляр
- Скопируйте файлы обратно, поменяв местами источник и назначение
- Запишите новые файлы обратно в локальный каталог с помощью обратного
transform - Перезапустите экземпляр со старой конфигурацией
Первый transform удаляет папку верхнего уровня. Второй transform преобразует структуру каталогов в плоскую. Шаблоны (wildcards) гарантируют, что извлекаются только файлы, а не их родительские папки (проектов).

