Резервное копирование и перенос Weblate¶
Резервные копии на уровне проекта¶
Добавлено в версии 4.14.
Проект создаёт резервные копии всего содержимого переводов из Weblate (проект, компоненты, переводы, комментарии строк, предложения или проверки). Подходит для переноса проекта на другой экземпляр Weblate.
Выполнить резервное копирование проекта можно в Операции ↓ Резервные копии. Резервную копию можно восстановить при создании проекта (см. Добавление проектов и компонентов перевода).
В настоящее время резервные копии не содержат данные об управлении доступом и данные журнала.
The comments and suggestions are backed up with the username of the user who did create them. Upon import it is assigned to a matching user. If there is no user with such username, it is assigned to anonymous user.
Созданные резервные копии хранятся на сервере в соответствии с настройками PROJECT_BACKUP_KEEP_DAYS и PROJECT_BACKUP_KEEP_COUNT (по умолчанию хранится не более 3 резервных копий в течение 30 дней).
Import validation of uploaded project backups can be tuned using
PROJECT_BACKUP_IMPORT_MAX_MEMBERS,
PROJECT_BACKUP_IMPORT_MAX_TOTAL_UNCOMPRESSED_SIZE,
PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_SIZE,
PROJECT_BACKUP_IMPORT_MIN_RATIO_SIZE, and
PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_RATIO.
Используйте сгенерированный файл для импорта проекта в Добавление проектов и компонентов перевода или в import_projectbackup.
Примечание
Восстановление резервной копии может завершиться ошибкой, если на восстанавливаемом сервере другой набор Определение языков или другая конфигурация SIMPLIFY_LANGUAGES. В процессе восстановления будут указаны коды языков, которые не удалось обработать, и вы сможете вручную добавить недостающие определения языков.
Автоматическое резервное копирование с помощью BorgBackup¶
В Weblate встроена поддержка создания служебных резервных копий с помощью BorgBackup. Borg создаёт компактные зашифрованные резервные копии, которые можно безопасно хранить в облаке. Управлять резервными копиями можно через интерфейс управления на вкладке Резервные копии.
Изменено в версии 4.4.1: Базы данных PostgreSQL включаются в автоматические резервные копии.
Резервные копии, которые делает Borg, являются инкрементальными, и Weblate настроен на хранение следующих ревизий резервных копий:
Ежедневных, за последние 14 дней
Еженедельных, за последние 8 недель
Ежемесячных, за последние 6 месяцев
Ключ шифрования Borg¶
BorgBackup создаёт зашифрованные резервные копии и восстановить из без кодовой фразы у вас не получится. Парольная фраза генерируется при добавлении новой службы резервного копирования. Вы должны скопировать её и сохранить в безопасном месте.
Если вы используете Предоставляемое Weblate хранилище резервных копий, сделайте также резервную копию вашего закрытого SSH-ключа, так как он используется для доступа к вашим резервным копиям.
См. также
Настройка резервного копирования¶
Резервное копирование базы данных может быть настроено через параметр
DATABASE_BACKUP.Создание резервной копии может быть настроено с помощью параметра
BORG_EXTRA_ARGS.
Предоставляемое Weblate хранилище резервных копий¶
Самый простой способ резервного копирования вашего экземпляра Weblate — приобрести службу резервного копирования на weblate.org. Его можно будет активировать следующим образом:
Покупка сервиса резервного копирования на https://weblate.org/support/#backup.
Ввод полученного ключа в интерфейсе управления, смотрите раздел Интегрированная поддержка.
Weblate подключается к облачному сервису и получает информацию для доступа к резервным копиям.
Включение новой конфигурации резервного копирования на вкладке Резервные копии.
Создайте резервную копию своих учётных данных Borg, чтобы иметь возможность восстанавливать резервные копии; см. «Ключ шифрования Borg».
Подсказка
Шаг ручного включения предусмотрен для вашей безопасности. Без вашего согласия никакие данные в репозитории резервных копий, полученные в процессе регистрации, не отправляются.
Использование собственного хранилища резервных копий¶
Также вы можете использовать своё собственное хранилище для резервного копирования. Загрузка резервных копий на удалённый сервер может осуществляться через SSH, на целевом сервере должен быть установлен BorgBackup.
См. также
General в документации 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
The directory where backups will be stored has to be owned by UID 1000, otherwise Weblate won’t be able to write the backups there.
Удалённые резервные копии¶
Для создания удалённых резервных копий вам также понадобится установить BorgBackup на другой сервер, доступный для Weblate по SSH с использованием SSH-ключа Weblate:
Подготовить сервер, на котором будут храниться резервные копии.
Установить на него SSH-сервер (вы получите его по умолчанию в большинстве дистрибутивов Linux).
Установите BorgBackup на этот сервер; большинство дистрибутивов Linux имеют доступные пакеты (смотреть Installation).
Выберите существующего или создайте нового пользователя, который будет использоваться для резервного копирования.
Добавьте SSH-ключ Weblate в файл пользователя .ssh/authorized_keys, чтобы Weblate мог подключаться к серверу по SSH без пароля (см. SSH-ключ Weblate).
Создайте доступный для записи пользователем каталог, где Weblate сможет удалённо настроить репозиторий резервных копий Borg, например, в домашнем каталоге (т.е.
/home/borg/backups).Настройте расположение резервных копий в Weblate как
user@host:/home/borg/backupsилиssh://user@host:port/home/borg/backups.После включения резервное копирование будет запускаться автоматически ежедневно. Вы также можете запустить резервное копирование вручную из интерфейса Weblate или с помощью backup.
Подсказка
Предоставляемое 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:
См. также
Восстановление установки на основе Docker¶
Следующие шаги предполагают официальную установку Docker Compose с использованием встроенных служб PostgreSQL и Valkey, см. Установка с помощью Docker’а. Если в вашем развёртывании используется внешняя база данных или настроенный файл Compose, адаптируйте шаги для базы данных и тома под эту среду.
Начните с извлечения (checkout) Docker Compose, соответствующего восстанавливаемому развёртыванию. Восстановите ваши исходные переопределения Compose, секреты и переменные окружения. Файл environment.yml из Дампы данных для резервного копирования может помочь в этом, но он не импортируется автоматически.
Восстановите архив резервной копии с помощью Восстановление из резервной копии Borg или распакуйте вашу ручную резервную копию так, чтобы стали доступны каталог данных Weblate и файл
backups/database.sql.Остановите службы, которые могут выполнять запись в базу данных или том с данными:
docker compose stop weblate cache
Пересоздайте том PostgreSQL.
docker compose stop database docker compose rm -v database docker volume remove weblate-docker_postgres-data
Имя тома зависит от имени проекта Compose и может отличаться от
weblate-docker_postgres-data. Проверьте вашу установку перед удалением какого-либо тома.Запустите службу базы данных:
docker compose up -d database
Восстановить дамп базы данных:
cat backups/database.sql | docker compose exec -T database psql --username weblate --dbname weblate
Убедитесь, что имя базы данных соответствует
POSTGRES_DB, а пользователь —POSTGRES_USERв вашей конфигурации Compose.Восстановите каталог данных Weblate в том данных Docker, смонтированный как
/app/data, см. Тома контейнеров Docker’а. Файлы в этом томе должны принадлежать UID 1000, см. Права доступа к файлам.Запустить остальные службы и следить за журналами:
docker compose up -d docker compose logs -f
Контейнер Weblate выполняет миграции базы данных при запуске. Если вы также обновляете Weblate, следуйте Обновление контейнера Docker’а.
Обновить репозитории после восстановления:
docker compose exec --user weblate weblate weblate updategit --all
Ручное резервное копирование¶
В зависимости от того, что именно вы хотите сохранить, создайте резервную копию тех типов данных, которые Weblate сохраняет в каждом соответствующем месте.
Подсказка
Если вы выполняете резервное копирование вручную, вы можете подавить предупреждение Weblate об отсутствии резервного копирования, добавив проверку weblate.I028 к параметру SILENCED_SYSTEM_CHECKS в settings.py или к переменной окружения WEBLATE_SILENCED_SYSTEM_CHECKS Docker.
SILENCED_SYSTEM_CHECKS.append("weblate.I028")
База данных¶
Фактическое расположение хранилища зависит от настроек вашей базы данных.
Подсказка
База данных является самым важным хранилищем. Настройте регулярное резервное копирование своей БД. Без неё все переводы попросту пропадут.
Встроенные средства базы данных для резервного копирования¶
Рекомендуемый подход — сохранять дамп базы данных с помощью родных для базы данных инструментов, таких как pg_dump. Обычно это работает лучше, чем резервное копирование 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, вы должны создать резервные копии этих каталогов. Иначе вы потеряете закрытые ключи и вам придётся заново сгенерировать новые.
Сгенерированные скрипты-обёртки SSH хранятся в CACHE_DIR, и их не нужно резервировать.
Загруженные пользователем файлы¶
Хранятся в 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¶
Переместите свою установку на другую систему, следуя приведённым выше инструкциям по резервному копированию и восстановлению из резервной копии.