> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# (Migrasi v3.5.13) Migrasi riwayat proyek lengkap

## Migrasi riwayat proyek lengkap

Rilis `3.5.x` dari Community Edition menyertakan [fitur Full Project History](https://www.overleaf.com/learn/latex/Using_the_History_feature) yang sudah tersedia dalam penawaran SaaS kami, [overleaf.com](http://overleaf.com/)

Setelah meningkatkan instans Anda ke Overleaf CE `3.5.13`, semua proyek baru akan menggunakan Full Project History secara default. Proyek yang sudah ada akan tetap menggunakan sistem History lama hingga proyek tersebut dimigrasikan.

<Info>
  Jika Anda meningkatkan ke `3.5.13` lalu memutuskan untuk menurunkan versi ke versi sebelumnya, Anda harus memulihkan dari cadangan sistem lengkap. Riwayat proyek yang dibuat di `3.5.13` tidak kompatibel dengan versi Overleaf CE sebelumnya.
</Info>

Full Project History yang baru membawa beberapa peningkatan bagi pengguna:

* Fitur ini melacak perubahan pada file biner, yang tidak didukung di sistem lama.
* Terdapat dukungan untuk versi berlabel.
* Sistem ini secara umum lebih tangguh, sehingga kemungkinan kehilangan data lebih kecil.

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

### Memigrasikan proyek yang sudah ada

<Steps>
  <Step title="Buat cadangan">
    Buat [cadangan](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) lengkap instans Anda dengan snapshot yang konsisten dari direktori **mongo**, **redis**, dan **sharelatex**.
  </Step>

  <Step title="Perbarui">
    Perbarui versi image sharelatex/sharelatex ke 3.5.13.

    Toolkit: Gunakan skrip `$ bin/upgrade` untuk meningkatkan toolkit ke versi terbaru dan edit **config/version** menjadi 3.5.13.
  </Step>

  <Step title="Jalankan instans">
    Idealnya, Anda sebaiknya mencegah pengguna mengakses instans Anda selama migrasi berlangsung, untuk menghindari kehilangan data jika Anda perlu memulihkan cadangan. Lihat [Migrasi offline](https://github.com/overleaf/overleaf/wiki/Full-Project-History-Migration/#offline-migration) untuk informasi lebih lanjut tentang cara melakukannya.
  </Step>

  <Step title="Tunggu hingga semua layanan aktif dan berjalan">
    Tunggu hingga semua layanan aktif dan berjalan (lihat perintah di bawah)

    ```bash wrap theme={null}
    $ bin/docker-compose exec sharelatex /bin/bash -c "curl http://localhost:3000/status"
    web sharelatex is alive (api)%
    ```
  </Step>

  <Step title="Jalankan skrip migrasi">
    ```bash wrap theme={null}
    # Overleaf Toolkit users:
    $ 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"

    # legacy docker-compose.yml users:
    $ 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"
    ```

    `--force-clean` menghapus data riwayat proyek yang termigrasi sebagian di sistem baru, sehingga memungkinkan migrasi diulang untuk proyek-proyek individual yang gagal pada percobaan 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 melebihi ambang ukuran yang dapat diedit sebesar 2MB menjadi file yang tidak dapat diedit)

    Output-nya akan terlihat seperti ini:

    ```bash theme={null}
    Migrated Projects  :  1
    Total Projects     :  51
    Remaining Projects :  51
    Total history records to migrate: 98
    Starting migration...
    Migrating project: 63d29b5772dd80015a81bffe
    migration result { upgraded: true, historyType: 'NoneWithoutConversion' }
    Migrating project: 63d29c2e72dd80015a81c0a2
    migration result { upgraded: true, historyType: 'NoneWithoutConversion' }

    // …

    Migration complete
    ==================
    Projects migrated:  51
    Projects failed:  0
    Done.
    ```

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

    ```bash theme={null}
    Projects failed:  0
    Done.
    ```

    Anda dapat membuka kembali akses untuk pengguna Anda (lihat langkah berikutnya). Jika terdapat kegagalan, silakan lihat bagian pemecahan masalah di bawah. Anda tetap dapat membuka kembali situs jika masalah tidak segera diperbaiki, dan proyek yang belum dimigrasikan akan tetap menggunakan sistem riwayat lama.
  </Step>

  <Step title="Buka kembali situs">
    Jika Anda memilih untuk melakukan migrasi offline, Anda perlu membuka kembali situs. Jika Anda masih login, Anda perlu:

    1. Klik tombol **Admin** dan pilih **Manage Site**
    2. Klik tab **Open/Close Editor**
    3. Klik tombol **Reopen Editor**

    Jika Anda telah menutup browser, Anda perlu memulai ulang situs dengan `$ bin/up`.
  </Step>
</Steps>

#### Migrasi offline

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

* Masuk ke instans Overleaf Anda dengan akun admin
* Klik tombol **Admin** dan pilih **Manage Site**
* Klik tab **Open/Close Editor**
* Klik tombol **Close Editor**
* Klik tombol **Disconnect all users**

Setelah ini dilakukan, pengguna yang sedang login akan diarahkan ke halaman pemeliharaan, dan pengguna baru yang mengunjungi halaman login akan melihat halaman pemeliharaan dan **tidak** akan dapat login.

#### Migrasi online

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

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

Rekomendasi kami adalah menutup situs dan menjalankan migrasi secara offline dalam jendela pemeliharaan jika 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 melanjutkannya 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`.

```bash wrap theme={null}
bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/history/clean_sl_history_data.js"
```

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

<Info>
  Di Server Pro sebelum versi 3.5.13, skrip ini menghapus isi koleksi `docHistory` dan `docHistoryIndex`. MongoDB tidak melepaskan ruang disk setelah Anda menghapus dokumen; sebaliknya, MongoDB akan menggunakan kembali ruang tersebut untuk dokumen-dokumen berikutnya dalam koleksi yang sama. Tidak ada yang akan menulis ke koleksi ini lagi setelah migrasi riwayat, sehingga ruang disk tersebut akan tetap tidak terpakai.

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

  Skrip pembersihan yang disertakan dalam rilis patch terbaru Server Pro `3.5.x` dan `4.x.x` terbaru menghapus (drop) koleksi tersebut sebagai langkah terakhir.

  Skrip pembersihan aman untuk dijalankan ulang.
</Info>

### Pemecahan Masalah

Kami akan menambahkan saran pemecahan masalah di sini. Harap diperhatikan 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 terkait migrasi riwayat proyek lengkap.

Jika skrip migrasi riwayat proyek lengkap gagal (yaitu keluar dengan error atau mencetak jumlah proyek gagal yang tidak nol), silakan kirimkan 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), yang merinci:

Subjek: Full project history migration problem

* Jenis Instans: 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`)

* Output skrip migrasi (yang seharusnya berada di dalam kontainer di bawah `/overleaf/services/web`)

* Migrated Projects: (sesuai output skrip migrasi)

* Total Projects: (sesuai output skrip migrasi)

* Remaining Projects: (sesuai output skrip migrasi)

* Durasi migrasi:

* Output `bin/doctor` (jika menggunakan toolkit)

* Versi Toolkit: `$ git rev-parse HEAD` (jika 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 kontainer `sharelatex` dan mengekspornya seperti ini:

```bash theme={null}
$ 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 sembunyikan informasi sensitif apa pun dari file log sebelum melampirkannya.

#### Menemukan pohon file yang rusak

Migrasi dapat gagal untuk proyek yang memiliki pohon file yang tidak valid (misalnya, ketika nama file kosong). Anda dapat menemukan daftar masalah ini menggunakan skrip `find_malformed_filetrees` yang memeriksa semua proyek di database:

```bash wrap theme={null}
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web; node scripts/find_malformed_filetrees.js"
BAD PATH: 123456789012345678901234 rootFolder.0.1.2.3
BAD PATH: 123456789012345678901234 rootFolder.0.4.5.6
...
```

Untuk memperbaiki path yang tidak valid, gunakan skrip `fix_malformed_filetree`, dengan menjalankan perintah satu kali untuk setiap path yang rusak:

```bash wrap theme={null}
$ 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"
...
```

#### Menurunkan 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 skrip `downgrade_project` sebagai berikut:

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


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.