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

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

## Pełna migracja historii projektu

Ta `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 uaktualnieniu 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ć z przestarzałego systemu historii, dopóki nie zostaną zmigrowane.

{% hint style="info" %}
Jeśli uaktualnisz do `3.5.13` i zdecydujesz się na obniżenie wersji do wcześniejszej, powinieneś przywrócić system z pełnej kopii zapasowej. 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 przestarzały 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) swojej instancji wraz ze spójnym zrzutem **mongo**, **redis** i **sharelatex** katalogów.
{% endstep %}

{% step %}

#### Aktualizacja

Zaktualizuj wersję obrazu sharelatex/sharelatex do 3.5.13.

Toolkit: Użyj `$ bin/upgrade` skryptu do uaktualnienia 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ą uruchomione

Poczekaj, aż wszystkie usługi będą uruchomione (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 pliku 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, co umożliwia 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 na nieedytowalny plik)

Wynik powinien wyglądać tak:

```bash
Zmigrowane projekty  :  1
Łączna liczba 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
==================
Zmigrowane projekty:  51
Nieudane projekty:  0
Gotowe.
```

Jeśli migracja zakończy się powodzeniem, otrzymasz kod wyjścia `0`, a ostatnie wiersze będą wskazywać brak niepowodzeń:

```bash
Nieudane projekty:  0
Gotowe.
```

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

{% step %}

#### Ponownie otwórz witrynę

Jeśli wybrałeś wykonanie migracji offline, będziesz musiał ponownie otworzyć witrynę. Jeśli nadal jesteś zalogowany, będziesz musiał:

1. Kliknij **Administrator** przycisk i wybierz **Zarządzaj witryną**
2. Kliknij **Otwórz/Zamknij edytor** kartę
3. Kliknij **Otwórz ponownie edytor** przycisk

Jeśli zamknąłeś przeglądarkę, musisz 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 na konto administratora
* Kliknij **Administrator** przycisk i wybierz **Zarządzaj witryną**
* Kliknij **Otwórz/Zamknij edytor** kartę
* Kliknij **Zamknij edytor** przycisk
* Kliknij **Rozłącz wszystkich użytkowników** przycisk

Po wykonaniu tego, jeśli jacykolwiek użytkownicy są zalogowani, zostaną przekierowani na stronę konserwacyjną, a wszyscy nowi użytkownicy odwiedzający stronę logowania zobaczą stronę konserwacyjną i **nie zostanie** będą mogli się zalogować.

#### Migracja online

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

* Proces migracji intensywnie wykorzystuje CPU, należy monitorować zużycie zasobów podczas działania skryptu.
* Przy wysokiej wartości `--concurrency` niektóre usługi (`track-changes` w szczególności) mogą doświadczać pewnych blokad, co prowadziłoby do pogorszenia UX. Zalecamy rozpocząć od domyślnej wartości `--concurrency=1` .
* Możesz w każdej chwili zatrzymać skrypt. Uruchomienie go ponownie wznowi migrację od miejsca, w którym przerwałeś. Jest to przydatne, jeśli wolisz uruchamiać migrację w mniej obciążonych godzinach (np. w nocy).

Nasza rekomendacja to zamknięcie witryny i uruchomienie migracji offline w oknie konserwacyjnym, gdy liczba projektów jest mniejsza niż 1000 projektów (`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ć uruchamianie online czy offline, w zależności od konkretnego przypadku.

#### Czyszczenie przestarzałych danych historii

Skrypt do czyszczenia przestarzałych 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żna go również użyć do zwolnienia części miejsca podczas wykonywania 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 uaktualnić 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, dołączony do najnowszych wersji poprawkowych Server Pro `3.5.x` i najnowszych `4.x.x` usuwają kolekcje jako końcowy krok.

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

### Rozwiązywanie problemów

Dodamy tutaj porady dotyczące rozwiązywania problemów. Pamiętaj, że chociaż zwykle oferujemy wsparcie tylko klientom Server Pro, ze względu na charakter tej migracji zrobimy również wszystko, co w naszej mocy, 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ę z błędem lub wyświetli niezerową liczbę nieudanych projektów), 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), podając:

Temat: Problem z migracją pełnej historii projektu

* Typ instancji: CE lub Server Pro (usuń odpowiednio)
* Typ instalacji: Overleaf Toolkit lub `docker-compose.yml` lub inne (usuń odpowiednio)
* Wersja: 3.5.x (toolkit: `$ cat config/version`)
* Wynik skryptu migracji (który powinien znajdować się w kontenerze w `/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 (podczas korzystania z toolkit)
* Wersja toolkit: `$ git rev-parse HEAD` (podczas korzystania z Toolkit)

Rozważ dołączenie plików dziennika dla usług `history-v1`, `project-history` i `track-changes` do e-maila. 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
```

Proszę zredagować wszelkie poufne informacje z plików dziennika przed ich dołączeniem.

#### Znajdowanie uszkodzonych drzew plików

Migracja może zakończyć się niepowodzeniem dla projektów, które mają nieprawidłowo utworzone drzewo plików (na przykład gdy nazwy plików są puste). Listę tych problemów można znaleźć za pomocą skryptu `find_malformed_filetrees` 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"
ZŁA ŚCIEŻKA: 123456789012345678901234 rootFolder.0.1.2.3
ZŁA ŚCIEŻKA: 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 przestarzałej historii

Jeśli istnieje projekt, który został zmigrowany do pełnej historii projektu, ale chcesz wrócić do przestarzałej 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://overleaf-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.
