> 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/s3-migration.md).

# Migrasi S3

## Migrasi S3

{% hint style="info" %}
Petunjuk ini untuk v5.x dan yang lebih baru. Jika Anda mengikuti panduan ini untuk versi yang lebih lama, silakan gunakan `sharelatex` alih-alih `Overleaf` dalam nama path dan `SHARELATEX_` awalan alih-alih `OVERLEAF_` untuk variabel lingkungan.
{% endhint %}

{% hint style="warning" %}
Pelanggan Server Pro: Harap hubungi dukungan sebelum Anda memigrasikan data Anda ke S3.
{% endhint %}

{% hint style="success" %}
**Kami akan senang mendengar dari Anda!** Jika Anda ingin berbagi dengan kami berapa banyak file yang Anda migrasikan, total volumenya, dan berapa lama migrasi berlangsung, kirim email ke [`support@overleaf.com`](mailto:support@overleaf.com) .
{% endhint %}

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

### Persyaratan

* Penyimpanan objek yang kompatibel dengan S3 untuk dihubungi, lihat [S3](/on-premises/id/konfigurasi/overleaf-toolkit/s3.md#s3-setup) untuk opsi
* Ruang disk kosong untuk memigrasikan data yang sudah ada, kira-kira sebesar ukuran saat ini di disk
* Jendela pemeliharaan untuk melakukan migrasi sebenarnya
* Cadangan penuh, termasuk konfigurasi, untuk memungkinkan pemulihan darinya

### Perkirakan ukuran disk yang dibutuhkan untuk migrasi

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

```shell
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 Anda tidak memiliki cukup ruang disk yang tersedia di server saat ini, coba pasang disk lain ke server.

{% hint style="info" %}
Direktori riwayat sudah memiliki tata letak yang benar. Anda dapat mengunggah langsung dari folder sumber yang di-mount dengan bind, yang tidak memerlukan ruang disk tambahan.
{% endhint %}

### Langkah-langkah migrasi

#### Langkah 0 matikan instance

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

Silakan lihat panduan kami tentang melakukan cadangan yang konsisten untuk prosedur pemadaman.

#### Langkah 1 ubah 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.

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

```shell
mkdir -p /srv/overleaf-s3-migration/user_files \
         /srv/overleaf-s3-migration/template_files
docker exec sharelatex \
  tar --create --directory /var/lib/overleaf/data/user_files . \
| tar --extract --directory /srv/overleaf-s3-migration/user_files \
  --transform=sx_x/x
docker exec sharelatex \
  tar --create --directory /var/lib/overleaf/data/template_files . \
| tar --extract --directory /srv/overleaf-s3-migration/template_files \
  --transform=sx_x/xg
```

#### Langkah 2 unggah file

Tergantung preferensi Anda, Anda dapat menggunakan klien S3 minio mc atau aws cli untuk mengunggah file ke penyimpanan objek Anda yang kompatibel dengan S3.

**aws cli**

{% hint style="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 `/var/lib/overleaf` bind-mount. Secara bawaan, ini adalah `~/overleaf_data` dalam deployment docker-compose.yml dan `<toolkit-checkout>/data/overleaf` saat menggunakan Toolkit.
  {% endhint %}

{% code overflow="wrap" %}

```shell
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
```

{% endcode %}

**minio mc**

Kami menggunakan alias server "s3" di sini, Anda mungkin telah memilih nama lain.

{% code overflow="wrap" %}

```shell
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
```

{% endcode %}

#### Langkah 3 mulai instance yang mengarah ke S3

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

Untuk deployment Docker Compose, Anda juga dapat menghapus bind-mount untuk direktori data dari bagian volumes.

{% hint style="success" %}
Harap tetap pertahankan [bind-mount dari disk scratch untuk file sementara](/on-premises/id/dukungan/troubleshooting.md#running-overleaf-with-an-nfs-filesystem) tetap ada.
{% endhint %}

Sekarang Anda dapat memulai 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. Cerminkan kembali file dengan membalik urutan sumber/tujuan
3. Tulis file baru kembali ke direktori lokal menggunakan `transformasi invers`
4. Mulai ulang instance dengan konfigurasi lama

{% code overflow="wrap" %}

```shell
# Saat menggunakan 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

# Saat menggunakan 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
```

{% endcode %}

```shell
# Menulis file ke Server CE/Server Pro lokal
tar --create --directory /srv/overleaf-s3-migration/user_files . \
| docker exec --interactive sharelatex \
    tar \
      --extract \
      --keep-old-files \
      --directory /var/lib/overleaf/data/user_files \
      --transform=sx./xx --transform=sx/x_x \
      --wildcards '*/*/*'

tar --create --directory /srv/overleaf-s3-migration/template_files . \
| docker exec --interactive sharelatex \
    tar \
      --extract \
      --keep-old-files \
      --directory /var/lib/overleaf/data/template_files \
      --transform=sx./xx --transform=sx/x_xg \
      --wildcards '*/*/*/*/pdf-converted-cache/*' \
      --wildcards '*/*/*/*/pdf' \
      --wildcards '*/*/*/*/zip'
```

{% hint style="info" %}
Transformasi pertama menghapus folder tingkat atas. Transformasi kedua mengubah tata letak direktori menjadi datar. Wildcard memastikan bahwa hanya file yang diekstrak, bukan folder induknya (proyek).
{% endhint %}


---

# 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/s3-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.
