備份和移動 Weblate

專案層級備份

在 4.14 版被加入.

專案會從 Weblate 備份所有翻譯內容(專案、元件、翻譯、字串評論、建議或檢查)。這適合用在轉移專案到另一個 Weblate 翻譯平台。

您可以在 操作備份 中進行專案備份。在建立專案時可以還原備份(參閱 新增翻譯專案和元件)。

備註

自 2026.7 版起,也可以透過 Weblate 的 REST API 建立、列出及下載專案備份;

目前備份資料不包含存取控制與歷史資訊。

留言及建議會連同建立者的使用者名稱一起備份。匯入時,系統會將內容指派給使用者名稱相符的使用者;如果找不到相符的使用者,則會指派給匿名使用者。

產生的備份會依 PROJECT_BACKUP_KEEP_DAYSPROJECT_BACKUP_KEEP_COUNT 的設定保留在伺服器上(預設最多保留 3 個備份,並保留 30 天)。

可以使用 PROJECT_BACKUP_IMPORT_MAX_MEMBERSPROJECT_BACKUP_IMPORT_MAX_TOTAL_UNCOMPRESSED_SIZEPROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_SIZEPROJECT_BACKUP_IMPORT_MIN_RATIO_SIZEPROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_RATIO 來調整上傳專案備份的匯入驗證。

新增翻譯專案和元件 時或透過 import_projectbackup 使用產生的檔案匯入專案。

備註

如果還原伺服器的 語言定義 集合或 SIMPLIFY_LANGUAGES 設定不同,可能無法還原備份。還原程序會指出無法處理的語言代碼,您可以再手動新增缺少的語言定義。

使用 BorgBackup 自動備份

Weblate 內建了對使用 BorgBackup 建立服務備份的支援。 Borg 建立了節省空間的加密備份,可以安全地儲存在雲中。可以從管理介面中的 Backups 分頁上控制備份。

在 4.4.1 版的變更: PostgreSQL 資料庫包含在自動備份中。

使用 Borg 的備份是遞增的, Weblate 設定為保留後面的備份:

  • 近 14 日的每日備份

  • 近 8 週的每週備份

  • 近 6 個月的每月備份

../_images/backups.webp

Borg 加密金鑰

BorgBackup 建立加密的備份,如果沒有密碼,您將無法還原它們。密碼是在新增新的備份服務時產生的,您應該複製它並將其儲存在一個安全的地方。

如果您使用 Weblate 支援備份儲存,也請備份私密 SSH 金鑰,因為存取備份時會用到它。

也參考

borg init

自訂備份

Weblate 支援備份儲存

備份您的 Weblate 執行個體最簡單方式是在 weblate.org 購買 備份服務 。這是您如何讓它執行起來的方式:

  1. https://weblate.org/support/#backup 購買 備份服務

  2. 在管理介面輸入得到的金鑰,請參閱 整合支援

  3. Weblate 將連線到雲端服務,並取得備份的存取資訊。

  4. Backups 標籤開啟新的備份設定。

  5. 備份您的 Borg 憑證以至可從憑證還原您的備份,參閱: Borg 加密金鑰

提示

為了安全起見,有開啟所有東西的手動步驟。沒有您的同意,就不會有資料傳送到透過註冊步驟得到的備份儲存庫。

使用使用者的備份儲存

也可以使用自己的儲存來備份。 SSH 可以用於在遠端目的地儲存備份,目標伺服器需要安裝 BorgBackup

也參考

General 在 Borg 說明文件中

本機檔案系統

建議去指定本機備份的絕對路徑,例如 /path/to/backup。該目錄必須可由執行 weblate 的使用者寫入(請參閱 檔案系統權限)。在目錄不存在的情況下,Weblate 會嘗試新增它,但需要適當的權限才能這麼做。

提示

在 Docker 中執行 Weblate時,請確保備份位置揭露為來自 Weblate 容器的一個儲存區。否則,備份檔案將在其所在的容器重啟時被 Docker 丟棄。

您可以將備份放入現有的磁碟區,例如 /app/data/borgbackup;這是容器中現有的磁碟區。

您也可以在 Docker 的編寫檔案中為備份目的新增一個新的容器,例如使用 /borgbackup:

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

儲存備份的目錄必須屬於 UID 1000,否則 Weblate 無法將備份寫入其中。

遠端備份

要建立遠端備份,您必須將 BorgBackup 安裝到另一個伺服器上,確保它可接受透過 SSH 金鑰的連線:

  1. 準備一個您的備份將用來存放的伺服器。

  2. 將其安裝 SSH 服務(在大部分的 Linux 發行版本中您將能預設的取得)。

  3. 安裝 BorgBackup 在伺服器中。大部分的 Linux 發行版本擁有可取得的套件(參閱 Installation)。

  4. 選擇一個現有的使用者或建立新的使用者將於備份使用。

  5. 將 Weblate SSH 金鑰加入使用者的 .ssh/authorized_keys 檔案,讓 Weblate 可以不使用密碼即透過 SSH 連線至伺服器(請參閱 Weblate SSH 金鑰)。

  6. 建立 Weblate 可以在主目錄(即 /home/borg/backups)遠端建立 Borg 備份儲存庫的使用者可寫的目錄。

  7. 在 Weblate 中將備份位置設為 user@host:/home/borg/backupsssh://user@host:port/home/borg/backups

  8. 啟用後,系統會每天自動觸發備份。您也可以從 Weblate 使用者介面,或使用 backup 手動觸發備份。

提示

Weblate 支援備份儲存 為您提供自動化遠端備份,無需費力。

從 BorgBackup 復原備份

  1. 還原功能會存取您的備份儲存庫,並準備備份密碼。

  2. borg list REPOSITORY 列出伺服器上的所有備份。

  3. 使用 borg extract REPOSITORY::ARCHIVE 將所需備份還原到目前目錄。

  4. 從放置在 Weblate 資料目錄下 backup 目錄中的 SQL 備份中還原資料庫(請參閱 下載的資料用於備份)。

  5. 將 Weblate 設定 ( backups/settings.py,請參閱 下載的資料用於備份 )複製到正確的位置,請參閱 調整設定

    當使用 Docker 容器時,設定檔已經包含在容器中,您應該還原原始的環境變數。 environment.yml 檔案或許能幫助您(參閱 下載的資料用於備份)。

  6. 將整個儲存的資料目錄複製到 DATA_DIR 所設定的位置。

    使用 Docker 容器時,將資料置於資料磁碟區,見 Docker 容器儲存區

    請確認檔案是否擁有正確的擁有權或權限,參閱 檔案系統權限

Borg 工作階段可能看上去是這個樣子的:

$ 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:

還原以 Docker 為基礎的安裝環境

下列步驟假設您使用官方 Docker Compose 設定及隨附的 PostgreSQL 和 Valkey 服務,請參閱 使用 Docker 安裝。如果您的部署使用外部資料庫或自訂 Compose 檔案,請依該環境調整資料庫及磁碟區步驟。

請先使用與要還原之部署相符的 Docker Compose 簽出版本。還原原始的 Compose 覆寫設定、機密資訊及環境變數。下載的資料用於備份environment.yml 檔案可以協助完成這項工作,但不會自動匯入。

  1. 使用 從 BorgBackup 復原備份 還原備份封存檔,或解壓縮手動備份,確保 Weblate 資料目錄及 backups/database.sql 可供使用。

  2. 停止可以寫入資料庫或資料儲存區的服務:

    docker compose stop weblate cache
    
  3. 重新建立 PostgreSQL 儲存區。

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

    磁碟區名稱取決於 Compose 專案名稱,可能不是 weblate-docker_postgres-data。移除任何磁碟區前,請先檢查自己的設定。

  4. 啟動資料庫服務:

    docker compose up -d database
    
  5. 還原資料庫傾印:

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

    確認資料庫名稱與 POSTGRES_DB 相符,且使用者與 Compose 設定中的 POSTGRES_USER 相符。

  6. 將 Weblate 資料目錄還原到掛載為 /app/data 的 Docker 資料磁碟區,見 Docker 容器儲存區。此磁碟區中的檔案必須為 UID 1000 所有,見 檔案系統權限

  7. 啟動其餘服務並查看記錄:

    docker compose up -d
    docker compose logs -f
    

    Weblate 容器在啟動時執行資料庫移轉。如果您也在升級 Weblate,請遵照 升級 Docker 容器

  8. 還原後重新整理儲存庫:

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

手動備份

請根據要儲存的內容,備份 Weblate 在各個位置儲存的相應資料類型。

提示

如果您正進行手動備份,您也許想要關閉Weblate 關於缺乏備份的警告,方法是新增 weblate.I028settings.py 中的 SILENCED_SYSTEM_CHECKS;對於Docker,則是 WEBLATE_SILENCED_SYSTEM_CHECKS

SILENCED_SYSTEM_CHECKS.append("weblate.I028")

資料庫

實際儲存位置依賴於資料庫的設定。

提示

資料庫是最重要的儲存。定期對資料庫進行備份。沒有資料庫,所有的翻譯都會消失。

原生資料庫備份

建議使用 pg_dump 等資料庫原生工具儲存資料庫傾印。這類工具通常比 Django 備份效能更好,而且能還原包含所有資料的完整資料表。

您可以在較新的 Weblate 發行版本中還原此備份;執行 migrate 時會進行所有必要的移轉。如需不同版本間的詳細升級資訊,請參閱 升級 Weblate

Django 資料庫備份

另外,可以使用 Django 的 dumpdata 指令備份您的資料庫。那種方式是不依托資料庫的,並且可以用於先要變更資料庫後端的情況。

還原資料庫前,執行的 Weblate 版本必須與建立備份時完全相同。這是因為資料庫結構會隨版本變更,否則可能造成資料損毀。安裝相同版本後,請使用 migrate 執行所有資料庫移轉。

之後,一些條目將已經在資料庫中建立,您也會在資料庫備份中看到它們。建議的方法是使用管理 shell 手動刪除這些條目 (見 呼叫管理指令):

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

檔案

如果您有足夠的備份空間,只需備份整個 DATA_DIR。這是一個安全帶,即使它包含一些您不想要的檔案。下面的部分詳細描述了應該備份和可以略過的內容。

下載的資料用於備份

在 4.7 版的變更: 環境設定匯出到檔案 environment.yml ,協助在復原 Docker 環境設定時使用。

儲存在 DATA_DIR /backups 中。

Weblate 這裡備份各種資料,可以包括這些檔案用於更完整的備份。檔案每日更新(需要執行 Celery beat 伺服器,請參閱 使用 Celery 的背景工作 )。目前,這包括:

  • Weblate 設定為 settings.py (還有擴充套件版,在 settings-expanded.py )。

  • PostgreSQL 資料庫備份為 database.sql

  • 環境設定匯出檔案 environment.yml

資料庫備份預設儲存為純文字,但也可以透過 DATABASE_BACKUP 來進行壓縮或整個略過。

要還原資料庫備份,請使用資料庫工具載入它,例如:

psql --file=database.sql weblate

版本控制儲存庫

儲存在 DATA_DIR /vcs 中。

版本控制儲存庫內容包含上游儲存庫及 Weblate 變更的副本。如果所有翻譯元件都啟用 提交時一併推送,Weblate 的所有變更都會傳回上游。此時不需在 Weblate 端備份儲存庫,因為可以從上游位置重新複製而不會遺失資料。

SSH 與 GPG 金鑰

儲存在 DATA_DIR /sshDATA_DIR /home 中。

如果正在使用 Weblate 產生的 SSH 或 GPG 金鑰,您應該備份這些位置。否則將遺失私有金鑰,並且您將不得不重新產生新的金鑰。

產生的 SSH 包裝器指令碼儲存在 CACHE_DIR,無需備份。

使用者上傳的檔案

儲存在 DATA_DIR /media 中。

您應備份所有使用者上傳的檔案(例如 螢幕擷圖和視覺化情境 )。

Celery 工作

Celery 工作佇列可能會包含一些資訊,但通常無需進行備份。您最多只會遺失尚未被翻譯記憶處理的更新。無論如何,建議在還原時執行全文或儲存庫更新,這樣就不會有丟失這些內容的問題。

適用於手動備份的指令列

使用 cron 作業,您可以設定一條每天執行的 Bash 指令,例如:

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

您可以根據需要調整資料夾和檔案的清單。為了避免儲存翻譯記憶(在備份資料夾中),您可以使用:

$ 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

復原手動備份

  1. 將已經備份的所有資料還原。

  2. 使用 updategit 更新所有儲存庫。

    weblate updategit --all
    

移動 Weblate 安裝

按照上面備份與還原說明,將您的安裝移轉到不同系統。