> For the complete documentation index, see [llms.txt](https://overleaf-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://overleaf-pro.ayaka.space/on-premises/fi/yllapito/data-and-backups.md).

# Data ja varmuuskopiot

Joskus meidän täytyy muuttaa tietokannan datan skeemaa, kun kehitämme Overleafiä; migraatioskriptejä käytetään tämän prosessin automatisointiin. Ne on ajettu [overleaf.com](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit) ensin, joka on Overleafin suurin instanssi maailmassa, joten useimmat tilanteet on todennäköisesti jo kohdattu, mutta emme anna mitään takeita datastasi. Varmista, että luot **yhdenmukaisen** varmuuskopion tiedoistasi **ennen** päivittäessäsi instanssiasi.

{% hint style="info" %}
Kun päivität uuteen Docker-kuvaan, kaikki migraatiot, joita ei ole **ei** vielä ajettu, suoritetaan automaattisesti. Tämä voi kestää jonkin aikaa aineistosi koosta riippuen. Lokien seuraaminen kertoo edistymisen. Lisätietoja on [Lokitus](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/logging) dokumentaatiota.
{% endhint %}

### Datavarastointi

Overleaf Community Edition ja Server Pro tallentavat tietonsa kolmeen erilliseen paikkaan:

* **MongoDB-tietokanta:** Täällä sijaitsevat käyttäjä- ja projektitiedot.
* **Redis:** toimii suorituskykyisenä välimuistina käsittelyssä olevalle datalle ja tallentaa ensisijaisesti tietoja, jotka liittyvät projektin muokkauksiin ja yhteistyöhön.
* **Overleafin tiedostojärjestelmä:** tallentaa ei-muokattavia projektitiedostoja (mukaan lukien kuvat) ja toimii myös väliaikaisena levyvälimuistina projektien käännösten aikana.

{% hint style="info" %}
Tämä voi olla `~/sharelatex_data` tai `~/overleaf_data`, riippuen siitä, milloin instanssisi määritettiin.
{% endhint %}

{% hint style="success" %}
Projektitiedostoille ja koko projektihistorian tiedoille tuemme myös S3-yhteensopivia tallennusratkaisuja.
{% endhint %}

Katso Folders in detail -osiosta lisätietoja kansiorakenteesta levyllä.

### Yhdenmukaisen varmuuskopion tekeminen

Yhdenmukaista varmuuskopiota otettaessa on kolme tietovarastoa, jotka on sisällytettävä:

* MongoDB
* Redis
* Overleafin tiedostojärjestelmän data

Yhdenmukaisen varmuuskopion tuottamiseksi on **pakollista** estää käyttäjiä tuottamasta uutta dataa varmuuskopioinnin aikana. Siksi suosittelemme huoltokatkon ajoittamista, jonka aikana käyttäjät eivät saa käyttää instanssia tai muokata projektejaan.

Ennen kuin aloitat varmuuskopiointiprosessin, sinun on vietävä instanssisi offline-tilaan. Server Pro:sta alkaen `3.5.0` sammutusprosessi automatisoi sivuston sulkemisen ja käyttäjien yhteyksien katkaisemisen.

Jos haluat sammuttaa instanssisi, sinun täytyy suorittaa `bin/docker-compose stop sharelatex` jos käytät Toolkit-julkaisua, tai `docker compose stop sharelatex` jos käytät Docker Composea.

Kun `sharelatex` kontti on pysäytetty, voit aloittaa varmuuskopiointiprosessin.

Kun varmuuskopiointiprosessi on suoritettu **onnistuneesti** sinun täytyy käynnistää `sharelatex` kontti. Tee tämä suorittamalla `bin/docker-compose start sharelatex` jos käytät Toolkit-julkaisua, tai `docker compose start sharelatex` jos käytät Docker Composea.

{% hint style="danger" %}

* Varmuuskopiot tulisi säilyttää erillisellä palvelimella kuin se, jolla Overleaf-instanssisi ajaa, mieluiten kokonaan eri sijainnissa.
* Tietokantojen replikoiminen useisiin MongoDB-instansseihin saattaa tarjota jonkin verran redundanssia, mutta se ei suojaa korruptiolta.
* Varmuuskopioiden testaaminen on paras tapa varmistaa, että ne ovat täydellisiä ja toimivia.
  {% endhint %}

### MongoDB

MongoDB:n mukana tulee komentorivityökalu nimeltä [mongodump](https://docs.mongodb.com/manual/reference/program/mongodump/) jota voidaan käyttää tietokannassa tallennettujen käyttäjä- ja projektitietojen varmuuskopion luomiseen.

### Overleafin tiedostojärjestelmän data

Toolkit-julkaisuissa polku, johon muokattamattomat tiedostosi tallennetaan, määritellään `config/overleaf.rc` käyttämällä `OVERLEAF_DATA_PATH` ympäristömuuttujassa, mutta riippuen siitä, milloin instanssisi luotiin, tämä saattaa olla `data/sharelatex`.

Käyttämällä työkalua kuten **rsync** näiden hakemistojen rekursiivinen kopiointi on tarpeen, jotta varmuuskopio varmasti luodaan kokonaan.

### Redis

Redis tallentaa käyttäjäistunnot ja odottavat dokumenttipäivitykset ennen kuin ne kirjoitetaan MongoDB:hen.

Append Only File (AOF) -pysyvyys on suositeltu asetuskokoonpano Redis-pysyvyyttä varten.

Toolkit-käyttäjillä AOF-pysyvyys on oletuksena käytössä **uusissa** asennuksissa. Olemassa olevat käyttäjät löytävät lisätietoja AOF:n käyttöönotosta [tässä](/on-premises/fi/maaritys/overleaf-toolkit/redis.md#enabling-append-only-file-persistence).

Jos päätät jatkaa RDB-tilannevedosten käyttöä yhdessä AOF-pysyvyyden kanssa, voit kopioida RDB-tiedoston turvalliseen sijaintiin varmuuskopioksi.

### Datan siirtäminen palvelinten välillä

Parhaimmillaan uudessa instanssissa ei vielä ole mitään arvokasta dataa. Meillä ei ole prosessia instanssien datan yhdistämiseen.

Olettaen, että uudessa instanssissa ei vielä ole dataa, tässä on muutamia vaiheita, joita voit seurata. Korkealla tasolla teemme tar-paketin `mongo`, `redis` ja `Overleaf` volumeista, kopioimme sen uudelle palvelimelle ja puramme sen siellä uudelleen.

#### Toolkit

```bash
# Sulje vanha instanssi hallitusti
old-server$ bin/stop

# Luo tar-paketti
old-server$ tar --create --file backup-old-server.tar config/ data/

# Kopioi backup-old-server.tar-tiedosto vanhalta-palvelimelta
# uudelle-palvelimelle millä tahansa sopivalla tavalla

# Sulje uusi instanssi hallitusti (jos se on jo käynnistetty)
new-server$ bin/stop

# Siirrä uusi data, voit myös poistaa sen
new-server$ mkdir backup-new-server
new-server$ mv config/ data/ backup-new-server/

# Täytä config/data-hakemisto uudelleen
new-server$ tar --extract --file backup-old-server.tar

# Käynnistä kontit
new-server$ bin/up
```

#### Docker Compose

```bash
# Sulje vanha instanssi hallitusti
old-server$ docker stop sharelatex
old-server$ docker stop mongo redis

# Luo tar-paketti
old-server$ tar --create --file backup-old-server.tar ~/OVERLEAF_data ~/mongo_data ~/redis_data

# Kopioi backup-old-server.tar-tiedosto vanhalta-palvelimelta
# uudelle-palvelimelle millä tahansa sopivalla tavalla

# Sulje uusi instanssi hallitusti (jos se on jo käynnistetty)
new-server$ docker stop sharelatex
new-server$ docker stop mongo redis

# Siirrä uusi data, voit myös poistaa sen
new-server$ mkdir backup-new-server
new-server$ mv ~/OVERLEAF_data ~/mongo_data ~/redis_data backup-new-server/

# Täytä data-hakemistot uudelleen
new-server$ tar --extract --file backup-old-server.tar

# Käynnistä kontit
new-server$ docker start mongo redis
new-server$ docker start sharelatex
```

Riippuen **docker-compose.yml** tiedostostasi, sinun on ehkä säädettävä `mongo`, `redis`, `Overleaf` volyymien

{% hint style="info" %}
Kun ajat root-käyttäjänä (tai sudolla), tar säilyttää tiedoston omistajan/ryhmän ja käyttöoikeudet, mikä on kriittistä varmuuskopiota palautettaessa.
{% endhint %}

### Hakemistot yksityiskohtaisesti

{% hint style="info" %}
Seuraavissa hakemistoissa on lisävihjeitä:

* (b) sisällytettävä varmuuskopioihin, parhaiten kun instanssi on pysäytetty yhdenmukaisuuden varmistamiseksi
* (d) voidaan poistaa
* (e) tilapäiset tiedostot, voidaan poistaa kun instanssi on pysäytetty
  {% endhint %}

1. `~/mongo_data` (b)
   * MongoDB:n datahakemisto
2. `~/redis_data` (b)
   * Redis-tietokannan datahakemisto
3. `~/overleaf_data`
   1. bin
      1. synctex (d)
         * ei käytössä uusimmassa versiossa, aiemmin käytettiin mukautettua synctex-binääriä (synctexiä käytetään lähdekoodin ja PDF:n väliseen lähdemäppäykseen)
   2. data
      1. välimuisti (e)
         * binaaritiedostovälimuisti käännöksiä varten
      2. käännökset (e)
         * latex-käännös tapahtuu täällä
      3. db.sqlite (d)
         * ei käytössä uusimmassa versiossa, aiemmin tallennettiin clsi-välimuistin tiedot (joko siirretty yksinkertaisiin muistissa oleviin karttoihin tai skannaamme levyn)
      4. db.sqlite-wal (d)
         * ei käytössä uusimmassa versiossa, katso db.sqlite
      5. tuloste (e)
         * latex-käännöksen tulosteen tallennus asiakkaalle toimittamista varten
      6. template\_files (b)
         * mallijärjestelmän kuvien esikatselut (vain Server Pro)
      7. user\_files (b)
         * projektien binaaritiedostot
      8. history (b)
         * koko projektihistorian tiedostot
   3. tmp
      1. dumpFolder (e)
         * väliaikaiset tiedostot zip-tiedostojen käsittelystä
      2. uploads (e)
         * tiedostolähetysten puskurointi (binaaritiedosto/uusi projekti zip-tiedostosta -lähetys)
      3. projectHistories (e)
         * väliaikaiset tiedostot koko projektihistorian migraatioita varten


---

# 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://overleaf-pro.ayaka.space/on-premises/fi/yllapito/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.
