Skip to main content

Migrasi S3

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.
Kami ingin 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 ayaka-notes@outlook.com .
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.

Persyaratan

  • Object storage kompatibel S3 yang dapat dihubungi, lihat #s3-setup 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:
Jika ruang disk yang tersedia di server saat ini tidak mencukupi, coba pasang disk lain ke server.
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.

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:

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
  • 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.
minio mc Di sini kami menggunakan alias server “s3”; Anda mungkin memilih nama lain.

Langkah 3: jalankan instance yang mengarah ke S3

Tambahkan semua variabel terkait S3 ke konfigurasi Anda, sebagaimana dijelaskan di bagian Ikhtisar variabel dalam panduan penyiapan S3. Pertahankan bind-mount direktori data: direktori ini mungkin juga berisi kunci enkripsi Zotero atau Mendeley yang tidak dimigrasikan ke S3. 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
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).
Terakhir diubah pada 5 Oktober 2026