Skip to main content

Migração para S3

Estas instruções se aplicam à v5.x e posteriores. Se você estiver seguindo este guia para uma versão anterior, use sharelatex em vez de overleaf nos nomes de caminhos e o prefixo SHARELATEX_ em vez de OVERLEAF_ nas variáveis de ambiente. Para a v6 e posteriores, ignore os comandos legados de user_files.
Adoraríamos ouvir você! Se quiser compartilhar conosco quantos arquivos migrou, o volume total e quanto tempo a migração levou, envie um e-mail para ayaka-notes@outlook.com .
Este guia conduzirá você pela migração do armazenamento em disco para um armazenamento de objetos compatível com S3. Ele faz referência a seções do documento introdutório sobre a configuração do S3.

Requisitos

  • Um armazenamento de objetos compatível com S3 com o qual se comunicar; veja #s3-setup para as opções
  • Espaço livre em disco para migrar os dados existentes, aproximadamente o tamanho atual em disco
  • Uma janela de manutenção para realizar a migração propriamente dita
  • Um backup completo, incluindo a configuração, para permitir a restauração a partir dele

Estimar o espaço em disco necessário para a migração

Podemos usar du para calcular o uso atual do disco:
Caso não haja espaço em disco suficiente no servidor atual, tente anexar outro disco ao servidor.
Os diretórios de histórico já possuem o layout correto. Você pode enviá-los diretamente da pasta de origem montada via bind mount, o que não exige espaço em disco adicional.

Etapas da migração

Etapa 0: desligar a instância

Precisamos garantir que todos os arquivos de usuários/modelos sejam migrados. O melhor é desligar a instância para não perder arquivos enviados recentemente. Consulte nosso guia sobre como realizar um backup consistente para o procedimento de desligamento.

Etapa 1: reescrever o layout de diretórios

Precisamos reescrever o layout de diretórios dos arquivos de projeto para enviá-los ao S3. O layout de diretórios do armazenamento local no filestore é <project-id>_<file-id>, e o layout de diretórios no S3 é <project-id>/<file-id>. A seguir, /srv/overleaf-s3-migration é usado para armazenar os arquivos no novo layout de diretórios. Substitua /srv/overleaf-bind-mount pelo diretório do host montado em /var/lib/overleaf. Execute os comandos de cópia no host, com permissão para ler e gravar nesses diretórios; o contêiner permanece parado. Podemos usar o tar para reescrever o layout:

Etapa 2: enviar os arquivos

Conforme sua preferência, você pode usar o cliente S3 minio mc ou o aws cli para enviar os arquivos ao seu armazenamento de objetos compatível com S3. aws cli
  • Aqui você deve substituir overleaf-user-files, overleaf-template-files, overleaf-project-blobs e overleaf-chunks pelos nomes dos seus buckets S3.
  • Substitua também /srv/overleaf-bind-mount pelo caminho local do bind mount de /var/lib/overleaf. Por padrão, é ~/overleaf_data em uma implantação com docker-compose.yml e <toolkit-checkout>/data/overleaf ao usar o Toolkit.
minio mc Aqui usamos o alias de servidor “s3”; você pode ter escolhido outro nome.

Etapa 3: iniciar a instância apontando para o S3

Adicione todas as variáveis relacionadas ao S3 à sua configuração, conforme detalhado na seção Visão geral das variáveis do guia de configuração do S3. Mantenha o bind mount do diretório de dados: ele também pode conter chaves de criptografia do Zotero ou do Mendeley que não são migradas para o S3. Agora você pode iniciar a instância e validar a migração:
  • é possível pré-visualizar arquivos binários no editor
  • é possível compilar um PDF com imagens
  • é possível enviar novos arquivos

Reverter a migração

Você pode reverter a migração de forma segura invertendo as etapas:
  1. Desligue a instância
  2. Espelhe os arquivos de volta invertendo a ordem de origem/destino
  3. Grave os novos arquivos de volta no diretório local usando um transform inverso
  4. Reinicie a instância com a configuração antiga
O primeiro transform remove a pasta de nível superior. O segundo transform altera o layout de diretórios para um layout plano. Os curingas (wildcards) garantem que apenas arquivos sejam extraídos, e não suas pastas pai (de projeto).
Última modificação em 5 de outubro de 2026