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

# Data dan cadangan

Terkadang kita perlu mengubah skema data di basis data saat Overleaf berkembang; skrip migrasi digunakan untuk mengotomatisasi proses ini. 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 kasus kemungkinan sudah pernah dijumpai, namun kami tidak memberikan jaminan atas data Anda. Pastikan Anda membuat sebuah **konsisten** cadangan data Anda **sebelum** memperbarui instans Anda.

{% hint style="info" %}
Saat meningkatkan ke image Docker baru, migrasi apa pun yang telah **tidak** belum dijalankan akan dieksekusi secara otomatis, ini mungkin memerlukan waktu tergantung pada ukuran dataset Anda, memantau log akan memberi tahu Anda progresnya. Untuk informasi lebih lanjut, lihat [Pencatatan](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 lokasi terpisah:

* **Basis data MongoDB:** Di sinilah data pengguna dan proyek berada.
* **Redis:** berfungsi sebagai cache berkinerja tinggi untuk data yang sedang diproses, terutama menyimpan informasi terkait revisi 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 detail 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, **wajib** untuk mencegah pengguna menghasilkan data baru saat proses pencadangan sedang berjalan. Oleh karena itu, kami menyarankan penjadwalan jendela pemeliharaan, selama itu pengguna seharusnya tidak dapat mengakses instans atau mengedit proyek mereka.

Sebelum memulai proses pencadangan, Anda perlu membawa instans Anda offline. Dimulai dengan Server Pro `3.5.0` proses pematian mengotomatiskan penutupan situs dan pemutusan sambungan 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 melakukan ini 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 sepenuhnya berbeda.
* Mereplikasi basis data ke beberapa instans MongoDB mungkin menawarkan sedikit redundansi, tetapi tidak melindungi dari kerusakan.
* Menguji cadangan Anda adalah cara terbaik untuk memastikan cadangan tersebut lengkap dan berfungsi.
  {% endhint %}

### MongoDB

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

### Data Sistem berkas Overleaf

Untuk deployment Toolkit, jalur tempat file yang tidak dapat diedit disimpan ditentukan di `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 diaktifkan secara default untuk **baru** instalasi, pengguna yang sudah ada dapat menemukan informasi lebih lanjut mengenai 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

Paling-paling, Anda belum memiliki data berharga apa pun di instans baru. Kami tidak memiliki proses untuk menggabungkan data dari instans.

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

#### Toolkit

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

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

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

# Matikan instans baru dengan baik (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 baik
old-server$ docker stop sharelatex
old-server$ docker stop mongo redis

# Buat tar-ball
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 baik (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** file, Anda mungkin perlu menyesuaikan jalur `mongo`, `redis`, `overleaf` volume.

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

### Folder secara detail

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

* (b) sertakan 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 db redis
3. `~/overleaf_data`
   1. bin
      1. synctex (d)
         * tidak digunakan pada rilis terbaru, sebelumnya digunakan binary synctex kustom (synctex digunakan untuk pemetaan sumber antara file .tex dan pdf)
   2. data
      1. cache (e)
         * cache file biner untuk kompilasi
      2. kompilasi (e)
         * kompilasi LaTeX terjadi di sini
      3. db.sqlite (d)
         * tidak digunakan pada rilis terbaru, sebelumnya menyimpan detail cache clsi (entah 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://overleaf-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.
