备份和移动 Weblate¶
项目级别备份¶
Added in version 4.14.
警告
仅当使用 PostgreSQL 或 MariaDB 10.5+ 作为数据库时,才支持还原备份。
该项目备份了 Weblate 的所有翻译内容(项目、部件、翻译、字符串注释、建议或检查),它适用于将一个项目转移到另一个 Weblate 实例。
你可以在 管理 ↓ 备份 中进行项目备份。在创建项目时可以恢复备份(参见 添加翻译项目和部件)。
备份当前不包括访问控制信息和历史记录。
评论和建议由创建它们的用户的用户名备份。导入后,它会分配给匹配的用户。如果没有具有该用户名的用户,则将其分配给匿名用户。
生成的备份按照 PROJECT_BACKUP_KEEP_DAYS
和 :setting:`PROJECT_BACKUP_KEEP_COUNT`的配置保留在服务器上(默认情况下最多保留 3 个备份 30 天)。
添加翻译项目和部件 时使用生成的文件来导入项目。
备注
备份还原可能失败,如果还原服务器有不用的:ref:语言 集或不同的:setting:SIMPLIFY_LANGUAGES 配置的话。还原会告诉你哪些语言代码无法被继续,你可以接着手动添加缺失的语言定义。
使用 BorgBackup 进行的自动化备份¶
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 备份表现得好,并且可以连同数据一道,恢复完整表格。
你可以在较新的 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
版本控制仓库¶
版本控制仓库包含带有 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 命令,例如:
$ tar -Jcf ~/backup/weblate-backup-$(date -u +%Y-%m-%d_%H%M%S).xz backups vcs ssh home media fonts secret
你可以根据需要调整文件夹和文件的列表。为了避免保存翻译记忆库(在备份文件夹中),你可以使用:
$ 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
恢复手动备份¶
将已经备份的所有数据恢复。
使用
updategit
更新所有仓库。weblate updategit --all
移动 Weblate 安装¶
按照上面备份与恢复说明,将你的安装迁移到不同系统。