> 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/konserwacja/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_` prefiksu zamiast `OVERLEAF_` dla zmiennych środowiskowych.
{% endhint %}

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

{% hint style="success" %}
**Chętnie poznamy Twoją opinię!** Jeśli chcesz podzielić się z nami informacją o liczbie zmigrowanych plików, ich łącznym rozmiarze oraz czasie trwania migracji, wyślij e-mail na adres [`support@overleaf.com`](mailto:support@overleaf.com) .
{% endhint %}

Ten przewodnik przeprowadzi Cię przez migrację z pamięci dyskowej do magazynu obiektowego zgodnego z S3. Odnosi się on do sekcji dokumentu wprowadzającego na stronie [Konfiguracja S3](/on-premises/pl/konfiguracja/overleaf-toolkit/s3.md).

### Wymagania

* Magazyn obiektowy zgodny z S3, z którym można się połączyć; zobacz [S3](/on-premises/pl/konfiguracja/overleaf-toolkit/s3.md#s3-setup) aby poznać opcje
* Wolne miejsce na dysku do migracji istniejących danych, w przybliżeniu odpowiadające ich obecnemu rozmiarowi na dysku
* Okno konserwacyjne na przeprowadzenie właściwej migracji
* Pełna kopia zapasowa, w tym konfiguracji, umożliwiająca przywrócenie danych

### Oszacuj rozmiar dysku potrzebny do migracji

Możemy użyć `du` do obliczenia bieżącego użycia 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 bieżącym serwerze nie ma wystarczającej ilości wolnego miejsca na dysku, spróbuj podłączyć do niego dodatkowy dysk.

{% hint style="info" %}
Katalogi historii mają już prawidłowy układ. Możesz przesyłać dane bezpośrednio z katalogu źródłowego zamontowanego przez bind mount, co nie wymaga dodatkowego miejsca na dysku.
{% endhint %}

### Kroki migracji

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

Musimy upewnić się, że wszystkie pliki użytkowników i szablonów zostaną zmigrowane. Najlepiej wyłączyć instancję, aby nie pominąć nowo przesłanych plików.

Procedurę wyłączania znajdziesz w naszym przewodniku dotyczącym wykonywania spójnej kopii zapasowej.

#### Krok 1: zmień układ katalogów

Musimy zmienić układ katalogów plików projektów, aby przesłać je do S3. Układ katalogów dla lokalnej pamięci masowej w filestore to `<project-id>_<file-id>` a układ katalogów w S3 to `<project-id>/<file-id>`.

W dalszej części `/srv/overleaf-s3-migration` jest używany do przechowywania plików w nowym układzie katalogów.

Możemy wykorzystać `tar` do zmiany 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 przesłania plików do magazynu obiektowego zgodnego z S3.

**aws cli**

{% hint style="info" %}

* Tutaj należy zastąpić `overleaf-user-files`, `overleaf-template-files`, `overleaf-project-blobs` i `overleaf-chunks` nazwami swoich zasobników S3.
* Zastąp również `/srv/overleaf-bind-mount` lokalną ścieżką do `/var/lib/overleaf` bind mounta. Domyślnie jest to `~/overleaf_data` w wdrożeniu docker-compose.yml oraz `<toolkit-checkout>/data/overleaf` w przypadku korzystania z Toolkitu.
  {% 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”; być może wybrano 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 sekcji [Przegląd zmiennych](/on-premises/pl/konfiguracja/overleaf-toolkit/s3.md#overview-of-variables) w [S3](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/s3) przewodniku konfiguracji.

W przypadku wdrożeń Docker Compose można również usunąć bind mount katalogu danych z sekcji volumes.

{% hint style="success" %}
Pozostaw jednak [bind mount dysku roboczego 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żna wyświetlać podgląd plików binarnych w edytorze
* można skompilować plik PDF z obrazami
* można przesyłać nowe pliki

### Wycofywanie

Możesz bezpiecznie wycofać migrację, wykonując kroki w odwrotnej kolejności:

1. Wyłącz instancję
2. Skopiuj pliki z powrotem, odwracając kolejność źródła i miejsca docelowego
3. Zapisz nowe pliki z powrotem w katalogu lokalnym, używając odwrotnej `transformacji`
4. Uruchom ponownie instancję ze starą konfiguracją

{% code overflow="wrap" %}

```shell
# W przypadku używania 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

# W przypadku używania 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 w lokalnym 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 katalog najwyższego poziomu. Druga transformacja zmienia układ katalogów na płaski. Symbole wieloznaczne zapewniają, że wyodrębniane są tylko pliki, a nie ich katalogi nadrzędne (projektów).
{% 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://ayakaleaf-pro.ayaka.space/on-premises/pl/konserwacja/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.
