> 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/utrzymanie/s3-migration.md).

# Migracja do S3

## Migracja do S3

{% hint style="info" %}
Te instrukcje dotyczą wersji v5.x i nowszych. Jeśli korzystasz z tego przewodnika dla wcześniejszej wersji, użyj `sharelatex` zamiast `overleaf` w nazwach ścieżek oraz `SHARELATEX_` prefiks zamiast `OVERLEAF_` dla zmiennych środowiskowych.
{% endhint %}

{% hint style="warning" %}
Klienci Server Pro: Skontaktuj się z pomocą techniczną przed przeniesieniem danych do S3.
{% endhint %}

{% hint style="success" %}
**Chętnie od Ciebie usłyszymy!** Jeśli chcesz podzielić się z nami informacją, ile plików przeniosłeś, jaki był ich łączny rozmiar i ile trwała migracja, napisz na [`support@overleaf.com`](mailto:support@overleaf.com) .
{% endhint %}

Ten przewodnik przeprowadzi Cię przez migrację z lokalnego magazynu na kompatybilną z S3 pamięć obiektową. Odwołuje się do sekcji dokumentu wprowadzającego na [Konfiguracja S3](/on-premises/pl/konfiguracja/overleaf-toolkit/s3.md).

### Wymagania

* Kompatybilna z S3 pamięć obiektowa, z którą można się połączyć; zobacz [S3](/on-premises/pl/konfiguracja/overleaf-toolkit/s3.md#s3-setup) po opcje
* Wolne miejsce na dysku do migracji istniejących danych, około bieżącego rozmiaru na dysku
* Okno serwisowe na przeprowadzenie właściwej migracji
* Pełna kopia zapasowa, włącznie z konfiguracją, umożliwiająca odtworzenie z niej

### Oszacuj ilość miejsca na dysku potrzebną do migracji

Możemy użyć `du` do obliczenia bieżącego wykorzystania dysku:

```shell
docker exec sharelatex \
  du --human-readable --max-depth=0 /var/lib/overleaf/data/user_files

docker exec sharelatex \
  du --human-readable --max-depth=0 /var/lib/overleaf/data/template_files
```

Jeśli na obecnym serwerze nie ma wystarczającej ilości wolnego miejsca, spróbuj podłączyć do serwera kolejny dysk.

{% hint style="info" %}
Katalogi historii mają już poprawny układ. Możesz przesyłać bezpośrednio z podłączonego bind-mountem folderu źródłowego, co nie wymaga dodatkowego miejsca na dysku.
{% endhint %}

### Kroki migracji

#### Krok 0: wyłącz instancję

Musimy upewnić się, że wszystkie pliki użytkowników/szablonów zostaną przeniesione. Najlepiej wyłączyć instancję, aby uniknąć pominięcia nowo przesłanych plików.

Zapoznaj się z naszym przewodnikiem dotyczącym wykonywania spójnej kopii zapasowej w celu przeprowadzenia procedury wyłączania.

#### Krok 1: przepisz układ katalogów

Musimy przepisać układ katalogów plików projektu, aby przesłać je do S3. Układ katalogów dla lokalnego magazynu w filestore to `<project-id>_<file-id>` a układ katalogów w S3 to `<project-id>/<file-id>`.

Poniżej, `/srv/overleaf-s3-migration` jest używany do przechowywania plików w nowym układzie katalogów.

Możemy skorzystać z `tar` do przepisania układu:

```shell
mkdir -p /srv/overleaf-s3-migration/user_files \
         /srv/overleaf-s3-migration/template_files
docker exec sharelatex \
  tar --create --directory /var/lib/overleaf/data/user_files . \
| tar --extract --directory /srv/overleaf-s3-migration/user_files \
  --transform=sx_x/x
docker exec sharelatex \
  tar --create --directory /var/lib/overleaf/data/template_files . \
| tar --extract --directory /srv/overleaf-s3-migration/template_files \
  --transform=sx_x/xg
```

#### Krok 2: prześlij pliki

W zależności od preferencji możesz użyć klienta S3 minio mc lub aws cli do przesyłania plików do kompatybilnej z S3 pamięci obiektowej.

**aws cli**

{% hint style="info" %}

* Tutaj należy zastąpić `overleaf-user-files`, `overleaf-template-files`, `overleaf-project-blobs` i `overleaf-chunks` nazwami swoich bucketów S3.
* Zamień też `/srv/overleaf-bind-mount` lokalną ścieżką do `/var/lib/overleaf` bind-mountu. Domyślnie jest to `~/overleaf_data` w wdrożeniu docker-compose.yml oraz `<toolkit-checkout>/data/overleaf` podczas korzystania z Toolkit.
  {% endhint %}

{% code overflow="wrap" %}

```shell
aws s3 sync /srv/overleaf-s3-migration/user_files s3://overleaf-user-files
aws s3 sync /srv/overleaf-s3-migration/template_files s3://overleaf-template-files

aws s3 sync /srv/overleaf-bind-mount/data/history/overleaf-project-blobs s3://overleaf-project-blobs
aws s3 sync /srv/overleaf-bind-mount/data/history/overleaf-chunks s3://overleaf-chunks
```

{% endcode %}

**minio mc**

Używamy tutaj aliasu serwera „s3”; mogłeś wybrać inną nazwę.

{% code overflow="wrap" %}

```shell
mc mirror /srv/overleaf-s3-migration/user_files s3/overleaf-user-files
mc mirror /srv/overleaf-s3-migration/template_files s3/overleaf-template-files

mc mirror /srv/overleaf-bind-mount/data/history/overleaf-project-blobs s3/overleaf-project-blobs
mc mirror /srv/overleaf-bind-mount/data/history/overleaf-chunks s3/overleaf-chunks
```

{% endcode %}

#### Krok 3: uruchom instancję wskazującą na S3

Dodaj wszystkie zmienne związane z S3 do swojej konfiguracji, zgodnie ze szczegółami w [Przegląd zmiennych](/on-premises/pl/konfiguracja/overleaf-toolkit/s3.md#overview-of-variables) sekcji w [S3](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/s3) przewodniku konfiguracji.

W przypadku wdrożeń Docker Compose możesz też usunąć bind-mount dla katalogu danych z sekcji volumes.

{% hint style="success" %}
Zachowaj [bind-mount dysku tymczasowego dla plików tymczasowych](/on-premises/pl/wsparcie/troubleshooting.md#running-overleaf-with-an-nfs-filesystem) na miejscu.
{% endhint %}

Możesz teraz uruchomić instancję i zweryfikować migrację:

* może podglądać pliki binarne w edytorze
* może skompilować PDF z obrazami
* może przesyłać nowe pliki

### Wycofywanie zmian

Możesz bezproblemowo wycofać migrację, odwracając kroki:

1. Wyłącz instancję
2. Zsynchronizuj pliki z powrotem, odwracając kolejność źródła/celu
3. Zapisz nowe pliki z powrotem do lokalnego katalogu przy użyciu odwrotnej `transformacji`
4. Uruchom ponownie instancję ze starą konfiguracją

{% code overflow="wrap" %}

```shell
# Podczas korzystania z aws cli
aws s3 sync s3://overleaf-user-files /srv/overleaf-s3-migration/user_files
aws s3 sync s3://overleaf-template-files /srv/overleaf-s3-migration/template_files
aws s3 sync s3://overleaf-project-blobs /srv/overleaf-bind-mount/data/history/overleaf-project-blobs
aws s3 sync s3://overleaf-chunks /srv/overleaf-bind-mount/data/history/overleaf-chunks

# Podczas korzystania z minio mc
mc mirror s3/overleaf-user-files /srv/overleaf-s3-migration/user_files
mc mirror s3/overleaf-template-files /srv/overleaf-s3-migration/template_files
mc mirror s3/overleaf-project-blobs /srv/overleaf-bind-mount/data/history/overleaf-project-blobs
mc mirror s3/overleaf-chunks /srv/overleaf-bind-mount/data/history/overleaf-chunks
```

{% endcode %}

```shell
# Zapisz pliki do lokalnego Server CE/Server Pro
tar --create --directory /srv/overleaf-s3-migration/user_files . \
| docker exec --interactive sharelatex \
    tar \
      --extract \
      --keep-old-files \
      --directory /var/lib/overleaf/data/user_files \
      --transform=sx./xx --transform=sx/x_x \
      --wildcards '*/*/*'

tar --create --directory /srv/overleaf-s3-migration/template_files . \
| docker exec --interactive sharelatex \
    tar \
      --extract \
      --keep-old-files \
      --directory /var/lib/overleaf/data/template_files \
      --transform=sx./xx --transform=sx/x_xg \
      --wildcards '*/*/*/*/pdf-converted-cache/*' \
      --wildcards '*/*/*/*/pdf' \
      --wildcards '*/*/*/*/zip'
```

{% hint style="info" %}
Pierwsza transformacja usuwa folder najwyższego poziomu. Druga transformacja zmienia układ katalogów na płaski. Wildcards zapewniają, że wyodrębniane są tylko pliki, a nie ich nadrzędne (projektowe) foldery.
{% endhint %}


---

# 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/utrzymanie/s3-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.
