備份和移動 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 來調整上傳專案備份的匯入驗證。
於 新增翻譯專案和元件 時或透過 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 安裝¶
按照上面備份與還原說明,將您的安裝移轉到不同系統。