> 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/dukungan/support-guides/full-project-history-migration.md).

# (Migrasi v3.5.13) Migrasi riwayat proyek lengkap

## Migrasi riwayat proyek penuh

Grup `3.5.x` rilis Community Edition mencakup [fitur Riwayat Proyek Penuh](https://www.overleaf.com/learn/latex/Using_the_History_feature) yang sudah tersedia dalam penawaran SaaS kami, [overleaf.com](http://overleaf.com/)

Setelah memperbarui instance Anda ke Overleaf CE `3.5.13`, semua proyek baru akan menggunakan Riwayat Proyek Penuh secara default. Proyek yang sudah ada akan terus menggunakan sistem History lama, sampai dimigrasikan.

{% hint style="info" %}
Jika Anda memperbarui ke `3.5.13` dan memutuskan untuk menurunkan versi ke versi sebelumnya, maka Anda harus memulihkan dari cadangan sistem penuh. Riwayat proyek yang dibuat dalam `3.5.13` tidak kompatibel dengan versi Overleaf CE sebelumnya.
{% endhint %}

Riwayat Proyek Penuh yang baru membawa beberapa peningkatan bagi pengguna:

* Ini melacak perubahan pada file biner, yang tidak didukung dalam sistem lama.
* Tersedia dukungan untuk versi berlabel.
* Secara umum sistem lebih andal, ada lebih kecil kemungkinan kehilangan data.

Lihat [dokumentasi Riwayat Proyek Penuh](https://www.overleaf.com/learn/latex/Using_the_History_feature) untuk informasi lebih lanjut tentang riwayat proyek penuh.

### Memigrasikan proyek yang sudah ada

{% stepper %}
{% step %}

#### Buat cadangan

Buat cadangan [penuh](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) instance Anda dengan snapshot konsisten dari **mongo**, **redis** dan **sharelatex** direktori.
{% endstep %}

{% step %}

#### Perbarui

Perbarui versi image sharelatex/sharelatex menjadi 3.5.13.

Toolkit: Gunakan `$ bin/upgrade` skrip untuk memperbarui toolkit ke versi terbaru dan edit **config/version** menjadi 3.5.13.
{% endstep %}

{% step %}

#### Mulai instance

Idealnya, Anda ingin mencegah pengguna mengakses instance Anda saat migrasi berlangsung, untuk menghindari kehilangan data jika Anda perlu memulihkan cadangan Anda. Lihat [Migrasi offline](https://github.com/overleaf/overleaf/wiki/Full-Project-History-Migration/#offline-migration) untuk informasi lebih lanjut tentang cara melakukannya.
{% endstep %}

{% step %}

#### Tunggu sampai semua layanan aktif dan berjalan

Tunggu sampai semua layanan aktif dan berjalan (lihat perintah di bawah)

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "curl http://localhost:3000/status"
web sharelatex hidup (api)%
```

{% endcode %}
{% endstep %}

{% step %}

#### Jalankan skrip migrasi

{% code overflow="wrap" %}

```bash
# Pengguna Overleaf Toolkit:
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; VERBOSE_LOGGING=true node scripts/history/migrate_history.js --force-clean --fix-invalid-characters --convert-large-docs-to-file"

# pengguna legacy docker-compose.yml:
$ docker exec sharelatex /bin/bash -c "cd /overleaf/services/web; VERBOSE_LOGGING=true node scripts/history/migrate_history.js --force-clean --fix-invalid-characters --convert-large-docs-to-file"
```

{% endcode %}

`--force-clean` membersihkan data riwayat proyek yang dimigrasikan sebagian dalam sistem baru, ini memungkinkan percobaan ulang migrasi untuk proyek individual yang gagal pada percobaan sebelumnya;

`--fix-invalid-characters` mengganti karakter non-printable yang tidak didukung oleh sistem riwayat baru;

`--convert-large-docs-to-file` mengonversi dokumen yang berukuran di atas ambang batas ukuran yang dapat diedit 2MB menjadi file yang tidak dapat diedit)

Hasilnya akan terlihat seperti ini:

```bash
Proyek yang Dimigrasikan  :  1
Total Proyek     :  51
Proyek Tersisa :  51
Total rekaman riwayat yang akan dimigrasikan: 98
Memulai migrasi...
Memigrasikan proyek: 63d29b5772dd80015a81bffe
hasil migrasi { upgraded: true, historyType: 'NoneWithoutConversion' }
Memigrasikan proyek: 63d29c2e72dd80015a81c0a2
hasil migrasi { upgraded: true, historyType: 'NoneWithoutConversion' }

// …

Migrasi selesai
==================
Proyek dimigrasikan:  51
Proyek gagal:  0
Selesai.
```

Jika migrasi berhasil, Anda akan mendapatkan kode keluar `0`, dan baris terakhir yang menunjukkan tidak ada kegagalan:

```bash
Proyek gagal:  0
Selesai.
```

Anda dapat membuka kembali akses untuk pengguna Anda (lihat langkah berikutnya). Jika ada kegagalan, silakan lihat bagian pemecahan masalah di bawah. Anda masih dapat membuka kembali situs jika masalahnya tidak segera diperbaiki, dan proyek yang belum dimigrasikan akan tetap menggunakan sistem riwayat lama.
{% endstep %}

{% step %}

#### Buka kembali situs

Jika Anda memilih untuk melakukan migrasi offline, maka Anda perlu membuka kembali situs. Jika Anda masih masuk, Anda perlu:

1. Klik **Admin** tombol dan pilih **Kelola Situs**
2. Klik **Buka/Tutup Editor** tab
3. Klik **Buka Kembali Editor** tombol

Jika Anda telah menutup browser, Anda perlu memulai ulang situs dengan `$ bin/up`.
{% endstep %}
{% endstepper %}

#### Migrasi offline

Untuk mencegah pengguna dapat masuk saat skrip migrasi riwayat sedang berjalan, silakan ikuti langkah-langkah berikut:

* Masuk ke instance Overleaf Anda dengan akun admin
* Klik **Admin** tombol dan pilih **Kelola Situs**
* Klik **Buka/Tutup Editor** tab
* Klik **Tutup Editor** tombol
* Klik **Putuskan sambungan semua pengguna** tombol

Setelah ini selesai, jika ada pengguna yang sedang masuk mereka akan dialihkan ke halaman pemeliharaan, dan pengguna baru mana pun yang mengunjungi halaman masuk akan melihat halaman pemeliharaan dan **tidak akan** dapat masuk.

#### Migrasi online

Skrip migrasi dapat dijalankan saat aplikasi masih berjalan. Ada beberapa pertimbangan yang perlu diperhatikan:

* Proses migrasi intensif CPU, Anda harus memantau penggunaan sumber daya saat skrip berjalan.
* Dengan `--concurrency` nilai yang tinggi, event loop pada beberapa layanan (`track-changes` khususnya) mungkin mengalami beberapa pemblokiran, yang akan menyebabkan pengalaman UX menurun. Kami merekomendasikan untuk memulai dengan nilai default `--concurrency=1` nilai.
* Anda dapat menghentikan skrip kapan saja. Menjalankannya lagi akan melanjutkan migrasi dari titik terakhir Anda berhenti. Ini berguna jika Anda lebih suka menjalankan migrasi pada jam-jam yang tidak terlalu sibuk (misalnya pada malam hari).

Rekomendasi kami adalah menutup situs dan menjalankan migrasi secara offline dalam jendela pemeliharaan ketika jumlah proyek Anda kurang dari 1000 proyek (`db.projects.count()`). Jika jumlah proyek besar Anda dapat menjalankan skrip dan memantau kemajuannya, lalu memutuskan apakah akan terus menjalankannya secara online atau offline berdasarkan kasus Anda.

#### Membersihkan data riwayat lama

Skrip untuk membersihkan data riwayat lama telah ditambahkan di Server Pro `3.5.6`, `4.0.6` dan `4.1.0`.

{% code overflow="wrap" %}

```bash
bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/history/clean_sl_history_data.js"
```

{% endcode %}

Skrip ini dapat dijalankan setelah semua proyek dimigrasikan. Skrip ini juga dapat digunakan untuk mengosongkan sebagian ruang saat melakukan migrasi online.

{% hint style="info" %}
Di Server Pro sebelum versi 3.5.13, skrip menghapus konten `docHistory` dan `docHistoryIndex` koleksi. MongoDB tidak melepaskan ruang disk setelah Anda menghapus dokumen, melainkan akan menggunakan kembali ruang tersebut untuk dokumen di masa mendatang dalam koleksi yang sama. Tidak ada yang akan menulis ke koleksi ini lagi setelah migrasi riwayat, sehingga ruang disk akan tetap tidak terpakai.

Jika Anda ingin membuat ruang disk tersedia kembali, Anda dapat memperbarui ke Server Pro 3.5.13 (saat masih menggunakan rilis 3.x) atau Server Pro 4.2.5 (saat menggunakan rilis 4.x) dan menjalankan ulang skrip pembersihan.

Skrip pembersihan sebagaimana disertakan dalam Server Pro rilis patch terbaru dari `3.5.x` dan terbaru `4.x.x` sedang menghapus koleksi sebagai langkah terakhir.

Aman untuk menjalankan ulang skrip pembersihan.
{% endhint %}

### Pemecahan masalah

Kami akan menambahkan saran pemecahan masalah di sini. Harap dicatat bahwa meskipun kami biasanya hanya menawarkan dukungan kepada pelanggan Server Pro, mengingat sifat migrasi ini, kami juga akan berusaha sebaik mungkin untuk mendukung pelanggan CE yang mengalami masalah khusus pada migrasi riwayat proyek penuh.

Jika skrip migrasi riwayat proyek penuh gagal (yaitu keluar dengan error atau mencetak jumlah proyek gagal yang bukan nol), silakan kirim detail berikut ke tim dukungan kami melalui email [support+historymigration@overleaf.com](mailto:support+historymigration@overleaf.com?subject=Full%20project%20history%20migration%20problem\&body=Instance%20Type%3A%20CE%20or%20Server%20Pro%20%28delete%20as%20appropriate%29%0A%0AInstallation%20Type%3A%20Overleaf%20toolkit%20or%20docker-compose.yml%20or%20other%20%28delete%20as%20appropriate%29%0A%0AScript%20output%3A%0A%0Abin%2Fdoctor%20output%20%28if%20using%20toolkit%29%3A%0A), dengan menyertakan:

Subjek: Masalah migrasi riwayat proyek penuh

* Jenis Instance: CE atau Server Pro (hapus yang sesuai)
* Jenis Instalasi: Overleaf toolkit atau `docker-compose.yml` atau lainnya (hapus yang sesuai)
* Versi: 3.5.x (toolkit: `$ cat config/version`)
* Output skrip migrasi (yang seharusnya berada di dalam container di `/overleaf/services/web`)
* Proyek Dimigrasikan: (sesuai output skrip migrasi)
* Total Proyek: (sesuai output skrip migrasi)
* Proyek Tersisa: (sesuai output skrip migrasi)
* Durasi migrasi:
* `bin/doctor` output (saat menggunakan toolkit)
* Versi Toolkit: `$ git rev-parse HEAD` (saat menggunakan Toolkit)

Pertimbangkan untuk melampirkan file log untuk layanan `history-v1`, `project-history` dan `track-changes` ke email. Anda dapat menemukannya di `/var/log/sharelatex` di dalam `sharelatex` container dan ekspor seperti ini:

```bash
$ docker cp sharelatex:/var/log/sharelatex/history-v1.log history-v1.log
$ docker cp sharelatex:/var/log/sharelatex/project-history.log project-history.log
$ docker cp sharelatex:/var/log/sharelatex/track-changes.log track-changes.log
```

Harap hapus informasi sensitif apa pun dari file log sebelum melampirkannya.

#### Menemukan pohon file yang rusak

Migrasi dapat gagal untuk proyek yang memiliki pohon file yang salah format (misalnya, ketika nama file kosong). Anda dapat menemukan daftar masalah ini menggunakan `find_malformed_filetrees` skrip yang memeriksa semua proyek dalam basis data:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/find_malformed_filetrees.js"
PATH BURUK: 123456789012345678901234 rootFolder.0.1.2.3
PATH BURUK: 123456789012345678901234 rootFolder.0.4.5.6
...
```

{% endcode %}

Untuk memperbaiki path yang tidak valid, gunakan `fix_malformed_filetree` skrip, jalankan perintah sekali untuk setiap path buruk:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/fix_malformed_filetree.js 123456789012345678901234 rootFolder.0.1.2.3"
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/fix_malformed_filetree.js 123456789012345678901234 rootFolder.0.4.5.6"
...
```

{% endcode %}

#### Menurunkan proyek dari riwayat proyek penuh ke riwayat lama

Jika ada proyek yang telah dimigrasikan ke riwayat proyek penuh tetapi Anda ingin kembali ke riwayat lama, gunakan `downgrade_project` skrip sebagai berikut:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; PROJECT_ID=YOUR
```

{% endcode %}


---

# 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/dukungan/support-guides/full-project-history-migration.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.
