> 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/data-and-backups.md).

# Data a zálohy

Někdy potřebujeme změnit schéma dat v databázi, jak se vyvíjí Overleaf; migrační skripty se používají k automatizaci tohoto procesu. Budou spuštěny na [overleaf.com](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit) nejprve na overleaf.com, což je největší instance Overleaf na světě, takže většina eventualit už bude pravděpodobně řešena, nicméně neposkytujeme žádné záruky ohledně vašich dat. Ujistěte se, že vytvoříte **konzistentní** zálohu vašich dat **před** aktualizací vaší instance.

{% hint style="info" %}
Při aktualizaci na nový Docker image budou všechny migrace, které ještě **ne** byly spuštěny, automaticky provedeny, což může v závislosti na velikosti vaší datové sady nějakou dobu trvat; sledování logů vám ukáže průběh. Další informace najdete v naší [Logování](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/logging) dokumentaci.
{% endhint %}

### Ukládání dat

Overleaf Community Edition a Server Pro ukládají svá data ve třech oddělených místech:

* **Databáze MongoDB:** Zde se nacházejí uživatelská a projektová data.
* **Redis:** slouží jako vysoce výkonná mezipaměť pro průběžná data, především ukládá informace související s úpravami projektů a spoluprací.
* **Souborový systém Overleaf:** ukládá needitovatelné soubory projektu (včetně obrázků) a také funguje jako dočasná disková mezipaměť během kompilací projektu.

{% hint style="info" %}
Může to být `~/sharelatex_data` nebo `~/overleaf_data`, v závislosti na tom, kdy byla vaše instance nastavena.
{% endhint %}

{% hint style="success" %}
Pro soubory projektu a úplná historická data projektu také podporujeme úložiště kompatibilní se S3.
{% endhint %}

Více informací o rozložení složek na disku najdete v části Složky podrobně.

### Provádění konzistentní zálohy

Při vytváření konzistentní zálohy je třeba zahrnout tři úložiště:

* MongoDB
* Redis
* Data souborového systému Overleaf

Aby bylo možné vytvořit konzistentní zálohu, je **nezbytné** zabránit uživatelům ve vytváření nových dat, zatímco proces zálohování běží. Proto doporučujeme naplánovat okno údržby, během kterého by uživatelé neměli mít přístup k instanci ani upravovat své projekty.

Než začnete proces zálohování, budete muset svou instanci odstavit. U Server Pro `3.5.0` proces vypnutí automatizuje uzavření webu a odpojení uživatelů.

Chcete-li instanci vypnout, budete muset spustit `bin/docker-compose stop sharelatex` pokud používáte nasazení Toolkit, nebo `docker compose stop sharelatex` pokud používáte Docker Compose.

Jakmile `sharelatex` kontejner byl zastaven, můžete spustit proces zálohování.

Jakmile bude proces zálohování **úspěšně** dokončen, budete muset spustit `sharelatex` kontejner. K tomu spusťte `bin/docker-compose start sharelatex` pokud používáte nasazení Toolkit, nebo `docker compose start sharelatex` pokud používáte Docker Compose.

{% hint style="danger" %}

* Zálohy by měly být ukládány na samostatném serveru od toho, na kterém běží vaše instance Overleaf, ideálně zcela na jiném místě.
* Replikace databází do více instancí MongoDB může nabídnout určitou redundanci, ale nechrání před poškozením.
* Testování záloh je nejlepší způsob, jak zajistit, že jsou kompletní a funkční.
  {% endhint %}

### MongoDB

MongoDB obsahuje nástroj příkazové řádky s názvem [mongodump](https://docs.mongodb.com/manual/reference/program/mongodump/) který lze použít k vytvoření zálohy uživatelských a projektových dat uložených v databázi.

### Data souborového systému Overleaf

U nasazení Toolkit je cesta, kde jsou uloženy vaše needitovatelné soubory, uvedena v `config/overleaf.rc` pomocí `OVERLEAF_DATA_PATH` proměnné prostředí, ale v závislosti na tom, kdy byla vaše instance vytvořena, to může být `data/sharelatex`.

Použití nástroje jako **rsync** pro rekurzivní kopírování tohoto adresáře je nutné, aby byla vytvořena kompletní záloha.

### Redis

Redis ukládá uživatelská sezení a čekající aktualizace dokumentů, než se zapíší do MongoDB.

Perzistence typu Append Only File (AOF) je doporučená konfigurace perzistence pro Redis.

Uživatelé Toolkit mají AOF perzistenci ve výchozím nastavení povolenou pro **nové** instalace, stávající uživatelé najdou více informací o povolení AOF [zde](/on-premises/cs/konfigurace/overleaf-toolkit/redis.md#enabling-append-only-file-persistence).

Pokud se rozhodnete nadále používat snímky RDB spolu s AOF persistencí, můžete soubor RDB zkopírovat na zabezpečené místo jako zálohu.

### Migrace dat mezi servery

V nejlepším případě zatím ve své nové instanci nemáte žádná cenná data. Nemáme proces pro slučování dat instancí.

Za předpokladu, že nová instance zatím nemá žádná data, zde je několik kroků, kterými byste se mohli řídit. Obecně vytvoříme tarball z `mongo`, `redis` a `overleaf` svazků, zkopírujeme jej na nový server a tam jej znovu rozbalíme.

#### Toolkit

```bash
# Korektně vypněte starou instanci
old-server$ bin/stop

# Vytvořte tarball
old-server$ tar --create --file backup-old-server.tar config/ data/

# Zkopírujte soubor backup-old-server.tar ze starého serveru na
# nový-server jakýmkoli způsobem, který vám vyhovuje

# Korektně vypněte novou instanci (pokud už běží)
new-server$ bin/stop

# Přesuňte nová data, můžete je také smazat
new-server$ mkdir backup-new-server
new-server$ mv config/ data/ backup-new-server/

# Znovu naplňte adresář config/data
new-server$ tar --extract --file backup-old-server.tar

# Spusťte kontejnery
new-server$ bin/up
```

#### Docker Compose

{% code overflow="wrap" %}

```bash
# Korektně vypněte starou instanci
old-server$ docker stop sharelatex
old-server$ docker stop mongo redis

# Vytvořte tarball
old-server$ tar --create --file backup-old-server.tar ~/OVERLEAF_data ~/mongo_data ~/redis_data

# Zkopírujte soubor backup-old-server.tar ze starého serveru na
# nový server jakýmkoli způsobem, který vám vyhovuje

# Korektně vypněte novou instanci (pokud už běží)
new-server$ docker stop sharelatex
new-server$ docker stop mongo redis

# Přesuňte nová data, můžete je také smazat
new-server$ mkdir backup-new-server
new-server$ mv ~/OVERLEAF_data ~/mongo_data ~/redis_data backup-new-server/

# Znovu naplňte adresáře s daty
new-server$ tar --extract --file backup-old-server.tar

# Spusťte kontejnery
new-server$ docker start mongo redis
new-server$ docker start sharelatex
```

{% endcode %}

V závislosti na vašem **docker-compose.yml** souboru možná budete muset upravit cesty k `mongo`, `redis`, `overleaf` svazkům.

{% hint style="info" %}
Při spuštění jako uživatel root (nebo s sudo) tar zachová vlastníka/skupinu souborů a oprávnění, což je při obnově zálohy zásadní.
{% endhint %}

### Složky podrobně

{% hint style="info" %}
Následující složky mají další poznámky:

* (b) zahrnout do záloh, nejlépe když je instance zastavena, aby byla zajištěna konzistence
* (d) lze smazat
* (e) dočasné soubory, lze smazat, když je instance zastavena
  {% endhint %}

1. `~/mongo_data` (b)
   * datový adresář mongodb
2. `~/redis_data` (b)
   * datový adresář redis db
3. `~/overleaf_data`
   1. bin
      1. synctex (d)
         * v poslední verzi se nepoužívá, dříve se používal vlastní binární soubor synctex (synctex slouží pro mapování zdrojů mezi soubory .tex a pdf)
   2. data
      1. mezipaměť (e)
         * mezipaměť binárních souborů pro kompilace
      2. kompilace (e)
         * zde probíhá kompilace LaTeXu
      3. db.sqlite (d)
         * v poslední verzi se nepoužívá, dříve ukládal detaily mezipaměti clsi (buď přesunuto na jednoduché mapy v paměti, nebo prohledáváme disk)
      4. db.sqlite-wal (d)
         * v poslední verzi se nepoužívá, viz db.sqlite
      5. výstup (e)
         * úložiště výstupu kompilace LaTeXu pro poskytování klientovi
      6. template\_files (b)
         * náhledy obrázků šablonového systému (pouze Server Pro)
      7. user\_files (b)
         * binární soubory projektů
      8. history (b)
         * soubory úplné historie projektu
   3. tmp
      1. dumpFolder (e)
         * dočasné soubory zpracování zip souborů
      2. uploads (e)
         * bufferování nahrávaných souborů (binární soubor / nahrání nového projektu ze zipu)
      3. projectHistories (e)
         * dočasné soubory pro migrace úplné historie projektu


---

# 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/data-and-backups.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.
