Fazendo backup e movendo o Weblate

Backups de nível de projeto

Adicionado na versão 4.14.

O projeto faz o backup de todo o conteúdo da tradução do Weblate (projeto, componentes, traduções, comentários, sugestões ou verificações de textos). Ele é adequado para a transferência de um projeto para outra instância do Weblate.

You can perform a project backup in OperationsBackups. The backup can be restored when creating a project (see Adicionando projetos e componentes de tradução).

Os backups no momento não incluem o histórico e as informações de controle de acesso.

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.

Os backups gerados são mantidos no servidor conforme configurado por PROJECT_BACKUP_KEEP_DAYS e PROJECT_BACKUP_KEEP_COUNT (o padrão é manter no máximo 3 backups por 30 dias).

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.

Use o arquivo gerado para importar o projeto quando Adicionando projetos e componentes de tradução ou em import_projectbackup.

Nota

A restauração do Backup pode falhar se o servidor de restauração tiver um conjunto diferente de Definições de idioma ou uma configuração diferente de SIMPLIFY_LANGUAGES. A restauração informará quais códigos de idioma não puderam ser processados e você poderá então adicionar manualmente as definições de idioma ausentes.

Backup automatizado usando BorgBackup

O Weblate tem suporte integrado para criação de backups de serviços usando BorgBackup. Borg cria backups criptografados eficazes em termos de espaço que podem ser armazenados com segurança em Nuvem. Os backups podem ser controlados na interface de gerenciamento, na guia Backups.

Alterado na versão 4.4.1: PostgreSQL databases are included in the automated backups.

Os backups que usam o Borg são incrementais e o Weblate é configurado para manter os seguintes backups:

  • Backups diários para 14 dias

  • Backups semanais por 8 semanas atrás

  • Backups mensais por 6 meses atrás

../_images/backups.webp

Chave de criptografia do Borg

BorgBackup cria backups criptografados e você não conseguiria restaurá-los sem a senha. A senha é gerada ao adicionar novo serviço de backup e você deve copiá-lo e mantê-lo em um lugar seguro.

Se você estiver usando Armazenamento de backup provisionado do Weblate, faça backup da sua chave SSH privada também, pois ela é usada para acessar seus backups.

Ver também

borg init

Personalizando o backup

Armazenamento de backup provisionado do Weblate

A forma mais fácil de fazer backup da sua instância do Weblate é comprar o serviço de backup em weblate.org. É assim que o faz funcionar:

  1. Compre o Serviço de backup em https://weblate.org/support/#backup.

  2. Insira a chave obtida na interface de gerenciamento, consulte Integrando suporte.

  3. Weblate se conecta ao serviço de Nuvem e obtém informações de acesso para os backups.

  4. Ative a nova configuração de backup a partir da aba Backups.

  5. Faça backup de suas credenciais do Borg para conseguir restaurar os backups, consulte Chave de criptografia do Borg.

Dica

O passo manual para ativar tudo está lá para sua segurança. Sem o seu consentimento, nenhum dado é enviado ao repositório de backup obtido através do processo de registro.

Usando armazenamento de backup personalizado

Você também pode usar seu próprio armazenamento para backups. SSH pode ser usado para armazenar backups no destino remoto, o servidor de destino precisa do BorgBackup instalado.

Ver também

General na documentação do Borg

Sistema de arquivos local

Recomenda-se especificar o caminho absoluto para o backup local, por exemplo /caminho/para/backup. O diretório deve poder ser escrito pelo usuário executando o Weblate (consulte Permissões do sistema de arquivos). Se ele não existir, o Weblate tenta criá-lo, mas precisa das permissões apropriadas para fazê-lo.

Dica

Ao executar o Weblate no Docker, certifique-se de que o local de backup seja exposto como um volume do contêiner Weblate. Caso contrário, os backups serão descartados pelo Docker na reinicialização do seu contêiner.

Uma opção é colocar backups em um volume existente. Por exemplo, /app/data/borgbackup. Este é um volume existente no contêiner.

Você também pode adicionar um novo contêiner para os backups no arquivo de composição do Docker, por exemplo, usando /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.

Backups remotos

Para criar os backups remotos, você terá que instalar o BorgBackup em outro servidor que seja acessível para sua implantação de Weblate via SSH usando a chave SSH do Weblate:

  1. Prepare um servidor onde seus backups serão armazenados.

  2. Instale o servidor SSH nele (você o receberá por padrão com a maioria das distribuições Linux).

  3. Instale o BorgBackup nesse servidor; a maioria das distribuições Linux tem pacotes disponíveis (consulte Installation).

  4. Escolha um usuário existente ou crie um novo que será usado para backup.

  5. Add Weblate SSH key to the user’s .ssh/authorized_keys file, so that Weblate can SSH to the server without a password (see Chave SSH do Weblate).

  6. Create a user-writable directory where Weblate can remotely set up the Borg backup repository, for example in the home directory (i.e. /home/borg/backups).

  7. Configure the backup location in Weblate as user@host:/home/borg/backups or ssh://user@host:port/home/borg/backups.

  8. Once enabled, the backups will be triggered automatically daily. You can also manually trigger a backup from the Weblate UI or using backup.

Dica

Armazenamento de backup provisionado do Weblate fornece backups remotos automatizados sem qualquer esforço.

Restaurando do BorgBackup

  1. Restaure o acesso ao repositório de backup e prepare sua senha de backup.

  2. Liste todos os backups no servidor usando borg list REPOSITÓRIO.

  3. Restaure o backup desejado para o diretório atual usando borg extract REPOSITÓRIO::PACOTE.

  4. Restaure o banco de dados a partir do despejo de SQL colocado no diretório backup no diretório de dados do Weblate (consulte Dados despejados para os backups).

  5. Copie a configuração do Weblate (backups/settings.py, consulte Dados despejados para os backups) até o local correto, consulte Ajustando a configuração.

    Ao usar o contêiner Docker, o arquivo de configurações já está incluído no contêiner e você deve restaurar as variáveis de ambiente originais. O arquivo environment.yml pode ajudá-lo com isso (consulte Dados despejados para os backups).

  6. Copie todo o diretório de dados restaurados para o local configurado por DATA_DIR.

    Ao usar contêiner do Docker, coloca os dados em um volume de dados, consulte Volumes de contêiner Docker.

    Por favor, certifique-se de que os arquivos possuem a propriedade e permissões corretas, consulte Permissões do sistema de arquivos.

A sessão dos Borg pode parecer com isso:

$ 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:

Ver também

Restoring Docker based setup

The following steps assume the official Docker Compose setup using the bundled PostgreSQL and Valkey services, see Instalando usando Docker. If your deployment uses an external database or a customized Compose file, adapt the database and volume steps to that environment.

Start with a Docker Compose checkout matching the restored deployment. Restore your original Compose overrides, secrets, and environment variables. The environment.yml file from Dados despejados para os backups can help with this, but it is not imported automatically.

  1. Restore the backup archive using Restaurando do BorgBackup or unpack your manual backup so that the Weblate data directory and backups/database.sql are available.

  2. Stop the services which can write to the database or data volume:

    docker compose stop weblate cache
    
  3. Recreate the PostgreSQL volume.

    docker compose stop database
    docker compose rm -v database
    docker volume remove weblate-docker_postgres-data
    

    The volume name depends on the Compose project name and can differ from weblate-docker_postgres-data. Check your setup before removing any volume.

  4. Start the database service:

    docker compose up -d database
    
  5. Restore the database dump:

    cat backups/database.sql | docker compose exec -T database psql --username weblate --dbname weblate
    

    Check that the database name matches POSTGRES_DB and the user matches POSTGRES_USER in your Compose configuration.

  6. Restore the Weblate data directory to the Docker data volume mounted as /app/data, see Volumes de contêiner Docker. Files in this volume have to be owned by UID 1000, see Permissões do sistema de arquivos.

  7. Start the remaining services and follow the logs:

    docker compose up -d
    docker compose logs -f
    

    The Weblate container performs database migrations on startup. If you are also upgrading Weblate, follow Atualizando o contêiner Docker.

  8. Refresh the repositories after the restore:

    docker compose exec --user weblate weblate weblate updategit --all
    

Backup manual

Dependendo do que você deseja salvar, faça backup do tipo de dados que o Weblate armazena em cada lugar.

Dica

Se você estiver fazendo os backups manualmente, você pode querer silenciar os avisos do Weblate sobre a falta de backups adicionando weblate.I028 para SILENCED_SYSTEM_CHECKS em settings.py ou WEBLATE_SILENCED_SYSTEM_CHECKS para o Docker.

SILENCED_SYSTEM_CHECKS.append("weblate.I028")

Banco de dados

O local de armazenamento real depende da configuração do seu banco de dados.

Dica

O banco de dados é o armazenamento mais importante. Configure backups regulares do seu banco de dados. Sem o banco de dados, todas as traduções são perdidas.

Backup nativo do banco de dados

The recommended approach is to save a dump of the database using database-native tools such as pg_dump. It usually performs better than Django backup, and it restores complete tables with all their data.

Você pode restaurar esse backup em uma versão mais nova do Weblate, ele executará todas as migrações necessárias ao executar em migrate. Consulte Atualizando o Weblate sobre informações mais detalhadas sobre como atualizar entre as versões.

Backup do banco de dados do Django

Alternativamente, você pode fazer backup de seu banco de dados utilizando o comando dumpdata do Django. Dessa forma o backup é agnóstico de banco de dados e pode ser usado caso você queira alterar o backend do banco de dados.

Antes de restaurar o banco de dados, você precisa estar usando exatamente a mesma versão do Weblate na qual o backup foi feito. Isso é necessário, pois a estrutura do banco de dados muda entre as versões e você acabaria corrompendo os dados de alguma forma. Depois de instalar a mesma versão, execute todas as migrações do banco de dados usando migrate.

Depois disso, algumas entradas já serão criadas no banco de dados e você as terá no backup do banco de dados também. A abordagem recomendada é excluir essas entradas manualmente usando o shell de gerenciamento (consulte Invocando comandos de gerenciamento):

weblate shell
>>> from weblate.auth.models import User
>>> User.objects.get(username='anonymous').delete()

Arquivos

Se você tiver espaço de backup suficiente, basta fazer backup de todo o DATA_DIR. Esta é uma aposta segura, mesmo que inclua alguns arquivos que você não quer. As seções a seguir descrevem o que você deve fazer backup e o que você pode pular em detalhes.

Dados despejados para os backups

Alterado na versão 4.7: O despejo do ambiente foi adicionado como environment.yml para ajudar na restauração nos ambientes Docker.

Armazenados em DATA_DIR /backups.

O Weblate despeja vários dados aqui, e você pode incluir esses arquivos para backups mais completos. Os arquivos são atualizados diariamente (requer um servidor de “beats” do Celery em execução, consulte Tarefas de fundo usando Celery). Atualmente, isso inclui:

  • Configurações do Weblate como settings.py (existe também a versão expandida em settings-expanded.py).

  • Backup de banco de dados PostgreSQL como database.sql.

  • Despejo do ambiente como environment.yml.

Os backups do banco de dados são salvos como texto simples por padrão, mas eles também podem ser comprimidos ou totalmente ignorados usando DATABASE_BACKUP.

Para restaurar o backup do banco de dados, carregue-o usando ferramentas de banco de dados, por exemplo:

psql --file=database.sql weblate

Repositórios de controle de versão

Armazenados em DATA_DIR /vcs.

Os repositórios de controle de versão contêm uma cópia de seus repositórios upstream com alterações do Weblate. Se você tiver o Enviar ao fazer commit ativado para todos os seus componentes de tradução, todas as alterações do Weblate são incluídas no upstream. Não há necessidade de fazer backup dos repositórios no lado do Weblate, pois eles podem ser clonados novamente a partir do local do upstream sem perda de dados.

Chaves SSH e GPG

Armazenados em DATA_DIR /ssh e DATA_DIR /home.

Se você está usando chaves SSH ou GPG geradas pelo Weblate, você deve fazer backup destes locais. Caso contrário, você vai perder as chaves privadas e você terá que gerar novamente as novas.

Generated SSH wrapper scripts are stored in CACHE_DIR and do not need to be backed up.

Arquivos enviados pelo usuário

Armazenados em DATA_DIR /media.

Você deve fazer o backup de todos os arquivos enviados pelo usuário (por exemplo, Screenshots and visual context).

Tarefas do Celery

A fila de tarefas do Celery pode conter algumas informações, mas geralmente não é necessária para um backup. No máximo, você perderá atualizações ainda não processadas para a memória de tradução. Recomenda-se realizar a atualização de texto completo ou repositório ao restaurar de qualquer maneira, de modo que não há problema em perdê-las.

Linha de comando para backup manual

Usando uma tarefa de cron, você pode configurar um comando do Bash para ser executado diariamente, por exemplo:

$ tar -Jcf ~/backup/weblate-backup-$(date -u +%Y-%m-%d_%H%M%S).xz backups vcs ssh home media fonts secret

Você pode ajustar a lista de pastas e arquivos às suas necessidades. Para evitar salvar a memória de tradução (na pasta backups), você pode usar:

$ 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

Restaurando backup manual

  1. Restaure todos os dados dos quais você tenha feito backup.

  2. Atualize todos repositórios usando o updategit.

    weblate updategit --all
    

Movendo uma instalação do Weblate

Realoque a instalação de um sistema diferente, seguindo as instruções de backup e restauração acima.