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

# Data a zálohy

Někdy potřebujeme změnit schéma dat v databázi, jak se Overleaf vyvíjí; k automatizaci tohoto procesu se používají migrační skripty. Budou již spuštěny na [overleaf.com](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit) první, což je největší instance Overleaf na světě, takže většina případů už bude pravděpodobně řešena; nicméně za vaše data neručíme. Ujistěte se prosím, že vytvoříte **konzistentní** zálohu svých dat **před** při upgradu vaší instance.

{% hint style="info" %}
Při upgradu na nový Docker image budou všechny migrace, které **ne** dosud nebyly spuštěny, automaticky provedeny, může to trvat nějakou dobu v závislosti na velikosti vašeho datasetu; sledování logů vám ukáže průběh. Pro více informací viz naše [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 na třech oddělených místech:

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

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

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

Další informace o rozložení složek na disku najdete v části Složky podrobně.

### Vytváření 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 probíhá proces zálohování. Proto doporučujeme naplánovat údržbové okno, během něhož by uživatelé neměli mít přístup k instanci ani možnost upravovat své projekty.

Než začnete proces zálohování, budete muset instanci odpojit od sítě. U Server Pro začíná `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 provozujete nasazení Toolkit, nebo `docker compose stop sharelatex` pokud používáte Docker Compose.

Jakmile `sharelatex` bude kontejner zastaven, můžete zahájit proces zálohování.

Jakmile bude proces zálohování dokončen **úspěšně** budete muset spustit `sharelatex` kontejner. To provedete příkazem `bin/docker-compose start sharelatex` pokud provozujete 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ý server než ten, na kterém běží vaše instance Overleaf, ideálně zcela na jiném místě.
* Replikace databází na 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 úplné 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 dat a dat projektů uložených v databázi.

### Data souborového systému Overleaf

Pro 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** ke kopírování tohoto adresáře rekurzivně je nutné, aby byla vytvořena úplná záloha.

### Redis

Redis ukládá uživatelské relace a čekající aktualizace dokumentů, než jsou zapsány do MongoDB.

Pro perzistenci Redis je doporučená konfigurace Append Only File (AOF).

U instalací Toolkit mají uživatelé ve výchozím nastavení povolenou perzistenci AOF pro **novými** instalace; stávající uživatelé mohou najít další informace o povolení AOF [zde](/on-premises/on-premises-cs/konfigurace/overleaf-toolkit/redis.md#enabling-append-only-file-persistence).

Pokud se rozhodnete nadále používat RDB snapshoty spolu s perzistencí AOF, můžete soubor RDB zkopírovat na bezpečné místo jako zálohu.

### Migrace dat mezi servery

V ideálním případě ještě v 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 se můžete řídit. Ve zkratce vytvoříme tarball `mongo`, `redis` a `overleaf` svazků, zkopírujeme jej na nový server a tam jej znovu rozbalíme.

#### Toolkit

```bash
# Řádně 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 jakoukoli metodou, která vám vyhovuje

# Řádně vypněte novou instanci (pokud už byla spuštěna)
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

```bash
# Řádně 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 jakoukoli metodou, která vám vyhovuje

# Řádně vypněte novou instanci (pokud už byla spuštěna)
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 datové adresáře
new-server$ tar --extract --file backup-old-server.tar

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

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

{% hint style="info" %}
Při spuštění jako uživatel root (nebo s sudo) si tar zachová vlastníka/skupinu souboru 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, nejlepší je, 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
3. `~/overleaf_data`
   1. bin
      1. synctex (d)
         * v nejnovějším vydání se nepoužívá, dříve se používal vlastní binární soubor synctex (synctex se používá pro mapování zdroje mezi soubory .tex a PDF)
   2. data
      1. cache (e)
         * cache binárních souborů pro kompilace
      2. kompilace (e)
         * zde probíhá kompilace LaTeXu
      3. db.sqlite (d)
         * v nejnovějším vydání se nepoužívá, dříve ukládal podrobnosti o cache CLSI (buď přesunuto do jednoduchých map v paměti, nebo procházíme disk)
      4. db.sqlite-wal (d)
         * v nejnovějším vydání se nepoužívá, viz db.sqlite
      5. výstup (e)
         * úložiště výstupu kompilace LaTeXu pro servírování klientovi
      6. template\_files (b)
         * náhledy obrázků systému šablon (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 z práce se zip soubory
      2. uploads (e)
         * bufferování nahrávání 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/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.
