備份和移動 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 備份表現得好,並且可以連同數據一道,恢復完整表格。

您可以在較新的 Weblate 發行版中恢復這個備份,當運行於 migrate 時,它將執行所有必需的遷移。請參考 升級 Weblate 了解如何在版本間升級的更多詳細信息。

Django 資料庫備份

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

恢復資料庫之前,您需要確保恢復備份和執行備份的實例運行的是完全相同的 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 更改的上游存儲庫的副本。如果您對所有翻譯組件啟用了:ref: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. 使用 updategit 更新所有倉儲。

    weblate updategit --all
    

移動 Weblate 安裝

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