> 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/on-premises-cs/podpora/support-guides/full-project-history-migration.md).

# (Migrace v3.5.13) Migrace úplné historie projektu

## Migrace celé historie projektu

Pole `3.5.x` verze Community Edition zahrnuje [funkci Plná historie projektu](https://www.overleaf.com/learn/latex/Using_the_History_feature) která je již k dispozici v naší nabídce SaaS, [overleaf.com](http://overleaf.com/)

Po upgradu vaší instance na Overleaf CE `3.5.13`, budou všechny nové projekty ve výchozím nastavení používat Plnou historii projektu. Stávající projekty budou nadále používat starý systém historie, dokud nebudou migrovány.

{% hint style="info" %}
Pokud upgradujete na `3.5.13` a rozhodnete se downgradovat na dřívější verzi, měli byste obnovit z úplné zálohy systému. Historie projektů vytvořených v `3.5.13` není kompatibilní se staršími verzemi Overleaf CE.
{% endhint %}

Nová Plná historie projektu přináší pro uživatele několik vylepšení:

* Sleduje změny v binárních souborech, což starý systém nepodporuje.
* Je podporováno verzování s popisky.
* Systém je obecně robustnější, je menší pravděpodobnost ztráty dat.

Podívejte se na [dokumentaci k Plné historii projektu](https://www.overleaf.com/learn/latex/Using_the_History_feature) pro více informací o plné historii projektu.

### Migrace stávajících projektů

{% stepper %}
{% step %}

#### Vytvořte zálohu

Vytvořte úplnou [zálohu](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) vaší instance s konzistentním snímkem **mongo**, **redis** a **sharelatex** adresářů.
{% endstep %}

{% step %}

#### Aktualizujte

Aktualizujte verzi obrazu sharelatex/sharelatex na 3.5.13.

Toolkit: Použijte `$ bin/upgrade` skript pro upgrade toolkitu na nejnovější verzi a upravte **config/version** na 3.5.13.
{% endstep %}

{% step %}

#### Spusťte instanci

V ideálním případě byste chtěli zabránit uživatelům v přístupu k vaší instanci během migrace, abyste předešli ztrátě dat v případě, že budete muset obnovit zálohu. Viz [Offline migrace](https://github.com/overleaf/overleaf/wiki/Full-Project-History-Migration/#offline-migration) pro více informací, jak to udělat.
{% endstep %}

{% step %}

#### Počkejte, až budou všechny služby spuštěny a v chodu

Počkejte, až budou všechny služby spuštěny a v chodu (viz příkaz níže)

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "curl http://localhost:3000/status"
web sharelatex je živý (api)%
```

{% endcode %}
{% endstep %}

{% step %}

#### Spusťte migrační skript

{% code overflow="wrap" %}

```bash
# Uživatelé 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"

# Uživatelé starého 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` vyčistí částečně migrovaná data historie projektu v novém systému, což umožňuje opakovat migraci pro jednotlivé projekty, které v předchozích pokusech selhaly;

`--fix-invalid-characters` nahrazuje neprintovatelné znaky, které nový systém historie nepodporuje;

`--convert-large-docs-to-file` převádí dokumenty, které přesahují limit editovatelné velikosti 2 MB, na needitovatelný soubor)

Výstup by měl vypadat takto:

```bash
Migrované projekty  :  1
Celkem projektů     :  51
Zbývající projekty :  51
Celkový počet záznamů historie k migraci: 98
Spouští se migrace...
Migruje se projekt: 63d29b5772dd80015a81bffe
výsledek migrace { upgraded: true, historyType: 'NoneWithoutConversion' }
Migruje se projekt: 63d29c2e72dd80015a81c0a2
výsledek migrace { upgraded: true, historyType: 'NoneWithoutConversion' }

// …

Migrace dokončena
==================
Projekty migrovány:  51
Projekty selhaly:  0
Hotovo.
```

Pokud je migrace úspěšná, získáte návratový kód `0`, a poslední řádky budou indikovat, že nedošlo k žádným selháním:

```bash
Projekty selhaly:  0
Hotovo.
```

Můžete znovu otevřít přístup pro své uživatele (viz další krok). Pokud dojde k selháním, podívejte se prosím na sekci řešení problémů níže. Web můžete znovu otevřít i tehdy, pokud problémy nejsou okamžitě vyřešeny, a nemigrované projekty zůstanou ve starém systému historie.
{% endstep %}

{% step %}

#### Znovu otevřít web

Pokud jste se rozhodli provést offline migraci, budete muset web znovu otevřít. Pokud jste stále přihlášeni, budete muset:

1. Klikněte na tlačítko **Správce** tlačítko a zvolte **Spravovat web**
2. Klikněte na tlačítko **Otevřít/Zavřít editor** kartu
3. Klikněte na tlačítko **Znovu otevřít editor** tlačítko

Pokud jste zavřeli prohlížeč, budete muset web restartovat pomocí `$ bin/up`.
{% endstep %}
{% endstepper %}

#### Offline migrace

Aby se uživatelé nemohli přihlašovat, zatímco běží migrační skript historie, postupujte prosím podle těchto kroků:

* Přihlaste se do své instance Overleaf pomocí administrátorského účtu
* Klikněte na tlačítko **Správce** tlačítko a zvolte **Spravovat web**
* Klikněte na tlačítko **Otevřít/Zavřít editor** kartu
* Klikněte na tlačítko **Zavřít editor** tlačítko
* Klikněte na tlačítko **Odpojit všechny uživatele** tlačítko

Jakmile to bude hotové, pokud budou nějací uživatelé přihlášeni, budou přesměrováni na stránku údržby a všichni noví uživatelé navštěvující přihlašovací stránku uvidí stránku údržby a **nebudou** se moci přihlásit.

#### Online migrace

Migrační skripty je možné spustit, i když aplikace stále běží. Je třeba vzít v úvahu několik věcí:

* Migrační proces je náročný na CPU, během běhu skriptu byste měli sledovat využití zdrojů.
* Při vysoké hodnotě `--concurrency` může event loop v některých službách (`track-changes` zejména v `--concurrency=1` hodnota.
* Skript můžete kdykoli zastavit. Jeho opětovné spuštění pokračuje v migraci od místa, kde jste skončili. To je užitečné, pokud raději spouštíte migraci v méně vytížených hodinách (např. v noci).

Doporučujeme web zavřít a spustit migraci offline v údržbovém okně, když je počet vašich projektů menší než 1000 projektů (`db.projects.count()`). Pokud je počet projektů velký, můžete skript spustit a sledovat jeho průběh, pak se podle svého konkrétního případu rozhodnout, zda pokračovat online nebo offline.

#### Vyčištění starých dat historie

Ve Server Pro byl přidán skript pro vyčištění starých dat historie `3.5.6`, `4.0.6` a `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 %}

Skript lze spustit poté, co byly migrovány všechny projekty. Může se také použít k uvolnění části místa při provádění online migrace.

{% hint style="info" %}
Ve Server Pro před verzí 3.5.13 skript smaže obsah `docHistory` a `docHistoryIndex` kolekcí. MongoDB neuvolní diskový prostor poté, co smažete dokumenty; místo toho jej znovu použije pro budoucí dokumenty ve stejné kolekci. Po migraci historie už do těchto kolekcí nic zapisovat nebude, takže diskový prostor zůstane nevyužitý.

Pokud chcete diskový prostor znovu zpřístupnit, můžete upgradovat na Server Pro 3.5.13 (při stále používané řadě 3.x) nebo Server Pro 4.2.5 (při používané řadě 4.x) a znovu spustit skript pro vyčištění.

Skript pro vyčištění, jak je součástí Server Pro v nejnovějších patch vydáních `3.5.x` a nejnovější `4.x.x` na konci odstraňují kolekce.

Skript pro vyčištění je bezpečné spustit znovu.
{% endhint %}

### Řešení problémů

Sem přidáme rady k řešení problémů. Upozorňujeme, že ačkoli obvykle poskytujeme podporu pouze zákazníkům Server Pro, vzhledem k povaze této migrace se budeme snažit co nejlépe podpořit i zákazníky CE, kteří narazí na problémy specifické pro migraci na plnou historii projektu.

Pokud skript pro migraci plné historie projektu selže (tj. skončí s chybou nebo vypíše nenulový počet neúspěšných projektů), pošlete prosím následující údaje našemu týmu podpory e-mailem [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), s uvedením:

Předmět: Problém s migrací plné historie projektu

* Typ instance: CE nebo Server Pro (v případě potřeby smažte)
* Typ instalace: Overleaf toolkit nebo `docker-compose.yml` nebo jiné (v případě potřeby smažte)
* Verze: 3.5.x (toolkit: `$ cat config/version`)
* Výstup migračního skriptu (který by měl být umístěn v kontejneru v `/overleaf/services/web`)
* Migrované projekty: (podle výstupu migračního skriptu)
* Celkem projektů: (podle výstupu migračního skriptu)
* Zbývající projekty: (podle výstupu migračního skriptu)
* Doba trvání migrace:
* `bin/doctor` výstup (při použití toolkitu)
* Verze toolkitu: `$ git rev-parse HEAD` (při použití toolkitu)

Zvažte přiložení log souborů pro `history-v1`, `project-history` a `track-changes` služby k e-mailu. Najdete je na `/var/log/sharelatex` v `sharelatex` kontejneru a exportujte je takto:

```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
```

Před přiložením prosím z log souborů odstraňte všechny citlivé informace.

#### Hledání poškozených stromů souborů

Migrace může selhat u projektů, které mají chybně vytvořený strom souborů (například pokud jsou názvy souborů prázdné). Seznam těchto problémů můžete najít pomocí `find_malformed_filetrees` skriptu, který kontroluje všechny projekty v databázi:

{% code overflow="wrap" %}

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

{% endcode %}

Chcete-li opravit neplatné cesty, použijte `fix_malformed_filetree` skript, přičemž spusťte příkaz jednou pro každou špatnou cestu:

{% 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 %}

#### Downgrade projektů z plné historie projektu na starý systém historie

Pokud existuje projekt, který byl migrován na plnou historii projektu, ale chcete se vrátit ke starému systému historie, použijte `downgrade_project` skript následovně:

{% 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/on-premises-cs/podpora/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.
