备份和移动 Weblate#
项目级别备份#
在 4.14 版本加入.
警告
仅当使用 PostgreSQL 或 MariaDB 10.5+ 作为数据库时,才支持还原备份。
该项目备份了 Weblate 的所有翻译内容(项目、部件、翻译、字符串注释、建议或检查),它适用于将一个项目转移到另一个 Weblate 实例。
你可以在 管理 ↓ 备份 中进行项目备份。在创建项目时可以恢复备份(参见 添加翻译项目和部件)。
备份当前不包括访问控制信息和历史记录。
评论和建议由创建它们的用户的用户名备份。导入后,它会分配给匹配的用户。如果没有具有该用户名的用户,则将其分配给匿名用户。
生成的备份按照 PROJECT_BACKUP_KEEP_DAYS
和 :setting:`PROJECT_BACKUP_KEEP_COUNT`的配置保留在服务器上(默认情况下最多保留 3 个备份 30 天)。
使用 BorgBackup 进行的自动化备份#
在 3.9 版本加入.
Weblate 内置了对使用 BorgBackup 创建服务备份的支持。Borg 创建了节省空间的加密备份,可以安全地存储在云中。可以从管理界面中的 备份 选项卡上控制备份。
在 4.4.1 版本发生变更: PostgreSQL 和 MySQL/MariaDB 数据库都包括在自动备份中。
使用 Borg 的备份是增量的,Weblate 被配置为保留以下备份:
每天备份之前 14 天的内容
前 8 周的每周备份
前 6 个月的每月备份

Borg 加密密钥#
BorgBackup 创建加密的备份,如果没有密码,你将无法恢复它们。密码是在添加新的备份服务时生成的,你应该复制它并将其保存在一个安全的地方。
如果你在使用 Weblate 提供的备份存储,请同样备份你的私有 SSH 密钥,因为它用来访问你的备份。
参见
定制备份#
可通过
DATABASE_BACKUP
配置数据库备份。
Weblate 提供的备份存储#
备份你的 Weblate 实例的最简单方式是购买 `weblate.org 的备份服务<https://weblate.org/support/#backup>`_。这是你如何让它运行起来的方式:
在 https://weblate.org/support/#backup 购买 备份服务。
在管理界面输入得到的密钥,请参见 集成支持。
Weblate 将连接到云服务,并获取备份的访问信息。
在 备份 选项卡下开启新的备份配置。
备份你的 Borg 凭据,以便能够恢复备份,请参见 Borg 加密密钥。
提示
为了安全起见,有打开所有东西的手动步骤。没有你的同意,就不会有数据发送到通过注册步骤得到的备份仓库。
使用客户的备份存储#
也可以使用自己的存储来备份。SSH 可以用于在远程目的地存储备份,目标服务器需要安装 BorgBackup。
参见
Borg 文档中的 General
本地文件系统#
推荐去指定本地备份的绝对路径,例如 /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 安装到另一台服务器上,你的 Weblate 部署要能使用如下 Weblate SSH 密钥通过 SSH 访问此服务器:
准备一个用于存储备份的服务器。
在上面安装SSH服务器(大多数Linux发行版默认情况下都会安装SSH服务器)。
在该服务器上安装 BorgBackup;大多数 Linux 发行版都有可用的软件包(参见 Installation)。
选择一个现有用户或创建一个用于备份的新用户。
为用户添加 Weblate SSH 密钥,使 Weblate 可以在不需要密码的情况下 SSH 到服务器(参见 Weblate SSH 密钥)。
将 Weblate 备份位置配置为
user@host:/path/to/backups
或ssh://user@host:port/path/to/backups
.
提示
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:
手动备份#
根据要保存的内容,备份 Weblate 在各个地方存储的数据类型。
提示
如果你正进行手动备份,你也许想要关闭 Weblate 关于缺乏备份的警告,方法是添加 weblate.I028
到 settings.py
中的 SILENCED_SYSTEM_CHECKS
;对于 Docker,则是 WEBLATE_SILENCED_SYSTEM_CHECKS
。
SILENCED_SYSTEM_CHECKS.append("weblate.I028")
数据库#
实际存储位置取决于数据库的设置。
提示
数据库是最重要的存储。定期对数据库进行备份。没有数据库,所有的翻译都会消失。
本地数据库备份#
推荐的方式是使用数据库自带工具如 pg_dump 或 mysqldump 来保存数据库的转储。这通常比 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
版本控制仓库#
版本控制仓库包含带有 Weblate 更改的上游仓库的副本。如果你对所有翻译部件启用了:ref:component-push_on_commit`,那么所有 Weblate 变化都包括在上游。不需要在 Weblate 端备份仓库,因为它们可以从上游位置再次克隆,不会丢失数据。
SSH 和 GPG 密钥#
存储在 DATA_DIR
/ssh
和 DATA_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
恢复手动备份#
将已经备份的所有数据恢复。
Update all repositories using
weblate updategit
.weblate updategit --all
移动 Weblate 安装#
按照上面备份与恢复说明,将你的安装迁移到不同系统。