Mencadangkan dan memindahkan Weblate

Cadangan tingkat proyek

Added in version 4.14.

Proyek mencadangkan semua konten terjemahan dari Weblate (proyek, komponen, terjemahan, komentar string, saran, atau pemeriksaan). Proyek ini cocok untuk mentransfer proyek ke instansi Weblate lain.

Anda dapat melakukan pencadangan proyek di OperasiCadangan. Cadangan dapat dipulihkan saat membuat proyek (lihat Menambahkan proyek dan komponen terjemahan).

Cadangan saat ini tidak menyertakan informasi dan riwayat kontrol akses.

The comments and suggestions are backed up with the username of the user who did create them. Upon import it is assigned to a matching user. If there is no user with such username, it is assigned to anonymous user.

Cadangan yang dihasilkan disimpan di server sebagaimana dikonfigurasikan oleh PROJECT_BACKUP_KEEP_DAYS dan PROJECT_BACKUP_KEEP_COUNT (bawaannya adalah menyimpan maksimal 3 cadangan selama 30 hari).

Import validation of uploaded project backups can be tuned using PROJECT_BACKUP_IMPORT_MAX_MEMBERS, PROJECT_BACKUP_IMPORT_MAX_TOTAL_UNCOMPRESSED_SIZE, PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_SIZE, PROJECT_BACKUP_IMPORT_MIN_RATIO_SIZE, and PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_RATIO.

Gunakan berkas yang dihasilkan untuk mengimpor proyek saat Menambahkan proyek dan komponen terjemahan atau di import_projectbackup.

Catatan

Pemulihan cadangan mungkin gagal jika server pemulihan memiliki rangkaian Definisi bahasa yang berbeda atau konfigurasi SIMPLIFY_LANGUAGES yang berbeda. Pemulihan akan memberi tahu Anda kode bahasa mana yang tidak dapat diproses dan Anda kemudian dapat menambahkan definisi bahasa yang hilang secara manual.

Pencadangan otomatis menggunakan BorgBackup

Weblate memiliki dukungan bawaan untuk membuat cadangan layanan menggunakan BorgBackup. Borg membuat cadangan terenkripsi hemat ruang yang dapat disimpan dengan aman di awan. Cadangan dapat dikontrol di antarmuka pengelolaan dari tab Cadangan.

Berubah pada versi 4.4.1: Basis data PostgreSQL disertakan dalam cadangan terotomatis.

Pencadangan menggunakan Borg bersifat inkremental dan Weblate dikonfigurasikan untuk menyimpan cadangan berikut:

  • Pencadangan harian selama 14 hari ke belakang

  • Pencadangan mingguan selama 8 minggu ke belakang

  • Pencadangan bulanan selama 6 bulan ke belakang

../_images/backups.webp

Kunci enkripsi Borg

BorgBackup membuat cadangan terenkripsi dan Anda tidak akan dapat memulihkannya tanpa frasa sandi. Frasa sandi dibuat saat menambahkan layanan pencadangan baru dan Anda harus menyalinnya dan menyimpannya di tempat yang aman.

Jika Anda menggunakan Penyimpanan cadangan yang disediakan oleh Weblate, harap cadangkan juga kunci SSH privat Anda karena akan digunakan untuk mengakses cadangan Anda.

Lihat juga

borg init

Menyesuaikan pencadangan

Penyimpanan cadangan yang disediakan oleh Weblate

Cara termudah untuk mencadangkan instansi Weblate Anda adalah dengan membeli layanan cadangan di weblate.org. Ini adalah panduan untuk menjalankannya:

  1. Beli Layanan cadangan di https://weblate.org/support/#backup.

  2. Masukkan kunci yang diperoleh di antarmuka pengelolaan, lihat Mengintegrasikan dukungan.

  3. Weblate terhubung ke layanan awan dan memperoleh informasi akses untuk cadangan.

  4. Aktifkan konfigurasi cadangan baru dari tab Cadangan.

  5. Cadangkan kredensial Borg Anda untuk dapat memulihkan pencadangan, lihat Kunci enkripsi Borg.

Petunjuk

Langkah manual untuk pemakaian semuanya ada demi keselamatan Anda. Tanpa persetujuan Anda, tidak ada data yang dikirim ke repositori cadangan yang diperoleh melalui proses pendaftaran.

Menggunakan penyimpanan cadangan kustom

Anda juga dapat menggunakan penyimpanan Anda sendiri untuk pencadangan. SSH dapat digunakan untuk menyimpan cadangan di destinasi jarak jauh, server target harus memasang BorgBackup.

Lihat juga

General dalam dokumentasi Borg

Sistem berkas lokal

Direkomendasikan untuk menentukan lokasi mutlak untuk rekam cadang lokal, misalnya /path/to/backup. Direktori harus dapat ditulis oleh pengguna yang menjalankan Weblate (lihat Izin sistem berkas). Jika tidak ada, Weblate akan mencoba membuatnya, tetapi memerlukan izin yang sesuai untuk melakukannya.

Petunjuk

Saat menjalankan Weblate di Docker, pastikan lokasi cadangan ditampilkan sebagai volume dari kontainer Weblate. Jika tidak, cadangan akan dibuang oleh Docker setelah memulai ulang kontainernya.

Salah satu opsi adalah menempatkan cadangan ke dalam volume yang ada, misalnya /app/data/borgbackup. Ini adalah volume yang ada dalam kontainer.

Anda juga dapat menambahkan kontainer baru untuk cadangan di berkas Docker Compose, misalnya dengan menggunakan /borgbackup:

services:
  weblate:
    volumes:
      - /home/weblate/data:/app/data
      - /home/weblate/borgbackup:/borgbackup

The directory where backups will be stored has to be owned by UID 1000, otherwise Weblate won’t be able to write the backups there.

Pencadangan jarak jauh

Untuk membuat rekam cadang jarak jauh, Anda harus memasang BorgBackup ke server lain yang dapat diakses untuk penyebaran Weblate Anda melalui SSH menggunakan kunci SSH Weblate:

  1. Siapkan server tempat cadangan Anda akan disimpan.

  2. Pasang server SSH di dalamnya (Anda akan mendapatkannya secara bawaan di sebagian besar distribusi Linux).

  3. Pasang BorgBackup pada server tersebut. Kebanyakan distribusi Linux memiliki paket yang tersedia (lihat Installation).

  4. Pilih pengguna yang sudah ada atau buat pengguna baru yang akan digunakan untuk pencadangan.

  5. Tambahkan kunci SSH Weblate ke berkas .ssh/authorized_keys pengguna, sehingga Weblate dapat men-SSH ke server tanpa kata sandi (lihat Kunci SSH Weblate).

  6. Buat direktori yang dapat ditulis oleh pengguna tempat Weblate dapat menyiapkan repositori cadangan Borg dari jarak jauh, misalnya di direktori beranda (yaitu /home/borg/backups).

  7. Konfigurasikan lokasi pencadangan di Weblate sebagai user@host:/home/borg/backups atau ssh://user@host:port/home/borg/backups.

  8. Once enabled, the backups will be triggered automatically daily. You can also manually trigger a backup from the Weblate UI or using backup.

Petunjuk

Penyimpanan cadangan yang disediakan oleh Weblate memberi Anda pencadangan jarak jauh secara otomatis.

Memulihkan dari BorgBackup

  1. Pulihkan akses ke repositori cadangan Anda dan siapkan kata sandi cadangan Anda.

  2. Buat daftar semua cadangan di server menggunakan borg list REPOSITORY.

  3. Pulihkan cadangan yang diinginkan ke direktori saat ini dengan menggunakan borg extract REPOSITORY::ARCHIVE.

  4. Pulihkan basis data dari buangan SQL yang ditempatkan di direktori backup di dir data Weblate (lihat Data yang dibuang untuk cadangan).

  5. Salin konfigurasi Weblate (backups/settings.py, lihat Data yang dibuang untuk cadangan) ke lokasi yang benar, lihat Menyesuaikan konfigurasi.

    Ketika menggunakan kontainer Docker, berkas pengaturan sudah disertakan di dalam kontainer dan Anda harus memulihkan variabel lingkungan yang asli. Berkas environment.yml dapat membantu Anda dalam hal ini (lihat Data yang dibuang untuk cadangan).

  6. Salin seluruh direktori data yang dipulihkan ke lokasi yang dikonfigurasikan oleh DATA_DIR.

    Saat menggunakan kontainer Docker, tempatkan data ke dalam volume data, lihat Volume kontainer Docker.

    Pastikan berkas memiliki kepemilikan dan izin yang benar, lihat Izin sistem berkas.

Sesi Borg mungkin terlihat seperti ini:

$ borg list /tmp/xxx
Enter passphrase for key /tmp/xxx:
2019-09-26T14:56:08 Thu, 2019-09-26 14:56:08 [de0e0f13643635d5090e9896bdaceb92a023050749ad3f3350e788f1a65576a5]
$ borg extract /tmp/xxx::2019-09-26T14:56:08
Enter passphrase for key /tmp/xxx:

Lihat juga

Restoring Docker based setup

The following steps assume the official Docker Compose setup using the bundled PostgreSQL and Valkey services, see Memasang menggunakan Docker. If your deployment uses an external database or a customized Compose file, adapt the database and volume steps to that environment.

Start with a Docker Compose checkout matching the restored deployment. Restore your original Compose overrides, secrets, and environment variables. The environment.yml file from Data yang dibuang untuk cadangan can help with this, but it is not imported automatically.

  1. Restore the backup archive using Memulihkan dari BorgBackup or unpack your manual backup so that the Weblate data directory and backups/database.sql are available.

  2. Stop the services which can write to the database or data volume:

    docker compose stop weblate cache
    
  3. Recreate the PostgreSQL volume.

    docker compose stop database
    docker compose rm -v database
    docker volume remove weblate-docker_postgres-data
    

    The volume name depends on the Compose project name and can differ from weblate-docker_postgres-data. Check your setup before removing any volume.

  4. Start the database service:

    docker compose up -d database
    
  5. Restore the database dump:

    cat backups/database.sql | docker compose exec -T database psql --username weblate --dbname weblate
    

    Check that the database name matches POSTGRES_DB and the user matches POSTGRES_USER in your Compose configuration.

  6. Restore the Weblate data directory to the Docker data volume mounted as /app/data, see Volume kontainer Docker. Files in this volume have to be owned by UID 1000, see Izin sistem berkas.

  7. Start the remaining services and follow the logs:

    docker compose up -d
    docker compose logs -f
    

    The Weblate container performs database migrations on startup. If you are also upgrading Weblate, follow Meningkatkan kontainer Docker.

  8. Refresh the repositories after the restore:

    docker compose exec --user weblate weblate weblate updategit --all
    

Pencadangan manual

Bergantung pada apa yang ingin Anda simpan, cadangkan jenis data yang disimpan Weblate di masing-masing tempat.

Petunjuk

Jika Anda melakukan pencadangan manual, Anda mungkin ingin membungkam peringatan Weblate tentang kurangnya pencadangan dengan menambahkan weblate.I028 ke SILENCED_SYSTEM_CHECKS di settings.py atau WEBLATE_SILENCED_SYSTEM_CHECKS untuk Docker.

SILENCED_SYSTEM_CHECKS.append("weblate.I028")

Basis data

Lokasi penyimpanan sesungguhnya bergantung pada pengaturan basis data Anda.

Petunjuk

Basis data adalah penyimpanan yang paling penting. Siapkan pencadangan basis data Anda secara teratur. Tanpa basis data, semua terjemahan akan hilang.

Pencadangan basis data asli

The recommended approach is to save a dump of the database using database-native tools such as pg_dump. It usually performs better than Django backup, and it restores complete tables with all their data.

Anda dapat memulihkan cadangan ini di versi Weblate yang lebih baru. Versi ini akan menjalankan semua migrasi yang diperlukan saat dijalankan di migrate. Silakan lihat Meningkatkan Weblate untuk informasi terperinci lebih lanjut tentang cara meningkatkan antar versi.

Pencadangan basis data Django

Sebagai alternatif, Anda dapat mencadangkan basis data Anda menggunakan perintah Django dumpdata. Dengan cara tersebut, cadangan bersifat agnostik basis data dan dapat digunakan jika Anda ingin mengubah backend basis data.

Sebelum memulihkan basis data, Anda harus menjalankan versi Weblate yang sama persis dengan versi cadangan. Hal ini diperlukan karena struktur basis data dapat berubah di setiap rilis dan dapat mengakibatkan kerusakan data. Setelah memasang versi yang sama, jalankan semua migrasi basis data menggunakan migrate.

Setelah itu, beberapa entri akan dibuat di dalam basis data dan Anda akan memilikinya dalam pencadangan basis data juga. Pendekatan yang direkomendasikan adalah menghapus entri tersebut secara manual dengan menggunakan pengelolaan shell (lihat Memanggil perintah pengelolaan):

weblate shell
>>> from weblate.auth.models import User
>>> User.objects.get(username='anonymous').delete()

Berkas

Jika Anda memiliki ruang pencadangan yang cukup, silakan cadangkan seluruh DATA_DIR. Ini adalah taruhan yang aman bahkan jika terdapat beberapa berkas yang tidak Anda inginkan. Bagian berikut ini menjelaskan apa yang harus Anda cadangkan dan apa yang bisa Anda lewati secara rinci.

Data yang dibuang untuk cadangan

Berubah pada versi 4.7: Buangan lingkungan ditambahkan sebagai environment.yml untuk membantu dalam pemulihan di lingkungan Docker.

Disimpan di DATA_DIR /backups.

Weblate membuang berbagai data di sini, dan Anda dapat menyertakan berkas ini untuk pencadangan yang lebih lengkap. Berkas ini diperbarui setiap hari (memerlukan server Celery beats yang berjalan, lihat Tugas latar belakang menggunakan Celery). Saat ini, berkas ini mencakup:

  • Pengaturan Weblate sebagai settings.py (ada juga versi yang diluaskan di settings-expanded.py).

  • Pencadangan basis data PostgreSQL sebagai database.sql.

  • Buangan lingkungan sebagai environment.yml.

Pencadangan basis data disimpan sebagai teks biasa secara bawaan, tetapi mereka juga dapat dikompresi atau seluruhnya dilewati menggunakan DATABASE_BACKUP.

Untuk memulihkan cadangan basis data, muat menggunakan alat basis data, misalnya:

psql --file=database.sql weblate

Repositori kontrol versi

Disimpan di DATA_DIR /vcs.

Repositori kontrol versi berisi salinan repositori hulu Anda dengan perubahan Weblate. Jika Anda mengaktifkan Dorong dalam komit untuk semua komponen terjemahan Anda, semua perubahan Weblate akan disertakan di hulu. Tidak perlu mencadangkan repositori di sisi Weblate karena dapat dikloning ulang dari lokasi hulu tanpa kehilangan data.

Kunci SSH dan GPG

Disimpan di DATA_DIR /ssh dan DATA_DIR /home.

Jika Anda menggunakan kunci SSH atau GPG yang dihasilkan oleh Weblate, Anda harus mencadangkan lokasi ini. Jika tidak, Anda akan kehilangan kunci privat dan harus membuat ulang kunci yang baru.

Generated SSH wrapper scripts are stored in CACHE_DIR and do not need to be backed up.

Berkas yang diunggah pengguna

Disimpan di DATA_DIR /media.

Anda harus mencadangkan semua berkas yang diunggah pengguna (misalnya Screenshots and visual context).

Tugas Celery

Antrian tugas Celery mungkin berisi beberapa informasi yang biasanya tidak diperlukan untuk cadangan. Paling Anda akan kehilangan pembaruan yang belum diproses ke memori terjemahan. Dianjurkan untuk melakukan pembaruan fulltext atau repositori pada saat pemulihan, sehingga tidak akan ada masalah dalam kehilangan ini.

Baris perintah untuk pencadangan manual

Dengan menggunakan pekerjaan cron, Anda dapat mengatur perintah Bash untuk dieksekusi setiap hari, misalnya:

$ tar -Jcf ~/backup/weblate-backup-$(date -u +%Y-%m-%d_%H%M%S).xz backups vcs ssh home media fonts secret

Anda dapat menyesuaikan daftar map dan berkas dengan kebutuhan Anda. Untuk menghindari penyimpanan memori terjemahan (di map pencadangan), Anda dapat menggunakan:

$ tar -Jcf ~/backup/weblate-backup-$(date -u +%Y-%m-%d_%H%M%S).xz backups/database.sql backups/settings.py vcs ssh home media fonts secret

Memulihkan pencadangan manual

  1. Pulihkan semua data yang telah Anda cadangkan.

  2. Perbarui semua repositori menggunakan updategit.

    weblate updategit --all
    

Memindahkan pemasangan Weblate

Pindahkan pemasangan Anda ke sistem lain dengan mengikuti petunjuk pencadangan dan pemulihan di atas.