> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-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` vydání Community Edition zahrnuje [funkci celé historie projektu](https://www.overleaf.com/learn/latex/Using_the_History_feature) která je již dostupná v naší SaaS nabídce, [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 Celou historii projektu. Existují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 starší verzi, měli byste obnovit ze zálohy celého systému. Historie projektů vytvořených v `3.5.13` není kompatibilní se staršími verzemi Overleaf CE.
{% endhint %}

Nová Celá historie projektu přináší uživatelům několik vylepšení:

* Sleduje změny v binárních souborech, což starý systém nepodporuje.
* Je zde podpora pro pojmenované verze.
* Systém je obecně robustnější, je menší riziko ztráty dat.

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

### Migrace existují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 image sharelatex/sharelatex na 3.5.13.

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

{% step %}

#### Spustit instanci

V ideálním případě byste mě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 provést.
{% endstep %}

{% step %}

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

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

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "curl http://localhost:3000/status"
web sharelatex běží (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` vymaže částečně migrovaná data historie projektu v novém systému, což umožní opakovat migraci pro jednotlivé projekty, které v předchozích pokusech selhaly;

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

`--convert-large-docs-to-file` převádí dokumenty nad prahovou velikost 2 MB pro úpravy na neupravovatelný 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
Zahajuji migraci...
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
==================
Migrované projekty:  51
Neúspěšné projekty:  0
Hotovo.
```

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

```bash
Neúspěšné projekty:  0
Hotovo.
```

Můžete znovu otevřít přístup pro své uživatele (viz další krok). Pokud došlo k selháním, podívejte se prosím na níže uvedenou část řešení problémů. Stránku 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 **Administrátor** tlačítko a zvolte **Spravovat web**
2. Klikněte na tlačítko **Otevřít/Zavřít editor** karta
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

Abyste zabránili uživatelům v přihlašování, zatímco běží skript migrace 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 **Administrátor** tlačítko a zvolte **Spravovat web**
* Klikněte na tlačítko **Otevřít/Zavřít editor** karta
* Klikněte na tlačítko **Zavřít editor** tlačítko
* Klikněte na tlačítko **Odpojit všechny uživatele** tlačítko

Jakmile bude toto provedeno, budou se případní přihlášení uživatelé přesměrováni na stránku údržby a noví uživatelé navštěvující přihlašovací stránku uvidí stránku údržby a **nebude** budou se moci přihlásit.

#### Online migrace

Je možné spouštět migrační skripty i při běžícím aplikačním serveru. Je třeba vzít v úvahu několik aspektů:

* 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` hodnoty.
* Skript můžete kdykoli zastavit. Když jej spustíte znovu, migrace bude pokračovat tam, kde jste skončili. To je užitečné v případě, že migraci raději spouštíte v méně vytížených hodinách (např. v noci).

Naším doporučením je web zavřít a spustit migraci offline v době údržby, pokud je počet vašich projektů menší než 1000 (`db.projects.count()`). Pokud je počet projektů velký, můžete skript spustit a sledovat jeho průběh, poté se na základě vaší konkrétní situace rozhodnout, zda ho necháte běžet online nebo offline.

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

Skript pro vyčištění starých dat historie byl přidán v Server Pro `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 po migraci všech projektů. Lze jej také použít k uvolnění části místa během online migrace.

{% hint style="info" %}
V Server Pro před verzí 3.5.13 skript smaže obsah `docHistory` a `docHistoryIndex` kolekcí. MongoDB po smazání dokumentů neuvolňuje místo na disku, místo toho jej znovu použije pro budoucí dokumenty ve stejné kolekci. Po migraci historie do těchto kolekcí už nic zapisovat nebude, takže místo na disku zůstane nevyužité.

Pokud chcete, aby bylo místo na disku znovu dostupné, můžete upgradovat na Server Pro 3.5.13 (při použití vydání 3.x) nebo Server Pro 4.2.5 (při použití vydání 4.x) a znovu spustit skript pro vyčištění.

Skript pro vyčištění je součástí Server Pro v nejnovějších opravách vydání `3.5.x` a nejnovějších `4.x.x` odstraňují kolekce jako poslední krok.

Skript pro vyčištění lze spustit znovu bez rizika.
{% endhint %}

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

Zde přidáme rady k řešení problémů. Upozorňujeme, že ačkoliv obvykle poskytujeme podporu pouze zákazníkům Server Pro, vzhledem k povaze této migrace uděláme maximum i pro podporu zákazníků CE, kteří narazí na problémy specifické pro migraci celé historie projektu.

Pokud skript migrace celé 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í podrobnosti 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í celé historie projektu

* Typ instance: CE nebo Server Pro (smažte podle potřeby)
* Typ instalace: Overleaf toolkit nebo `docker-compose.yml` nebo jiné (smažte podle potřeby)
* 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řipojení log souborů pro `history-v1`, `project-history` a `track-changes` služby k e-mailu. Najdete je na `/var/log/sharelatex` uvnitř `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 veškeré citlivé informace.

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

Migrace může selhat u projektů, které mají chybně vytvořený strom souborů (například když 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 a spusťte příkaz jednou pro každou chybnou 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 %}

#### Downgradování 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://ayakaleaf-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.
