備份和移動 Weblate#

Project level backups#

在 4.14 版新加入.

警告

恢復備份功能只支援使用 PostgreSQL 或 MariaDB 10.5+ 的資料庫。

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

您可以執行一個專案的備份,透過 ManageBackups 。而備份可以在建立新專案的時候恢復(參閱: 添加翻譯項目和組件)。

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

評註與建議會與其建立者之名稱一同備份。匯入時若有相符則指定到其使用者。若無相符使用者,將會指定為匿名者名稱。

保存在伺服器上所產生的備份將以 PROJECT_BACKUP_KEEP_DAYSPROJECT_BACKUP_KEEP_COUNT 參數設定(預設將保存近 3 個備份檔案 30 天)。

使用 BorgBackup 自動備份#

在 3.9 版新加入.

Weblate 內置了對使用 BorgBackup 創建服務備份的支持。 Borg 創建了節省空間的加密備份,可以安全地存儲在雲中。可以從管理界面中的 Backups 選項卡上控製備份。

在 4.4.1 版的變更: PostgreSQL 和 MySQL/MariaDB 資料庫都包括在自動備份中。

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

  • 近 14 日的每日備份

  • 近 8 週的每週備份

  • 近 6 個月的每月備份

../_images/backups.png

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 將無法把備份寫入那裡。

Remote backups#

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

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

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

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

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

  5. 新增 Weblate 的 SSH 金鑰於使用者中,將使 Weblate SSH 連線到伺服器時不需要密碼(參閱 Weblate SSH 密鑰)。

  6. Configure the backup location in Weblate as user@host:/path/to/backups or ssh://user@host:port/path/to/backups.

提示

Weblate 支援備份儲存 provides you automated remote backups without any effort.

也參考

borg listborg extract

從 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 容器放置資料到 volume 中,請參閱 Docker 容器 volumes

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

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:

也參考

borg list, borg extract

手動備份#

取決於您想保存什麼, Weblate 存儲的類型數據會備份在各自的位置。

提示

如果您正進行手動備份,您也許想要關閉Weblate 關於缺乏備份的警告,方法是添加``weblate.I028`` 到:file:settings.py 中的:setting:django:SILENCED_SYSTEM_CHECKS;對於Docker,則是:envvar:WEBLATE_SILENCED_SYSTEM_CHECKS

SILENCED_SYSTEM_CHECKS.append("weblate.I028")

資料庫#

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

提示

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

原生資料庫備份#

推薦的方式是使用資料庫的本地工具如 pg_dumpmysqldump 來保存資料庫的轉儲。這通常比 Django 備份表現得好,並且可以連同數據一道,恢復完整表格。

You can restore this backup in a newer Weblate release, it will perform all the necessary migrations when running in weblate migrate. Please consult 升級 Weblate on more detailed info on how to upgrade between versions.

Django 資料庫備份#

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

Prior to restoring the database you need to be running exactly the same Weblate version the backup was made on. This is necessary as the database structure does change between releases and you would end up corrupting the data in some way. After installing the same version, run all database migrations using weblate migrate.

之後,一些條目將已經在資料庫中創建,您也會在資料庫備份中看到它們。推薦的方法是使用管理 shell 手動刪除這些條目 (見:ref:invoke-manage):

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

資料庫備份預設保存為純文本,但也可以通過 :setting:`DATABASE_BACKUP`來進行壓縮或整個跳過。

使用資料庫工具恢復資料庫備份,例如:

psql --file=database.sql weblate

版本控制儲存庫#

存儲在 DATA_DIR ``/vcs``中。

版本控制儲存庫包含帶有 Weblate 更改的上游儲存庫的副本。如果您對所有翻譯組件啟用了 component-push_on_commit`,那麼所有 Weblate 變化都包括在上游。不需要在 Weblate 端備份儲存庫,因為它們可以從上游位置再次克隆,不會丟失資料。

SSH 和 GPG 密鑰#

存儲在 DATA_DIR /sshDATA_DIR /home 中。

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

使用者已上傳檔案#

存儲在 DATA_DIR /media 中。

您應當備份所有使用者上傳的文件(例如 字串的可見語境 )。

Celery 任務#

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

手動備份的命令行#

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

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

`XZ_OPT`後面引號之間的字串允許您選擇自己的 xz 選項,例如用於壓縮的內存量;見 https://linux.die.net/man/1/xz

您可以根據需要調整文件夾和文件的列表。為了避免保存翻譯記憶庫(在備份文件夾中),您可以使用:

$ XZ_OPT="-9" 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. Update all repositories using weblate updategit.

    weblate updategit --all
    

移動 Weblate 安裝#

按照上面備份與恢復說明,將您的安裝遷移到不同系統。