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

# Data dan cadangan

Terkadang kita perlu mengubah skema data di basis data seiring berkembangnya Overleaf; skrip migrasi digunakan untuk mengotomatisasi proses ini. Skrip-skrip tersebut telah dijalankan pada [overleaf.com](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit) yang pertama, yang merupakan instans Overleaf terbesar di dunia, jadi sebagian besar kemungkinan sudah pernah ditemui sebelumnya, namun kami tidak memberikan jaminan atas data Anda. Pastikan Anda membuat sebuah **konsisten** cadangan data Anda **sebelum** saat memutakhirkan instans Anda.

{% hint style="info" %}
Saat memutakhirkan ke image Docker baru, setiap migrasi yang telah **tidak** belum dijalankan akan dieksekusi secara otomatis, ini mungkin memerlukan waktu tergantung ukuran dataset Anda, memantau log akan memberi tahu Anda progresnya. Untuk informasi lebih lanjut, lihat [Pencatatan log](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/logging) dokumentasi.
{% endhint %}

### Penyimpanan data

Overleaf Community Edition dan Server Pro menyimpan data mereka di tiga tempat terpisah:

* **Basis data MongoDB:** Di sinilah data pengguna dan proyek berada.
* **Redis:** berfungsi sebagai cache berperforma tinggi untuk data yang sedang diproses, terutama menyimpan informasi terkait pengeditan proyek dan kolaborasi.
* **Sistem berkas Overleaf:** menyimpan file proyek yang tidak dapat diedit (termasuk gambar) dan juga berfungsi sebagai cache disk sementara selama kompilasi proyek.

{% hint style="info" %}
Ini mungkin `~/sharelatex_data` atau `~/overleaf_data`, tergantung kapan instans Anda disiapkan.
{% endhint %}

{% hint style="success" %}
Untuk file proyek dan data riwayat proyek lengkap, kami juga mendukung backend penyimpanan yang kompatibel dengan S3.
{% endhint %}

Lihat Folder secara rinci untuk informasi lebih lanjut tentang tata letak folder di disk.

### Melakukan cadangan yang konsisten

Ada tiga penyimpanan yang perlu disertakan saat membuat cadangan yang konsisten:

* MongoDB
* Redis
* Data sistem berkas Overleaf

Untuk menghasilkan cadangan yang konsisten, hal ini **wajib** untuk mencegah pengguna membuat data baru saat proses pencadangan berjalan. Karena itu kami menyarankan menjadwalkan jendela pemeliharaan, selama itu pengguna tidak boleh dapat mengakses instans atau mengedit proyek mereka.

Sebelum Anda memulai proses pencadangan, Anda perlu membawa instans Anda offline. Untuk Server Pro `3.5.0` proses pematian mengotomatiskan penutupan situs dan pemutusan koneksi pengguna.

Untuk mematikan instans Anda, Anda perlu menjalankan `bin/docker-compose stop sharelatex` jika Anda menjalankan deployment Toolkit atau `docker compose stop sharelatex` jika Anda menjalankan Docker Compose.

Setelah `sharelatex` container dihentikan, Anda dapat memulai proses pencadangan.

Setelah proses pencadangan selesai **dengan sukses** Anda perlu memulai `sharelatex` container. Untuk melakukannya, jalankan `bin/docker-compose start sharelatex` jika Anda menjalankan deployment Toolkit atau `docker compose start sharelatex` jika Anda menjalankan Docker Compose.

{% hint style="danger" %}

* Cadangan sebaiknya disimpan di server terpisah dari server tempat instans Overleaf Anda berjalan, idealnya di lokasi yang sama sekali berbeda.
* Mereplikasi basis data ke beberapa instans MongoDB mungkin menawarkan redundansi tertentu, tetapi tidak melindungi dari kerusakan.
* Menguji cadangan Anda adalah cara terbaik untuk memastikan bahwa cadangan tersebut lengkap dan berfungsi.
  {% endhint %}

### MongoDB

MongoDB menyediakan alat baris perintah bernama [mongodump](https://docs.mongodb.com/manual/reference/program/mongodump/) yang dapat digunakan untuk membuat cadangan data pengguna dan proyek yang tersimpan di basis data.

### Data sistem berkas Overleaf

Untuk deployment Toolkit, path tempat file yang tidak dapat diedit disimpan ditentukan dalam `config/overleaf.rc` menggunakan `OVERLEAF_DATA_PATH` variabel lingkungan, tetapi, tergantung kapan instans Anda dibuat, ini mungkin `data/sharelatex`.

Menggunakan alat seperti **rsync** untuk menyalin direktori ini secara rekursif diperlukan untuk memastikan cadangan lengkap dibuat.

### Redis

Redis menyimpan sesi pengguna dan pembaruan dokumen yang tertunda sebelum dituliskan ke MongoDB.

Persistensi Append Only File (AOF) adalah konfigurasi yang direkomendasikan untuk persistensi Redis.

Pengguna Toolkit memiliki persistensi AOF yang diaktifkan secara default untuk **proyek** instalasi; pengguna yang sudah ada dapat menemukan informasi lebih lanjut tentang mengaktifkan AOF [di sini](/on-premises/id/konfigurasi/overleaf-toolkit/redis.md#enabling-append-only-file-persistence).

Jika Anda memutuskan untuk terus menggunakan snapshot RDB bersama persistensi AOF, Anda dapat menyalin file RDB ke lokasi yang aman sebagai cadangan.

### Memigrasikan data antar server

Dalam skenario terbaik, Anda belum memiliki data berharga apa pun di instans baru. Kami tidak memiliki proses untuk menggabungkan data antarinstans.

Dengan asumsi instans baru belum memiliki data, berikut beberapa langkah yang dapat Anda ikuti. Secara garis besar, kami membuat tarball dari `mongo`, `redis` dan `overleaf` volume, menyalinnya ke server baru, lalu mengekstraknya kembali di sana.

#### Toolkit

```bash
# Matikan instans lama dengan rapi
old-server$ bin/stop

# Buat tarball
old-server$ tar --create --file backup-old-server.tar config/ data/

# Salin file backup-old-server.tar dari old-server ke
# new-server menggunakan metode apa pun yang sesuai

# Matikan instans baru dengan rapi (jika sudah dijalankan)
new-server$ bin/stop

# Pindahkan data baru, Anda juga bisa menghapusnya
new-server$ mkdir backup-new-server
new-server$ mv config/ data/ backup-new-server/

# Isi kembali direktori config/data
new-server$ tar --extract --file backup-old-server.tar

# Mulai container
new-server$ bin/up
```

#### Docker Compose

```bash
# Matikan instans lama dengan rapi
old-server$ docker stop sharelatex
old-server$ docker stop mongo redis

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

# Salin file backup-old-server.tar dari old-server ke
# new-server menggunakan metode apa pun yang sesuai

# Matikan instans baru dengan rapi (jika sudah dijalankan)
new-server$ docker stop sharelatex
new-server$ docker stop mongo redis

# Pindahkan data baru, Anda juga bisa menghapusnya
new-server$ mkdir backup-new-server
new-server$ mv ~/OVERLEAF_data ~/mongo_data ~/redis_data backup-new-server/

# Isi kembali direktori data
new-server$ tar --extract --file backup-old-server.tar

# Mulai container
new-server$ docker start mongo redis
new-server$ docker start sharelatex
```

Tergantung pada **docker-compose.yml** berkas Anda, Anda mungkin perlu menyesuaikan path dari `mongo`, `redis`, `overleaf` volume.

{% hint style="info" %}
Saat dijalankan sebagai pengguna root (atau dengan sudo), tar akan mempertahankan pemilik/grup berkas dan izin, yang sangat penting saat memulihkan cadangan.
{% endhint %}

### Folder secara rinci

{% hint style="info" %}
Folder berikut memiliki petunjuk tambahan:

* (b) disertakan dalam cadangan; paling baik saat instans dihentikan untuk memastikan konsistensi
* (d) dapat dihapus
* (e) file sementara, dapat dihapus saat instans dihentikan
  {% endhint %}

1. `~/mongo_data` (b)
   * direktori data MongoDB
2. `~/redis_data` (b)
   * direktori data basis data Redis
3. `~/overleaf_data`
   1. bin
      1. synctex (d)
         * tidak digunakan pada rilis terbaru; sebelumnya digunakan biner synctex kustom (synctex digunakan untuk pemetaan sumber antara file .tex dan PDF)
   2. data
      1. cache (e)
         * cache berkas biner untuk kompilasi
      2. kompilasi (e)
         * kompilasi LaTeX berlangsung di sini
      3. db.sqlite (d)
         * tidak digunakan pada rilis terbaru; sebelumnya menyimpan detail cache clsi (baik dipindahkan ke peta sederhana dalam memori atau kami memindai disk)
      4. db.sqlite-wal (d)
         * tidak digunakan pada rilis terbaru, lihat db.sqlite
      5. output (e)
         * penyimpanan output kompilasi LaTeX untuk disajikan ke klien
      6. template\_files (b)
         * pratinjau gambar dari sistem template (hanya Server Pro)
      7. user\_files (b)
         * file biner proyek
      8. history (b)
         * file riwayat proyek lengkap
   3. tmp
      1. dumpFolder (e)
         * file sementara dari penanganan file zip
      2. uploads (e)
         * penyanggaan unggahan file (unggahan file biner/proyek-baru-dari-zip)
      3. projectHistories (e)
         * file sementara untuk migrasi riwayat proyek lengkap


---

# 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/id/pemeliharaan/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.
