> 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/pt/suporte/support-guides/full-project-history-migration.md).

# (Migração v3.5.13) Migração do histórico completo do projeto

## Migração completa do histórico do projeto

O `3.5.x` a versão da Community Edition inclui o [Funcionalidade de Histórico Completo do Projeto](https://www.overleaf.com/learn/latex/Using_the_History_feature) que já está disponível na nossa oferta SaaS, [overleaf.com](http://overleaf.com/)

Depois de atualizar a sua instância para Overleaf CE `3.5.13`, todos os novos projetos usarão o Histórico Completo do Projeto por defeito. Os projetos existentes continuarão a usar o sistema de Histórico legado, até serem migrados.

{% hint style="info" %}
Se atualizar para `3.5.13` e decidir fazer downgrade para uma versão anterior, então deverá restaurar a partir de uma cópia de segurança completa do sistema. O histórico dos projetos criados em `3.5.13` não é compatível com versões anteriores do Overleaf CE.
{% endhint %}

O novo Histórico Completo do Projeto traz várias melhorias para os utilizadores:

* Regista alterações em ficheiros binários, o que não é suportado no sistema legado.
* Há suporte para versões com etiquetas.
* O sistema é, de forma geral, mais robusto, havendo menor probabilidade de perda de dados.

Consulte [documentação do Histórico Completo do Projeto](https://www.overleaf.com/learn/latex/Using_the_History_feature) para obter mais informações sobre o histórico completo do projeto.

### Migração de projetos existentes

{% stepper %}
{% step %}

#### Criar uma cópia de segurança

Criar uma [cópia de segurança](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) da sua instância com uma captura consistente dos **mongo**, **redis** e **sharelatex** diretórios.
{% endstep %}

{% step %}

#### Atualize

Atualize a versão da imagem sharelatex/sharelatex para 3.5.13.

Toolkit: Use o `$ bin/upgrade` script para atualizar o toolkit para a versão mais recente e edite **config/version** para 3.5.13.
{% endstep %}

{% step %}

#### Iniciar a instância

Idealmente, deverá impedir os utilizadores de aceder à sua instância enquanto a migração estiver a decorrer, para evitar perda de dados caso precise de restaurar a sua cópia de segurança. Consulte [migração offline](https://github.com/overleaf/overleaf/wiki/Full-Project-History-Migration/#offline-migration) para obter mais informações sobre como fazer isto.
{% endstep %}

{% step %}

#### Aguarde até que todos os serviços estejam a funcionar

Aguarde até que todos os serviços estejam a funcionar (ver comando abaixo)

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "curl http://localhost:3000/status"
web sharelatex está ativo (api)%
```

{% endcode %}
{% endstep %}

{% step %}

#### Execute o script de migração

{% code overflow="wrap" %}

```bash
# Utilizadores do Overleaf Toolkit:
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; VERBOSE_LOGGING=true node scripts/history/migrate_history.js --force-clean --fix-invalid-characters --convert-large-docs-to-file"

# utilizadores do legacy docker-compose.yml:
$ docker exec sharelatex /bin/bash -c "cd /overleaf/services/web; VERBOSE_LOGGING=true node scripts/history/migrate_history.js --force-clean --fix-invalid-characters --convert-large-docs-to-file"
```

{% endcode %}

`--force-clean` limpa dados do histórico do projeto parcialmente migrados no novo sistema, isto permite repetir a migração de projetos individuais que falharam em tentativas anteriores;

`--fix-invalid-characters` substitui caracteres não imprimíveis que não são suportados pelo novo sistema de histórico;

`--convert-large-docs-to-file` converte documentos que estão acima do limite de 2 MB de tamanho editável para um ficheiro não editável)

A saída deverá ser semelhante a isto:

```bash
Projetos migrados  :  1
Projetos totais     :  51
Projetos restantes :  51
Total de registos de histórico a migrar: 98
A iniciar migração...
A migrar projeto: 63d29b5772dd80015a81bffe
resultado da migração { upgraded: true, historyType: 'NoneWithoutConversion' }
A migrar projeto: 63d29c2e72dd80015a81c0a2
resultado da migração { upgraded: true, historyType: 'NoneWithoutConversion' }

// …

Migração concluída
==================
Projetos migrados:  51
Projetos com falhas:  0
Concluído.
```

Se a migração for bem-sucedida, obterá um código de saída de `0`, e as últimas linhas indicarão que não houve falhas:

```bash
Projetos com falhas:  0
Concluído.
```

Pode reabrir o acesso para os seus utilizadores (ver passo seguinte). Se houver falhas, consulte a secção de resolução de problemas abaixo. Ainda pode reabrir o site se os problemas não forem corrigidos imediatamente, e os projetos não migrados permanecerão no sistema de histórico legado.
{% endstep %}

{% step %}

#### Reabrir o site

Se tiver optado por realizar uma migração offline, então terá de reabrir o site. Se ainda tiver sessão iniciada, terá de:

1. Clique no **Administração** botão e escolha **Gerir site**
2. Clique no **Abrir/Fechar editor** separador
3. Clique no **Reabrir editor** botão

Se tiver fechado o seu navegador, então terá de reiniciar o site com `$ bin/up`.
{% endstep %}
{% endstepper %}

#### migração offline

Para impedir que os utilizadores consigam iniciar sessão enquanto o script de migração do histórico está a ser executado, siga estes passos:

* Inicie sessão na sua instância do Overleaf com uma conta de administrador
* Clique no **Administração** botão e escolha **Gerir site**
* Clique no **Abrir/Fechar editor** separador
* Clique no **Fechar editor** botão
* Clique no **Desconectar todos os utilizadores** botão

Depois de isto ser feito, se houver utilizadores com sessão iniciada, estes serão redirecionados para a página de manutenção, e quaisquer novos utilizadores que visitem a página de início de sessão verão a página de manutenção e **não** conseguirão iniciar sessão.

#### Migração online

É possível executar os scripts de migração enquanto a aplicação ainda está em execução. Há algumas considerações a ter em conta:

* O processo de migração é intensivo em CPU; deve monitorizar a utilização de recursos enquanto o script estiver a ser executado.
* Com um `--concurrency` valor elevado, o loop de eventos em alguns serviços (`track-changes` em particular) poderá sofrer algum bloqueio, o que levará a uma experiência de utilizador degradada. Recomendamos começar com o valor `--concurrency=1` .
* Pode parar o script em qualquer momento. Se o iniciar novamente, a migração retomará de onde foi interrompida. Isto é útil caso prefira executar a migração em horas de menor movimento (por exemplo, à noite).

A nossa recomendação é fechar o site e executar a migração offline numa janela de manutenção quando a contagem dos seus projetos for inferior a 1000 projetos (`db.projects.count()`). Se o número de projetos for elevado, pode executar o script e monitorizar o seu progresso, depois decidir se continua a executá-lo online ou offline com base no seu caso específico.

#### Limpar dados do histórico legado

Foi adicionado no Server Pro um script para limpar dados do histórico legado `3.5.6`, `4.0.6` e `4.1.0`.

{% code overflow="wrap" %}

```bash
bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/history/clean_sl_history_data.js"
```

{% endcode %}

O script pode ser executado depois de todos os projetos terem sido migrados. Também pode ser usado para libertar algum espaço durante uma migração online.

{% hint style="info" %}
No Server Pro antes da versão 3.5.13, o script elimina o conteúdo de `docHistory` e `docHistoryIndex` coleções. O MongoDB não liberta espaço em disco depois de eliminar documentos; em vez disso, reutilizará esse espaço para futuros documentos na mesma coleção. Nada voltará a escrever nestas coleções após a migração do histórico, pelo que o espaço em disco permanecerá inutilizado.

Se quiser tornar o espaço em disco novamente disponível, pode atualizar para Server Pro 3.5.13 (quando ainda estiver a usar a versão 3.x) ou Server Pro 4.2.5 (quando estiver a usar a versão 4.x) e executar novamente o script de limpeza.

O script de limpeza, tal como incluído no Server Pro, nas mais recentes versões de correção de `3.5.x` e nas mais recentes `4.x.x` está a eliminar as coleções como passo final.

É seguro executar novamente o script de limpeza.
{% endhint %}

### Resolução de problemas

Iremos adicionar aqui conselhos para resolução de problemas. Note que, embora normalmente ofereçamos suporte apenas a clientes Server Pro, dada a natureza desta migração, também faremos o nosso melhor para apoiar clientes CE que tenham problemas específicos com a migração do histórico completo do projeto.

Se o script de migração do histórico completo do projeto falhar (ou seja, terminar com um erro ou imprimir um número diferente de zero de projetos com falha), envie os seguintes detalhes à nossa equipa de suporte por email [support+historymigration@overleaf.com](mailto:support+historymigration@overleaf.com?subject=Full%20project%20history%20migration%20problem\&body=Instance%20Type%3A%20CE%20or%20Server%20Pro%20%28delete%20as%20appropriate%29%0A%0AInstallation%20Type%3A%20Overleaf%20toolkit%20or%20docker-compose.yml%20or%20other%20%28delete%20as%20appropriate%29%0A%0AScript%20output%3A%0A%0Abin%2Fdoctor%20output%20%28if%20using%20toolkit%29%3A%0A), indicando:

Assunto: Problema na migração do histórico completo do projeto

* Tipo de instância: CE ou Server Pro (apague conforme aplicável)
* Tipo de instalação: Overleaf toolkit ou `docker-compose.yml` ou outro (apague conforme aplicável)
* Versão: 3.5.x (toolkit: `$ cat config/version`)
* Saída do script de migração (que deverá estar localizada no contentor em `/overleaf/services/web`)
* Projetos migrados: (conforme a saída do script de migração)
* Projetos totais: (conforme a saída do script de migração)
* Projetos restantes: (conforme a saída do script de migração)
* Duração da migração:
* `bin/doctor` saída (ao usar o toolkit)
* Versão do toolkit: `$ git rev-parse HEAD` (ao usar o Toolkit)

Considere anexar os ficheiros de registo dos `history-v1`, `project-history` e `track-changes` serviços ao email. Pode encontrá-los em `/var/log/sharelatex` dentro do `sharelatex` contentor e exportá-los assim:

```bash
$ docker cp sharelatex:/var/log/sharelatex/history-v1.log history-v1.log
$ docker cp sharelatex:/var/log/sharelatex/project-history.log project-history.log
$ docker cp sharelatex:/var/log/sharelatex/track-changes.log track-changes.log
```

Por favor, remova qualquer informação sensível dos ficheiros de registo antes de os anexar.

#### Encontrar árvores de ficheiros corrompidas

A migração pode falhar em projetos que tenham uma árvore de ficheiros malformada (por exemplo, quando os nomes dos ficheiros estão vazios). Pode encontrar uma lista destes problemas usando o `find_malformed_filetrees` script que verifica todos os projetos na base de dados:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/find_malformed_filetrees.js"
BAD PATH: 123456789012345678901234 rootFolder.0.1.2.3
BAD PATH: 123456789012345678901234 rootFolder.0.4.5.6
...
```

{% endcode %}

Para corrigir os caminhos inválidos, use o `fix_malformed_filetree` script, executando o comando uma vez para cada caminho incorreto:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/fix_malformed_filetree.js 123456789012345678901234 rootFolder.0.1.2.3"
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/fix_malformed_filetree.js 123456789012345678901234 rootFolder.0.4.5.6"
...
```

{% endcode %}

#### Fazer downgrade de projetos do histórico completo do projeto para o histórico legado

Se houver um projeto que tenha sido migrado para o histórico completo do projeto, mas quiser voltar ao histórico legado, use o `downgrade_project` script da seguinte forma:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; PROJECT_ID=YOUR
```

{% endcode %}


---

# 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/pt/suporte/support-guides/full-project-history-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.
