备份和移动 Weblate

自动备份

3.9 新版功能.

Weblate 内置了对使用 BorgBackup 创建服务备份的支持。Borg 创建了节省空间的加密备份,可以安全地存储在云中。可以在管理界面中的 Backups 选项卡上控制备份。

警告

自动备份仅包含 PostgreSQL 数据库。其他数据库引擎必须手动备份。建议您迁移到 PostgreSQL,因为它将是 4.0 版本中唯一受支持的数据库。请参阅 Migrating from other databases to PostgreSQL

../_images/backups.png

使用 Weblate 配置的备份存储

备份 Weblate 事例最简单的方法是购买 backup service at weblate.org 。激活过程可以分几步来执行:

  1. https://weblate.org/support/#backup 上购买备份服务。

  2. 在管理界面输入得到的密钥,请见 Integrating support

  3. Weblate 将连接到云服务,并得到访问信息来备份。

  4. Backups 标签打开新的备份配置。

  5. 备份 Borg 凭据,以便能够恢复备份,请见 Borg 加密密钥

提示

为了安全起见,有打开的手动步骤。没有你的同意,就不会有数据发送到通过注册步骤得到的备份仓库。

使用客户的备份存储

也可以使用自己的存储来备份。 SSH 可以用于在远程目的地存储备份,目标服务器需要安装 BorgBackup

参见

General 在 Borg 文件中

Borg 加密密钥

BorgBackup 生成加密的备份,没有密码的话就不能恢复备份。当添加备份服务时产生密码,并且应该将其复制并保存在安全的地方。

在使用 使用 Weblate 配置的备份存储 的情况下,请同样备份私有 SSH 密钥——它用于访问你的备份。

参见

borg init

从 BorgBackup 恢复

  1. 恢复功能会访问你的备份仓库,并准备备份密码。

  2. 使用 borg list REPOSITORY 列出服务器上存在的备份。

  3. 使用 borg extract REPOSITORY::ARCHIVE 将所需备份恢复到当前目录。

  4. 从放置在 Weblate 数据目录下 backup 目录中的 SQL 备份中恢复数据库(请见 下载的数据用于备份)。

  5. 将 Weblate 配置和数据目录复制到正确的位置。

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:

手动备份

依赖于您想存储什么, Weblate 存储的类型数据备份在各自的位置。

提示

在进行手动备份时,会想要通过将 weblate.I028 添加到 settings.pySILENCED_SYSTEM_CHECKS 中,或 Docker的 WEBLATE_SILENCED_SYSTEM_CHECKS 中, 来关闭 Weblate 的缺少备份警告。

SILENCED_SYSTEM_CHECKS.append("weblate.I028")

数据库

实际存储位置依赖于数据库的设置。

数据库是最重要的存储。要设置数据库的常规备份,没有的话翻译设置就丢失了。

本地数据库备份

建议的方式是使用数据库的本地工具如 pg_dumpmysqldump 来备份数据库。这通常比Django备份执行得好,并且恢复所有数据的完整表格。

可以在更新版的 Weblate 中恢复备份,当运行 migrate 时执行任何必要的迁移。如何在两个版本之间执行升级的更多细节信息请咨询 Upgrading Weblate

Django 数据库备份

另外,可以使用 Django 的 dumpdata 命令备份数据库。那种方式是不依托数据库的,并且可以用于先要改变数据库后端的情况。

在恢复前,需要运行与进行备份使用的 Weblate 完全一致的版本。这是必须的,因为数据库结构在发布版本之间有变化,并且会导致某种方式的数据损坏。在安装相同版本后,使用 migrate 来运行所有的数据库迁移。

一旦完成,数据库中就已经建立了一些入口,并且同样建立在数据库备份中。建议的方法是使用管理 shell (请见 Invoking management commands )手动删除这样的入口:

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

文件

如果有充足的备份空间,则简单地备份整个 DATA_DIR 。即使包括一些不想要的文件,这样做也是安全的。后面的部分具体描述了什么应该备份,什么应该跳过。

下载的数据用于备份

存储在 DATA_DIR /backups 中。

Weblate 这里备份各种数据,可以包括这些文件用于更完整的备份。文件每日更新(需要运行 Celery beat 服务器,请见 Background tasks using Celery )。当前,这包括:

  • Weblate 设置为 settings.py (还有扩展版,在 settings-expanded.py )。

  • PostgreSQL 数据库备份为 database.sql

数据库备份默认存储为纯文本,但也可以通过使用 :setting:`DATABASE_BACKUP`来压缩的或整个跳过。

版本控制仓库

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

版本控制仓库包含了带有 Weblate 更改的上游仓库的复制备份。 如果对所有翻译组件推进了同意允许,那么所有 Weblate 更改都包括在上游中,并且不必备份 Weblate 侧的仓库。它们可以从上游位置再次克隆,而不会丢失数据。

SSH 和 GPG 密钥

存储在 DATA_DIR /sshDATA_DIR /home 中。

如果您正在使用 Weblate 生成的 SSH 或 GPG 密钥,您应该备份这些位置,否则您将丢失私有密钥,并且您将不得不重新生成新的密钥。

用户上传的文件

存储在 DATA_DIR /media 中。

可以备份用户上传的文件(例如 Visual context for strings )。

手动备份的命令行

使用 crom 任务,可以设置批处理命令,以每天为单位来执行,例如:

$ 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

Celery 任务

Celery 任务队列会包含一些信息,但备份通常不需要它。最多就是丢失了翻译内存还没有处理的更新。建议恢复时随便执行全文或仓库更新,这样不会有丢失的问题。

恢复手动备份

  1. 将已经备份的所有数据恢复。

  2. 使用 updategit 更新所有仓库。

    weblate updategit --all
    

移动 Weblate 安装

按照上面备份与恢复的说明,将安装重定位到不同系统。