Резервное копирование и перенос Weblate¶
Резервные копии на уровне проекта¶
Добавлено в версии 4.14.
Предупреждение
Восстановление резервных копий поддерживается только при использовании PostgreSQL или MariaDB 10.5+ в качестве баз данных.
Проект создаёт резервные копии всего содержимого переводов из Weblate (проект, компоненты, переводы, комментарии строк, предложения или проверки). Подходит для переноса проекта на другой экземпляр Weblate.
Выполнить резервное копирование проекта можно в Управление ↓ Резервные копии. Резервную копию можно восстановить при создании проекта (см. Добавление проектов и компонентов перевода).
В настоящее время резервные копии не содержат данные об управлении доступом и данные журнала.
Комментарии и предложения сопровождаются именем пользователя, который их создал. При импорте они присваиваются соответствующему пользователю. Если нет пользователя с таким именем, он присваивается анонимному пользователю.
Созданные резервные копии хранятся на сервере в соответствии с настройками PROJECT_BACKUP_KEEP_DAYS
и PROJECT_BACKUP_KEEP_COUNT
(по умолчанию хранится не более 3 резервных копий в течение 30 дней).
Use the generated file to import project when Добавление проектов и компонентов перевода.
Примечание
Restoring of the backup might fail if the restoring server has different set
of Определение языков or different configuration of
SIMPLIFY_LANGUAGES
. The restore will tell you which language
codes could not be processed and you can then add missing language
definitions manually.
Автоматическое резервное копирование с помощью BorgBackup¶
В Weblate встроена поддержка создания сервисных резервных копий с помощью BorgBackup. Borg создаёт компактные зашифрованные резервные копии, которые можно безопасно хранить в облаке. Управлять резервными копиями можно через интерфейс управления на вкладке Резервные копии.
Изменено в версии 4.4.1: Теперь обе поддерживаемые базы данных: и PostgreSQL, и MySQL/MariaDB, включаются в автоматические резервные копии.
Резервные копии, которые делает Borg, являются инкрементальными, и Weblate настроен на хранение следующих ревизий резервных копий:
Ежедневных, за последние 14 дней
Еженедельных, за последние 8 недель
Ежемесячных, за последние 6 месяцев
Ключ шифрования Borg¶
BorgBackup создаёт зашифрованные резервные копии и восстановить из без кодовой фразы у вас не получится. Парольная фраза генерируется при добавлении новой службы резервного копирования. Вы должны скопировать её и сохранить в безопасном месте.
Если же вы используете хранилище резервных копий на Weblate.org, то сохраните также резервную копию вашего закрытого SSH-ключа — он понадобится для доступа к вашим резервным копиям.
См. также
Настройка резервного копирования¶
Резервное копирование базы данных может быть настроено через параметр
DATABASE_BACKUP
.Создание резервной копии может быть настроено с помощью параметра
BORG_EXTRA_ARGS
.
Предоставляемое Weblate хранилище резервных копий¶
Самый простой способ резервного копирования вашего экземпляра Weblate — приобрести сервис резервного копирования на weblate.org. Его можно будет активировать следующим образом:
Покупка сервиса резервного копирования на https://weblate.org/support/#backup.
Ввод полученного ключа в интерфейсе управления, смотрите раздел Интегрированная поддержка.
Weblate подключается к облачному сервису и получает информацию для доступа к резервным копиям.
Включение новой конфигурации резервного копирования на вкладке Резервные копии.
Создайте резервную копию своих учётных данных Borg, чтобы иметь возможность восстанавливать резервные копии; смотрите раздел «Ключ шифрования Borg».
Подсказка
Шаг ручного включения предусмотрен для вашей безопасности. Без вашего согласия никакие данные в репозитории резервных копий, полученные в процессе регистрации, не отправляются.
Использование собственного хранилища резервных копий¶
Также вы можете использовать своё собственное хранилище для резервного копирования. Загрузка резервных копий на удалённый сервер может осуществляться через SSH, на целевом сервере должен быть установлен BorgBackup.
См. также
Раздел Общие сведения в документации Borg
Локальная файловая система¶
Для локальной резервной копии рекомендуется указывать абсолютный путь, например /путь/к/резервной_копии. Каталог должен быть доступен на запись для пользователя, под которым запущен Weblate (смотрите раздел Права доступа к файлам). В случае, если каталог не существует, Weblate попытается его создать, но для этого понадобятся соответствующие права доступа.
Подсказка
Если Weblate запущен в Docker, убедитесь, что местоположение резервной копии в контейнере Weblate отображается как том. В противном случае при перезагрузке контейнера Docker все резервные копии будут потеряны.
Одним из вариантов является размещение резервных копий в существующем томе. Подойдёт, к примеру, /app/data/borgbackup
. Это один из томов уже существующих в контейнере.
Также вы можете добавить в файл Docker Compose новый контейнер для резервных копий и использовать, например, путь /borgbackup
:
services:
weblate:
volumes:
- /home/weblate/data:/app/data
- /home/weblate/borgbackup:/borgbackup
Владельцем каталога, в котором будут хранится резервные копии, должен быть пользователь с UID 1000, Иначе Weblate не сможет сохранять в него оные.
Удалённые резервные копии¶
Для создания удалённых резервных копий вам также понадобится установить BorgBackup на другой сервер, доступный для Weblate по SSH с использованием SSH-ключа Weblate:
Подготовить сервер, на котором будут храниться резервные копии.
Установить на него SSH-сервер (вы получите его по умолчанию в большинстве дистрибутивов Linux).
Установите BorgBackup на этот сервер; большинство дистрибутивов Linux имеют доступные пакеты (смотреть Installation).
Выберите существующего или создайте нового пользователя, который будет использоваться для резервного копирования.
Добавить SSH-ключ Weblate к пользователю, чтобы Weblate мог подключаться к серверу по SSH без пароля (смотреть раздел SSH-ключ Weblate).
Настройте местоположение резервного копирования в Weblate как
пользователь@хост:/путь/к/резервным копиям
илиssh://пользователь@хост:порт/путь/к/резервным копиям
.
Подсказка
Предоставляемое Weblate хранилище резервных копий предоставляет вам автоматическое удалённое резервное копирование без каких-либо усилий.
См. также
Восстановление из резервной копии Borg¶
Восстановите доступ к своему репозиторию резервных копий и подготовьте свою парольную фразу для резервного копирования.
Получите список всех резервных копий на сервере с помощью команды
borg list РЕПОЗИТОРИЙ
.Восстановите нужную резервную копию в текущий каталог с помощью команды
borg extract РЕПОЗИТОРИЙ::АРХИВ
.Восстановите базу данных из SQL-дампа, размещённого в каталоге
backup
каталога данных Weblate (смотрите раздел Дампы данных для резервного копирования).Скопируйте файл настроек 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
к параметру SILENCED_SYSTEM_CHECKS
в settings.py
или к переменной окружения WEBLATE_SILENCED_SYSTEM_CHECKS
Docker.
SILENCED_SYSTEM_CHECKS.append("weblate.I028")
База данных¶
Фактическое расположение хранилища зависит от настроек вашей базы данных.
Подсказка
База данных является самым важным хранилищем. Настройте регулярное резервное копирование своей БД. Без неё все переводы попросту пропадут.
Встроенные средства базы данных для резервного копирования¶
Рекомендуемый подход заключается в создании дампа базы данных с помощью родных для конкретной СУБД инструментов, таких как pg_dump или mysqldump. Обычно они работают лучше, чем резервные копии Django, и восстанавливают полные таблицы со всеми данными.
Эту резервную копию вы можете восстановить и на болле новом выпуске Weblate, при запуске через migrate
он выполнит все необходимые миграции. За более подробной информацией о том, как выполнять обновление между версиями обратитесь к разделу «Обновление Weblate».
Резервное копирование базы данных средствами Django¶
В качестве альтернативы вы можете создать резервную копию базы данных при помощи Django’вской команды dumpdata
. Резервное копирование этим способом не зависит от базы данных и может быть использовано в случае, если вы захотите сменить СУБД.
Перед восстановлением вам следует убедиться, что у вас запущена в точности та же самая версия Weblate, с которой была сделана резервная копия. Это необходимо, так как структура базы данных меняется от выпуска к выпуску, и если вы не выполните это условие, то, в конечном итоге, повредите данные тем или иным образом. После установке этой версии запустите все миграции базы данных с помощью команды migrate
.
После этого некоторые записи уже будут созданы в базе данных, и они также попадут в резервную копию базы данных. Такие записи рекомендуется удалять вручную в оболочке управления (смотрите раздел Вызов команд управления):
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
.
Резервные копии базы данных по умолчанию сохраняются в виде простого текста, но их также можно сжать или полностью выключить, устанавив параметр DATABASE_BACKUP
.
Для восстановления резервной копии базы данных загрузите её с помощью инструментов базы данных, например:
psql --file=database.sql weblate
Репозитории системы контроля версий¶
Хранятся в DATA_DIR
/vcs
.
Репозитории системы контроля версий содержат копии ваших вышестоящих репозиториев с изменениями из Weblate. Если вы включили для всех ваших компонентов перевода Отправлять при коммите, то в вышестоящий репозиторий при коммите включаются все изменения из 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¶
Переместите свою установку на другую систему, следуя приведённым выше инструкциям по резервному копированию и восстановлению из резервной копии.