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

# (Migrasi v3.5.13) Migrasi riwayat proyek lengkap

## Migrasi riwayat proyek penuh

Bagian `3.5.x` rilis Edisi Komunitas mencakup [fitur Riwayat Proyek Lengkap](https://www.overleaf.com/learn/latex/Using_the_History_feature) yang sudah tersedia dalam penawaran SaaS kami, [overleaf.com](http://overleaf.com/)

Setelah Anda memperbarui instance Anda ke Overleaf CE `3.5.13`, semua proyek baru akan menggunakan Riwayat Proyek Lengkap secara default. Proyek yang sudah ada akan tetap menggunakan sistem Riwayat lama, hingga dimigrasikan.

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

Riwayat Proyek Lengkap yang baru membawa beberapa peningkatan bagi pengguna:

* Ini melacak perubahan pada file biner, yang tidak didukung dalam sistem lama.
* Ada dukungan untuk versi berlabel.
* Secara umum, sistem ini lebih tangguh, sehingga risiko kehilangan data lebih kecil.

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

### Memigrasikan proyek yang sudah ada

{% stepper %}
{% step %}

#### Buat cadangan

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

{% step %}

#### Perbarui

Perbarui versi image sharelatex/sharelatex ke 3.5.13.

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

{% step %}

#### Jalankan instance

Idealnya, Anda ingin mencegah pengguna mengakses instance Anda selama 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 hingga semua layanan aktif dan berjalan

Tunggu hingga 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 aktif (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` menghapus data riwayat proyek yang dimigrasikan sebagian dalam sistem baru, ini memungkinkan percobaan ulang migrasi untuk proyek individual yang gagal pada upaya sebelumnya;

`--fix-invalid-characters` mengganti karakter yang tidak dapat dicetak yang tidak didukung oleh sistem riwayat baru;

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

Keluaran akan terlihat seperti ini:

```bash
Proyek yang dimigrasikan  :  1
Total Proyek     :  51
Proyek tersisa :  51
Total catatan 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 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 masalah 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, 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 sudah 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 koneksi semua pengguna** tombol

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

#### Migrasi online

Dimungkinkan menjalankan skrip migrasi saat aplikasi masih berjalan. Ada beberapa hal yang perlu dipertimbangkan:

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

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

#### Bersihkan data riwayat lama

Sebuah 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 dapat dijalankan setelah semua proyek dimigrasikan. Skrip ini juga dapat digunakan untuk membebaskan sebagian ruang saat melakukan migrasi online.

{% hint style="info" %}
Di Server Pro sebelum versi 3.5.13, skrip ini menghapus konten dari `docHistory` dan `docHistoryIndex` koleksi. MongoDB tidak melepaskan ruang disk setelah Anda menghapus dokumen; sebagai gantinya, ruang tersebut akan digunakan kembali untuk dokumen mendatang dalam koleksi yang sama. Tidak ada lagi yang akan menulis ke koleksi ini setelah migrasi riwayat, jadi 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 yang disertakan dalam Server Pro pada rilis patch terbaru dari `3.5.x` dan terbaru `4.x.x` menghapus koleksi sebagai langkah terakhir.

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

### Pemecahan masalah

Kami akan menambahkan saran pemecahan masalah di sini. Harap diperhatikan bahwa meskipun biasanya kami 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 lengkap.

Jika skrip migrasi riwayat proyek lengkap 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 rincian:

Subjek: Masalah migrasi riwayat proyek lengkap

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

Pertimbangkan untuk melampirkan file log untuk `history-v1`, `project-history` dan `track-changes` layanan 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 sensor informasi sensitif apa pun dari file log sebelum melampirkannya.

#### Menemukan pohon file yang rusak

Migrasi mungkin gagal untuk proyek yang memiliki pohon file yang tidak valid (misalnya, ketika nama file kosong). Anda dapat menemukan daftar masalah ini menggunakan `find_malformed_filetrees` skrip yang memeriksa semua proyek di 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 yang bermasalah:

{% 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 versi proyek dari riwayat proyek lengkap ke riwayat lama

Jika ada proyek yang telah dimigrasikan ke riwayat proyek lengkap 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://ayakaleaf-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.
