备份和移动 Weblate

自动备份

3.9 新版功能.

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

警告

自动备份仅包含 PostgreSQL 数据库。其他数据库引擎必须手动备份。建议您迁移到 PostgreSQL,请见 Database setup for WeblateMigrating from other databases to PostgreSQL

使用 Borg 的备份是递增的, Weblate 配置为保留后面的备份:

  • 14 个每天备份

  • 8 个每周备份

  • 6个 每月备份

../_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 配置 ( backups/settings.py ,请见 下载的数据用于备份 )复制到正确的位置,请见 Adjusting configuration

  6. 将整个存储的数据目录复制到在 DATA_DIR 中配置的位置。

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 安装

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