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

# (Migracja v3.5.13) Migracja pełnej historii projektu

## Migracja pełnej historii projektu

Pole `3.5.x` wydanie Community Edition zawiera [funkcję Pełnej Historii Projektu](https://www.overleaf.com/learn/latex/Using_the_History_feature) która jest już dostępna w naszej ofercie SaaS, [overleaf.com](http://overleaf.com/)

Po aktualizacji instancji do Overleaf CE `3.5.13`, wszystkie nowe projekty będą domyślnie korzystać z Pełnej Historii Projektu. Istniejące projekty będą nadal korzystać ze starszego systemu historii, dopóki nie zostaną zmigrowane.

{% hint style="info" %}
Jeśli zaktualizujesz do `3.5.13` i zdecydujesz się obniżyć wersję do wcześniejszej, powinieneś przywrócić dane z pełnej kopii zapasowej systemu. Historia projektów utworzonych w `3.5.13` nie jest zgodna z wcześniejszymi wersjami Overleaf CE.
{% endhint %}

Nowa Pełna Historia Projektu przynosi użytkownikom kilka ulepszeń:

* Śledzi zmiany w plikach binarnych, czego nie obsługuje starszy system.
* Dostępna jest obsługa wersji z etykietami.
* System jest ogólnie bardziej niezawodny, istnieje mniejsze ryzyko utraty danych.

Sprawdź [dokumentację Pełnej Historii Projektu](https://www.overleaf.com/learn/latex/Using_the_History_feature) aby uzyskać więcej informacji o pełnej historii projektu.

### Migracja istniejących projektów

{% stepper %}
{% step %}

#### Utwórz kopię zapasową

Utwórz pełną [kopię zapasową](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) instancji z spójnym zrzutem **mongo**, **redis** i **sharelatex** katalogów.
{% endstep %}

{% step %}

#### Zaktualizuj

Zaktualizuj wersję obrazu sharelatex/sharelatex do 3.5.13.

Toolkit: Użyj `$ bin/upgrade` skryptu do aktualizacji toolkit do najnowszej wersji i edytuj **config/version** na 3.5.13.
{% endstep %}

{% step %}

#### Uruchom instancję

Najlepiej byłoby uniemożliwić użytkownikom dostęp do instancji podczas trwania migracji, aby uniknąć utraty danych w przypadku konieczności przywrócenia kopii zapasowej. Zobacz [Migracja offline](https://github.com/overleaf/overleaf/wiki/Full-Project-History-Migration/#offline-migration) aby uzyskać więcej informacji, jak to zrobić.
{% endstep %}

{% step %}

#### Poczekaj, aż wszystkie usługi będą działać

Poczekaj, aż wszystkie usługi będą działać (zobacz polecenie poniżej)

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "curl http://localhost:3000/status"
web sharelatex działa (api)%
```

{% endcode %}
{% endstep %}

{% step %}

#### Uruchom skrypt migracji

{% code overflow="wrap" %}

```bash
# Użytkownicy 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żytkownicy starszego 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` czyści częściowo zmigrowane dane historii projektu w nowym systemie; umożliwia to ponowienie migracji dla poszczególnych projektów, które nie powiodły się w poprzednich próbach;

`--fix-invalid-characters` zastępuje niedrukowalne znaki, które nie są obsługiwane przez nowy system historii;

`--convert-large-docs-to-file` konwertuje dokumenty większe niż próg edytowalnego rozmiaru 2 MB do nieedytowalnego pliku)

Wynik powinien wyglądać tak:

```bash
Zmigrowane projekty  :  1
Łącznie projektów     :  51
Pozostałe projekty    :  51
Łączna liczba rekordów historii do migracji: 98
Rozpoczynanie migracji...
Migrowanie projektu: 63d29b5772dd80015a81bffe
wynik migracji { upgraded: true, historyType: 'NoneWithoutConversion' }
Migrowanie projektu: 63d29c2e72dd80015a81c0a2
wynik migracji { upgraded: true, historyType: 'NoneWithoutConversion' }

// …

Migracja zakończona
==================
Projekty zmigrowane:  51
Projekty nieudane:  0
Gotowe.
```

Jeśli migracja zakończy się sukcesem, otrzymasz kod wyjścia `0`, a ostatnie wiersze wskażą brak niepowodzeń:

```bash
Projekty nieudane:  0
Gotowe.
```

Możesz ponownie otworzyć dostęp dla użytkowników (zobacz następny krok). Jeśli wystąpią niepowodzenia, zapoznaj się z sekcją rozwiązywania problemów poniżej. Możesz nadal ponownie otworzyć witrynę, jeśli problemy nie zostaną natychmiast naprawione, a projekty, których nie zmigrowano, pozostaną w starszym systemie historii.
{% endstep %}

{% step %}

#### Ponownie otwórz witrynę

Jeśli zdecydowałeś się przeprowadzić migrację offline, będziesz musiał ponownie otworzyć witrynę. Jeśli nadal jesteś zalogowany, musisz:

1. Kliknij **Admin** przycisk i wybierz **Zarządzaj witryną**
2. Kliknij **Otwórz/Zamknij edytor** karta
3. Kliknij **Ponownie otwórz edytor** przycisk

Jeśli zamknąłeś przeglądarkę, będziesz musiał ponownie uruchomić witrynę za pomocą `$ bin/up`.
{% endstep %}
{% endstepper %}

#### Migracja offline

Aby uniemożliwić użytkownikom logowanie się podczas działania skryptu migracji historii, wykonaj następujące kroki:

* Zaloguj się do swojej instancji Overleaf przy użyciu konta administratora
* Kliknij **Admin** przycisk i wybierz **Zarządzaj witryną**
* Kliknij **Otwórz/Zamknij edytor** karta
* Kliknij **Zamknij edytor** przycisk
* Kliknij **Rozłącz wszystkich użytkowników** przycisk

Gdy to zostanie wykonane, jeśli jacyś użytkownicy są zalogowani, zostaną przekierowani na stronę konserwacji, a wszyscy nowi użytkownicy odwiedzający stronę logowania zobaczą stronę konserwacji i **nie będzie** będą mogli się zalogować.

#### Migracja online

Możliwe jest uruchomienie skryptów migracji, gdy aplikacja nadal działa. Należy wziąć pod uwagę kilka kwestii:

* Proces migracji jest intensywnie obciążający procesor, należy monitorować użycie zasobów podczas działania skryptu.
* Przy wysokiej `--concurrency` wartości, pętla zdarzeń w niektórych usługach (`track-changes` w szczególności) może doświadczać pewnych blokad, co prowadziłoby do pogorszenia doświadczenia UX. Zalecamy rozpoczęcie od domyślnej `--concurrency=1` wartości.
* Możesz zatrzymać skrypt w dowolnym momencie. Uruchomienie go ponownie wznowi migrację od miejsca, w którym została przerwana. Jest to przydatne, jeśli wolisz uruchomić migrację w mniej obciążonych godzinach (np. w nocy).

Naszą rekomendacją jest zamknięcie witryny i uruchomienie migracji offline w oknie konserwacyjnym, gdy liczba projektów jest mniejsza niż 1000 (`db.projects.count()`). Jeśli liczba projektów jest duża, możesz uruchomić skrypt i monitorować jego postęp, a następnie zdecydować, czy kontynuować jego działanie online, czy offline, w zależności od konkretnego przypadku.

#### Czyszczenie starszych danych historii

Skrypt do czyszczenia starszych danych historii został dodany w Server Pro `3.5.6`, `4.0.6` i `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 %}

Skrypt można uruchomić po zmigrowaniu wszystkich projektów. Może być również użyty do zwolnienia części miejsca podczas przeprowadzania migracji online.

{% hint style="info" %}
W Server Pro przed wersją 3.5.13 skrypt usuwa zawartość `docHistory` i `docHistoryIndex` kolekcji. MongoDB nie zwalnia miejsca na dysku po usunięciu dokumentów, zamiast tego ponownie wykorzysta to miejsce dla przyszłych dokumentów w tej samej kolekcji. Po migracji historii nic więcej nie będzie zapisywane do tych kolekcji, więc miejsce na dysku pozostanie niewykorzystane.

Jeśli chcesz ponownie udostępnić miejsce na dysku, możesz zaktualizować do Server Pro 3.5.13 (gdy nadal używasz wydania 3.x) lub Server Pro 4.2.5 (gdy używasz wydania 4.x) i ponownie uruchomić skrypt czyszczenia.

Skrypt czyszczenia, zawarty w Server Pro w najnowszych wydaniach poprawkowych `3.5.x` i najnowszych `4.x.x` usuwa kolekcje jako ostatni krok.

Bezpiecznie jest ponownie uruchomić skrypt czyszczenia.
{% endhint %}

### Rozwiązywanie problemów

Dodamy tutaj wskazówki dotyczące rozwiązywania problemów. Należy pamiętać, że zwykle oferujemy wsparcie tylko klientom Server Pro, jednak ze względu na charakter tej migracji dołożymy również wszelkich starań, aby wspierać klientów CE, którzy napotkają problemy specyficzne dla migracji do pełnej historii projektu.

Jeśli skrypt migracji pełnej historii projektu zakończy się niepowodzeniem (tj. zakończy się błędem lub wypisze liczbę niepowodzeń większą od zera), wyślij proszę następujące szczegóły do naszego zespołu wsparcia 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), zawierając:

Temat: Problem z migracją pełnej historii projektu

* Typ instancji: CE lub Server Pro (usuń odpowiednie)
* Typ instalacji: Overleaf toolkit lub `docker-compose.yml` lub inne (usuń odpowiednie)
* Wersja: 3.5.x (toolkit: `$ cat config/version`)
* Wynik skryptu migracji (który powinien znajdować się w kontenerze pod `/overleaf/services/web`)
* Zmigrowane projekty: (zgodnie z wynikiem skryptu migracji)
* Łączna liczba projektów: (zgodnie z wynikiem skryptu migracji)
* Pozostałe projekty: (zgodnie z wynikiem skryptu migracji)
* Czas trwania migracji:
* `bin/doctor` wynik (przy użyciu toolkit)
* Wersja toolkit: `$ git rev-parse HEAD` (przy użyciu Toolkit)

Rozważ dołączenie plików dziennika dla `history-v1`, `project-history` i `track-changes` usług do wiadomości e-mail. Możesz je znaleźć w `/var/log/sharelatex` wewnątrz `sharelatex` kontenera i wyeksportować je w ten sposób:

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

Przed dołączeniem usuń z plików dziennika wszelkie poufne informacje.

#### Znajdowanie uszkodzonych drzew plików

Migracja może nie powieść się dla projektów, które mają nieprawidłowe drzewo plików (na przykład, gdy nazwy plików są puste). Listę tych problemów możesz znaleźć, używając `find_malformed_filetrees` skryptu, który sprawdza wszystkie projekty w bazie danych:

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

Aby naprawić nieprawidłowe ścieżki, użyj `skryptu fix_malformed_filetree` uruchamiając polecenie raz dla każdej złej ścieżki:

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

#### Obniżanie wersji projektów z pełnej historii projektu do starszej historii

Jeśli istnieje projekt, który został zmigrowany do pełnej historii projektu, ale chcesz wrócić do starszej historii, użyj `skryptu downgrade_project` w następujący sposób:

{% 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/pl/wsparcie/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.
