備份和移動 Weblate¶
專案層級備份¶
在 4.14 版被加入.
專案會從 Weblate 備份所有翻譯內容(專案、元件、翻譯、字串評論、建議或檢查)。這適合用在轉移專案到另一個 Weblate 翻譯平台。
您可以在 操作 ↓ 備份 中進行專案備份。在建立專案時可以還原備份(參閱 新增翻譯專案和元件)。
備註
自 2026.7 版起,也可以透過 Weblate 的 REST API 建立、列出及下載專案備份;
目前備份資料不包含存取控制與歷史資訊。
留言及建議會連同建立者的使用者名稱一起備份。匯入時,系統會將內容指派給使用者名稱相符的使用者;如果找不到相符的使用者,則會指派給匿名使用者。
產生的備份會依 PROJECT_BACKUP_KEEP_DAYS 及 PROJECT_BACKUP_KEEP_COUNT 的設定保留在伺服器上(預設最多保留 3 個備份,並保留 30 天)。
可以使用 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 和 PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_RATIO 來調整上傳專案備份的匯入驗證。
The complete backup is validated before restoring any data. Invalid object fields, references, repository paths, URLs, regular expressions, or screenshot files cause the import to be rejected without creating a partial project.
於 新增翻譯專案和元件 時或透過 import_projectbackup 使用產生的檔案匯入專案。
備註
如果還原伺服器的 語言定義 集合或 SIMPLIFY_LANGUAGES 設定不同,可能無法還原備份。還原程序會指出無法處理的語言代碼,您可以再手動新增缺少的語言定義。
使用 BorgBackup 自動備份¶
Weblate 內建了對使用 BorgBackup 建立服務備份的支援。 Borg 建立了節省空間的加密備份,可以安全地儲存在雲中。可以從管理介面中的 Backups 分頁上控制備份。
在 4.4.1 版的變更: PostgreSQL 資料庫包含在自動備份中。
使用 Borg 的備份是遞增的, Weblate 設定為保留後面的備份:
近 14 日的每日備份
近 8 週的每週備份
近 6 個月的每月備份
Borg 加密金鑰¶
BorgBackup 建立加密的備份,如果沒有密碼,您將無法還原它們。密碼是在新增新的備份服務時產生的,您應該複製它並將其儲存在一個安全的地方。
如果您使用 Weblate 支援備份儲存,也請備份私密 SSH 金鑰,因為存取備份時會用到它。
也參考
自訂備份¶
資料庫備份可透過
DATABASE_BACKUP設定。備份建立可以使用
BORG_EXTRA_ARGS進行自訂。
Weblate 支援備份儲存¶
備份您的 Weblate 執行個體最簡單方式是在 weblate.org 購買 備份服務 。這是您如何讓它執行起來的方式:
在 https://weblate.org/support/#backup 購買 備份服務。
在管理介面輸入得到的金鑰,請參閱 整合支援。
Weblate 將連線到雲端服務,並取得備份的存取資訊。
從 Backups 標籤開啟新的備份設定。
備份您的 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 金鑰的連線:
準備一個您的備份將用來存放的伺服器。
將其安裝 SSH 服務(在大部分的 Linux 發行版本中您將能預設的取得)。
安裝 BorgBackup 在伺服器中。大部分的 Linux 發行版本擁有可取得的套件(參閱 Installation)。
選擇一個現有的使用者或建立新的使用者將於備份使用。
將 Weblate SSH 金鑰加入使用者的 .ssh/authorized_keys 檔案,讓 Weblate 可以不使用密碼即透過 SSH 連線至伺服器(請參閱 Weblate SSH 金鑰)。
建立 Weblate 可以在主目錄(即
/home/borg/backups)遠端建立 Borg 備份儲存庫的使用者可寫的目錄。在 Weblate 中將備份位置設為
user@host:/home/borg/backups或ssh://user@host:port/home/borg/backups。啟用後,系統會每天自動觸發備份。您也可以從 Weblate 使用者介面,或使用 backup 手動觸發備份。
提示
Weblate 支援備份儲存 為您提供自動化遠端備份,無需費力。
從 BorgBackup 復原備份¶
還原功能會存取您的備份儲存庫,並準備備份密碼。
用
borg list REPOSITORY列出伺服器上的所有備份。使用
borg extract REPOSITORY::ARCHIVE將所需備份還原到目前目錄。從放置在 Weblate 資料目錄下
backup目錄中的 SQL 備份中還原資料庫(請參閱 下載的資料用於備份)。將 Weblate 設定 (
backups/settings.py,請參閱 下載的資料用於備份 )複製到正確的位置,請參閱 調整設定。當使用 Docker 容器時,設定檔已經包含在容器中,您應該還原原始的環境變數。
environment.yml檔案或許能幫助您(參閱 下載的資料用於備份)。將整個儲存的資料目錄複製到
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 檔案可以協助完成這項工作,但不會自動匯入。
使用 從 BorgBackup 復原備份 還原備份封存檔,或解壓縮手動備份,確保 Weblate 資料目錄及
backups/database.sql可供使用。停止可以寫入資料庫或資料儲存區的服務:
docker compose stop weblate cache
重新建立 PostgreSQL 儲存區。
docker compose stop database docker compose rm -v database docker volume remove weblate-docker_postgres-data
磁碟區名稱取決於 Compose 專案名稱,可能不是
weblate-docker_postgres-data。移除任何磁碟區前,請先檢查自己的設定。啟動資料庫服務:
docker compose up -d database
還原資料庫傾印:
cat backups/database.sql | docker compose exec -T database psql --username weblate --dbname weblate
確認資料庫名稱與
POSTGRES_DB相符,且使用者與 Compose 設定中的POSTGRES_USER相符。將 Weblate 資料目錄還原到掛載為
/app/data的 Docker 資料磁碟區,見 Docker 容器儲存區。此磁碟區中的檔案必須為 UID 1000 所有,見 檔案系統權限。啟動其餘服務並查看記錄:
docker compose up -d docker compose logs -f
Weblate 容器在啟動時執行資料庫移轉。如果您也在升級 Weblate,請遵照 升級 Docker 容器。
還原後重新整理儲存庫:
docker compose exec --user weblate weblate weblate updategit --all
手動備份¶
請根據要儲存的內容,備份 Weblate 在各個位置儲存的相應資料類型。
提示
如果您正進行手動備份,您也許想要關閉Weblate 關於缺乏備份的警告,方法是新增 weblate.I028 到 settings.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 /ssh 和 DATA_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
復原手動備份¶
將已經備份的所有資料還原。
使用
updategit更新所有儲存庫。weblate updategit --all
移動 Weblate 安裝¶
按照上面備份與還原說明,將您的安裝移轉到不同系統。