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

# Migrace na S3

## Migrace na S3

{% hint style="info" %}
Tento návod je pro verzi v5.x a novější. Pokud se tímto průvodcem řídíte pro starší verzi, použijte prosím `sharelatex` místo `overleaf` v názvech cest a `SHARELATEX_` předponu místo `OVERLEAF_` pro proměnné prostředí.
{% endhint %}

{% hint style="warning" %}
Zákazníci Server Pro: Před migrací dat na S3 se prosím obraťte na podporu.
{% endhint %}

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

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

### Požadavky

* Objektové úložiště kompatibilní se S3, ke kterému se připojit, viz [S3](/on-premises/on-premises-cs/konfigurace/overleaf-toolkit/s3.md#s3-setup) pro možnosti
* Volné místo na disku pro migraci stávajících dat, přibližně o velikosti současného využití disku
* Servisní okno pro samotnou migraci
* Úplná záloha včetně konfigurace, aby bylo možné z ní obnovit

### Odhadněte potřebnou velikost disku 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 místa na disku, zkuste k serveru připojit další disk.

{% hint style="info" %}
Adresáře historie už mají správné uspořádání. 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 se ujistit, že budou migrovány všechny soubory uživatelů/šablon. Nejlepší je instanci vypnout, aby se nevynechaly nově nahrané soubory.

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

#### Krok 1: přepište uspořádání adresářů

Potřebujeme přepsat uspořádání adresářů projektových souborů, abychom je mohli nahrát do S3. Uspořádání adresářů pro místní úložiště ve filestore je `<project-id>_<file-id>` a uspořádání adresářů v S3 je `<project-id>/<file-id>`.

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

K přepsání uspořádání můžeme použít `tar` takto:

```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 preference můžete k nahrání souborů do svého objektového úložiště kompatibilního se 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 `/var/lib/overleaf` bind mountu. Ve výchozím nastavení je to `~/overleaf_data` v 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“, ale 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 směřující na S3

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

U nasazení pomocí Docker Compose můžete také odebrat bind mount adresáře dat ze sekce volumes.

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

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

* 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 elegantně vrátit zpět obráceným provedení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 místního adresáře pomocí inverzní `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 místní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í uspořádání adresářů na ploché. Zástupné znaky zajišťují, že se rozbalí 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/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.
