备份和移动 Weblate¶
自动备份¶
3.9 新版功能.
Weblate 内置了对使用 BorgBackup 创建服务备份的支持。Borg 创建了节省空间的加密备份,可以安全地存储在云中。可以在管理界面中的 Backups 选项卡上控制备份。
警告
自动备份仅包含 PostgreSQL 数据库。其他数据库引擎必须手动备份。建议您迁移到 PostgreSQL,因为它将是 4.0 版本中唯一受支持的数据库。请参阅 Migrating from other databases to PostgreSQL。
使用 Weblate 配置的备份存储¶
备份 Weblate 事例最简单的方法是购买 backup service at weblate.org 。激活过程可以分几步来执行:
在 https://weblate.org/support/#backup 上购买备份服务。
在管理界面输入得到的密钥,请见 Integrating support 。
Weblate 将连接到云服务,并得到访问信息来备份。
在 Backups 标签打开新的备份配置。
备份 Borg 凭据,以便能够恢复备份,请见 Borg 加密密钥 。
提示
为了安全起见,有打开的手动步骤。没有你的同意,就不会有数据发送到通过注册步骤得到的备份仓库。
Borg 加密密钥¶
BorgBackup 生成加密的备份,没有密码的话就不能恢复备份。当添加备份服务时产生密码,并且应该将其复制并保存在安全的地方。
在使用 使用 Weblate 配置的备份存储 的情况下,请同样备份私有 SSH 密钥——它用于访问你的备份。
参见
从 BorgBackup 恢复¶
恢复功能会访问你的备份仓库,并准备备份密码。
使用
borg list REPOSITORY
列出服务器上存在的备份。使用
borg extract REPOSITORY::ARCHIVE
将所需备份恢复到当前目录。从放置在 Weblate 数据目录下
backup
目录中的 SQL 备份中恢复数据库(请见 下载的数据用于备份)。将 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.py
的 SILENCED_SYSTEM_CHECKS
中,或 Docker的 WEBLATE_SILENCED_SYSTEM_CHECKS
中, 来关闭 Weblate 的缺少备份警告。
SILENCED_SYSTEM_CHECKS.append("weblate.I028")
数据库¶
实际存储位置依赖于数据库的设置。
数据库是最重要的存储。要设置数据库的常规备份,没有的话翻译设置就丢失了。
本地数据库备份¶
建议的方式是使用数据库的本地工具如 pg_dump 或 mysqldump 来备份数据库。这通常比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`来压缩的或整个跳过。
版本控制仓库¶
版本控制仓库包含了带有 Weblate 更改的上游仓库的复制备份。 如果对所有翻译组件推进了同意允许,那么所有 Weblate 更改都包括在上游中,并且不必备份 Weblate 侧的仓库。它们可以从上游位置再次克隆,而不会丢失数据。
手动备份的命令行¶
使用 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 任务队列会包含一些信息,但备份通常不需要它。最多就是丢失了翻译内存还没有处理的更新。建议恢复时随便执行全文或仓库更新,这样不会有丢失的问题。
移动 Weblate 安装¶
按照上面备份与恢复的说明,将安装重定位到不同系统。