> ## 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 S3

## Migrasi S3

<Info>
  Instruksi ini ditujukan untuk v5.x dan versi yang lebih baru. Jika Anda mengikuti panduan ini untuk versi yang lebih lama, gunakan `sharelatex` alih-alih `overleaf` pada nama path dan awalan `SHARELATEX_` alih-alih `OVERLEAF_` untuk variabel lingkungan. Untuk v6 dan versi yang lebih baru, lewati perintah `user_files` lama.
</Info>

<Check>
  <strong>Kami ingin mendengar dari Anda!</strong> Jika Anda ingin berbagi dengan kami berapa banyak file yang Anda migrasikan, total volumenya, dan berapa lama migrasi berlangsung, kirim email ke [`ayaka-notes@outlook.com`](mailto:support@overleaf.com) .
</Check>

Panduan ini akan memandu Anda melalui migrasi dari penyimpanan di disk ke object storage yang kompatibel dengan S3. Panduan ini merujuk pada bagian-bagian dokumen pengantar tentang [Penyiapan S3](/id/on-premises/configuration/overleaf-toolkit/s3).

### Persyaratan

* Object storage kompatibel S3 yang dapat dihubungi, lihat [#s3-setup](/id/on-premises/configuration/overleaf-toolkit/s3#s3-setup "mention") untuk pilihannya
* Ruang disk kosong untuk memigrasikan data yang ada, kira-kira sebesar ukuran data di disk saat ini
* Jendela pemeliharaan untuk melakukan migrasi yang sebenarnya
* Cadangan lengkap, termasuk konfigurasi, agar dapat dipulihkan darinya

### Memperkirakan ukuran disk yang diperlukan untuk migrasi

Kita dapat menggunakan `du` untuk menghitung penggunaan disk saat ini:

```shell theme={null}
docker exec sharelatex \
  du --human-readable --max-depth=0 /var/lib/overleaf/data/user_files

docker exec sharelatex \
  du --human-readable --max-depth=0 /var/lib/overleaf/data/template_files
```

Jika ruang disk yang tersedia di server saat ini tidak mencukupi, coba pasang disk lain ke server.

<Info>
  Direktori history sudah memiliki tata letak yang benar. Anda dapat mengunggah langsung dari folder sumber yang di-bind-mount, yang tidak memerlukan ruang disk tambahan.
</Info>

### Langkah-langkah migrasi

#### Langkah 0: matikan instance

Kita perlu memastikan bahwa semua file pengguna/templat akan dimigrasikan. Sebaiknya matikan instance untuk menghindari terlewatnya file yang baru diunggah.

Silakan lihat panduan kami tentang melakukan pencadangan yang konsisten untuk prosedur mematikan instance.

#### Langkah 1: tulis ulang tata letak direktori

Kita perlu menulis ulang tata letak direktori file proyek untuk mengunggahnya ke S3. Tata letak direktori untuk penyimpanan lokal di filestore adalah `<project-id>_<file-id>` dan tata letak direktori di S3 adalah `<project-id>/<file-id>`.

Berikut ini, `/srv/overleaf-s3-migration` digunakan untuk menyimpan file dalam tata letak direktori yang baru. Ganti `/srv/overleaf-bind-mount` dengan direktori host yang di-mount ke `/var/lib/overleaf`. Jalankan perintah penyalinan di host dengan izin untuk membaca dan menulis direktori-direktori ini; container tetap dalam keadaan berhenti.

Kita dapat memanfaatkan `tar` untuk menulis ulang tata letak:

```shell theme={null}
mkdir -p /srv/overleaf-s3-migration/user_files \
         /srv/overleaf-s3-migration/template_files
tar --create --directory /srv/overleaf-bind-mount/data/user_files . \
| tar --extract --directory /srv/overleaf-s3-migration/user_files \
  --transform=sx_x/x
tar --create --directory /srv/overleaf-bind-mount/data/template_files . \
| tar --extract --directory /srv/overleaf-s3-migration/template_files \
  --transform=sx_x/xg
```

#### Langkah 2: unggah file

Sesuai preferensi Anda, Anda dapat menggunakan klien S3 minio mc atau aws cli untuk mengunggah file ke object storage kompatibel S3 Anda.

**aws cli**

<Info>
  * Di sini Anda harus mengganti `overleaf-user-files`, `overleaf-template-files`, `overleaf-project-blobs`, dan `overleaf-chunks` dengan nama bucket S3 Anda.
  * Ganti juga `/srv/overleaf-bind-mount` dengan path lokal dari bind-mount `/var/lib/overleaf`. Secara default, path ini adalah `~/overleaf_data` pada deployment docker-compose.yml dan `<toolkit-checkout>/data/overleaf` saat menggunakan Toolkit.
</Info>

```shell wrap theme={null}
aws s3 sync /srv/overleaf-s3-migration/user_files s3://overleaf-user-files
aws s3 sync /srv/overleaf-s3-migration/template_files s3://overleaf-template-files

aws s3 sync /srv/overleaf-bind-mount/data/history/overleaf-project-blobs s3://overleaf-project-blobs
aws s3 sync /srv/overleaf-bind-mount/data/history/overleaf-chunks s3://overleaf-chunks
```

**minio mc**

Di sini kami menggunakan alias server "s3"; Anda mungkin memilih nama lain.

```shell wrap theme={null}
mc mirror /srv/overleaf-s3-migration/user_files s3/overleaf-user-files
mc mirror /srv/overleaf-s3-migration/template_files s3/overleaf-template-files

mc mirror /srv/overleaf-bind-mount/data/history/overleaf-project-blobs s3/overleaf-project-blobs
mc mirror /srv/overleaf-bind-mount/data/history/overleaf-chunks s3/overleaf-chunks
```

#### Langkah 3: jalankan instance yang mengarah ke S3

Tambahkan semua variabel terkait S3 ke konfigurasi Anda, sebagaimana dijelaskan di bagian [Ikhtisar variabel](/id/on-premises/configuration/overleaf-toolkit/s3#overview-of-variables) dalam panduan penyiapan [S3](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/s3).

Pertahankan bind-mount direktori data: direktori ini mungkin juga berisi kunci enkripsi Zotero atau Mendeley yang tidak dimigrasikan ke S3.

<Check>
  Harap tetap pertahankan [bind-mount disk sementara untuk file ephemeral](/id/on-premises/support/troubleshooting#running-overleaf-with-an-nfs-filesystem).
</Check>

Sekarang Anda dapat menjalankan instance dan memvalidasi migrasi:

* dapat melihat pratinjau file biner di editor
* dapat mengompilasi PDF dengan gambar
* dapat mengunggah file baru

### Rollback

Anda dapat melakukan rollback migrasi dengan mulus dengan membalik langkah-langkahnya:

1. Matikan instance
2. Salin kembali file dengan membalik urutan sumber/tujuan
3. Tulis file baru kembali ke direktori lokal menggunakan `transform` kebalikannya
4. Jalankan ulang instance dengan konfigurasi lama

```shell wrap theme={null}
# When using aws cli
aws s3 sync s3://overleaf-user-files /srv/overleaf-s3-migration/user_files
aws s3 sync s3://overleaf-template-files /srv/overleaf-s3-migration/template_files
aws s3 sync s3://overleaf-project-blobs /srv/overleaf-bind-mount/data/history/overleaf-project-blobs
aws s3 sync s3://overleaf-chunks /srv/overleaf-bind-mount/data/history/overleaf-chunks

# When using minio mc
mc mirror s3/overleaf-user-files /srv/overleaf-s3-migration/user_files
mc mirror s3/overleaf-template-files /srv/overleaf-s3-migration/template_files
mc mirror s3/overleaf-project-blobs /srv/overleaf-bind-mount/data/history/overleaf-project-blobs
mc mirror s3/overleaf-chunks /srv/overleaf-bind-mount/data/history/overleaf-chunks
```

```shell theme={null}
# Write files into local Server CE/Server Pro
tar --create --directory /srv/overleaf-s3-migration/user_files . \
| tar \
      --extract \
      --keep-old-files \
      --directory /srv/overleaf-bind-mount/data/user_files \
      --transform=sx./xx --transform=sx/x_x \
      --wildcards '*/*/*'

tar --create --directory /srv/overleaf-s3-migration/template_files . \
| tar \
      --extract \
      --keep-old-files \
      --directory /srv/overleaf-bind-mount/data/template_files \
      --transform=sx./xx --transform=sx/x_xg \
      --wildcards '*/*/*/*/pdf-converted-cache/*' \
      --wildcards '*/*/*/*/pdf' \
      --wildcards '*/*/*/*/zip'
```

<Info>
  Transform pertama menghapus folder tingkat atas. Transform kedua mengubah tata letak direktori menjadi datar. Wildcard memastikan bahwa hanya file yang diekstrak, bukan folder induknya (proyek).
</Info>


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