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

# Migrace S3

## Migrace na S3

{% hint style="info" %}
Tyto pokyny jsou pro v5.x a novější. Pokud tuto příručku používáte pro starší verzi, použijte prosím `sharelatex` místo `overleaf` v názvech cest a `SHARELATEX_` prefix místo `OVERLEAF_` pro proměnné prostředí.
{% endhint %}

{% hint style="success" %}
**Rádi bychom od vás slyšeli!** Pokud byste se s námi chtěli podělit o to, kolik souborů jste přenesli, jaký byl jejich celkový objem a jak dlouho migrace trvala, napište na [`ayaka-notes@outlook.com`](mailto:support@overleaf.com) .
{% endhint %}

Tento průvodce vás provede migrací z úložiště na disku do objektového úložiště kompatibilního s S3. Odkazuje na části úvodního dokumentu na [Nastavení S3](/on-premises/cs/konfigurace/overleaf-toolkit/s3.md).

### Požadavky

* Objektové úložiště kompatibilní s S3, se kterým se dá komunikovat, viz [S3](/on-premises/cs/konfigurace/overleaf-toolkit/s3.md#s3-setup) pro možnosti
* Volné místo na disku pro migraci existujících dat, zhruba v rozsahu aktuální velikosti na disku
* Údržbové okno pro provedení samotné migrace
* Úplnou zálohu, včetně konfigurace, abyste z ní mohli obnovit

### Odhad velikosti disku potřebné pro migraci

Můžeme použít `du` pro výpočet aktuálního využití disku:

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

Pokud na aktuálním serveru nemáte k dispozici dostatek volného místa na disku, zkuste k serveru připojit další disk.

{% hint style="info" %}
Adresáře historie už mají správné rozložení. Můžete nahrávat přímo z připojené zdrojové složky, což nevyžaduje žádné další místo na disku.
{% endhint %}

### Kroky migrace

#### Krok 0 vypněte instanci

Musíme zajistit, aby byly přeneseny všechny soubory uživatelů/šablon. Nejlepší je instanci vypnout, abychom nepřišli o nově nahrané soubory.

Postup vypnutí naleznete v našem průvodci pro provedení konzistentní zálohy.

#### Krok 1 přepište rozložení adresářů

Musíme přepsat rozložení adresářů projektových souborů, abychom je mohli nahrát do S3. Rozložení adresářů pro lokální úložiště ve filestore je `<project-id>_<file-id>` a rozložení adresářů v S3 je `<project-id>/<file-id>`.

V následujícím textu je `/srv/overleaf-s3-migration` použito pro ukládání souborů v novém rozložení adresářů.

Můžeme využít `tar` pro přepsání rozložení:

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

Podle své preference můžete pro nahrání souborů do objektového úložiště kompatibilního s S3 použít klienta minio mc S3 nebo aws cli.

**aws cli**

{% hint style="info" %}

* Zde byste měli nahradit `overleaf-user-files`, `overleaf-template-files`, `overleaf-project-blobs` a `overleaf-chunks` názvy vašich S3 bucketů.
* Také nahraďte `/srv/overleaf-bind-mount` místní cestou k `/var/lib/overleaf` připojení bind-mount. Ve výchozím nastavení je to `~/overleaf_data` při nasazení pomocí docker-compose.yml a `<toolkit-checkout>/data/overleaf` při použití 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**

Zde používáme serverový alias „s3“, vy jste možná zvolili jiný název.

{% 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 spusťte instanci s cílem na S3

Přidejte do své konfigurace všechny proměnné související se S3, jak je podrobně popsáno v části [Přehled proměnných](/on-premises/cs/konfigurace/overleaf-toolkit/s3.md#overview-of-variables) v [S3](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/s3) průvodce nastavením.

U nasazení pomocí Docker Compose můžete také odebrat bind-mount pro datový adresář z části volumes.

{% hint style="success" %}
Nechte prosím [bind-mount scratch disku pro dočasné soubory](/on-premises/cs/podpora/troubleshooting.md#running-overleaf-with-an-nfs-filesystem) na místě.
{% endhint %}

Nyní můžete spustit instanci a ověřit migraci:

* může zobrazovat náhled binárních souborů v editoru
* může sestavit PDF s obrázky
* může nahrávat nové soubory

### Vrácení zpět

Migraci můžete vrátit zpět bezpečně obrácením kroků:

1. Vypněte instanci
2. Zrcadlete soubory zpět obrácením pořadí zdroje a cíle
3. Zapište nové soubory zpět do lokálního adresáře pomocí inverzního `transformace`
4. Restartujte instanci se starou konfigurací

{% code overflow="wrap" %}

```shell
# Při použití 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

# Při použití 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
# Zápis souborů do lokálního 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" %}
První transformace odstraní složku nejvyšší úrovně. Druhá transformace změní rozložení adresářů na ploché. Zástupné znaky zajistí, že se extrahují pouze soubory, nikoli jejich nadřazené (projektové) složky.
{% 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/cs/udrzba/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.
