Respaldar y trasladar Weblate

Copias de respaldo a nivel del proyecto

Added in version 4.14.

El proyecto crea copias de respaldo de todo el contenido de la traducción en Weblate (proyectos, componentes, traducciones, comentarios de las cadenas, sugerencias o comprobaciones). También es posible transferir entre proyectos de Weblate.

Se puede realizar un respaldo del proyecto en OperationsBackups. El respaldo se puede restaurar al crear un proyecto (ver Añadir proyectos y componentes de traducción).

Actualmente las copias de respaldo no incluyen la información de control de acceso ni el historial.

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.

Las copias de respaldo se guardan en el servidos que se configuró como PROJECT_BACKUP_KEEP_DAYS y PROJECT_BACKUP_KEEP_COUNT (por defecto se guardan hasta 3 copias de respaldo por 30 días).

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.

Utilice el archivo generado para importar el proyecto cuando Añadir proyectos y componentes de traducción o en import_projectbackup.

Nota

La restauración de la copia de seguridad puede fallar si el servidor de restauración tiene un conjunto diferente de Definiciones de idioma o una configuración diferente de SIMPLIFY_LANGUAGES. La restauración te indicará qué códigos de idioma no se han podido procesar y podrás añadir manualmente las definiciones de los idiomas que falten.

Copia de respaldo automatizada utilizando BorgBackup

Weblate tiene soporte integrado para crear copias de respaldo de servicios usando BorgBackup. Borg crea copias de respaldo cifradas que ocupan poco espacio y que se pueden almacenar de forma segura en la nube. Las copias de respaldo se pueden controlar en la interfaz de gestión desde la pestaña Backups.

Distinto en la versión 4.4.1: Se incluye la base de datos PostgreSQL en las copias de respaldo automatizadas.

Las copias de respaldo que utilizan Borg son incrementales y Weblate está configurado para mantener las siguientes copias de respaldo:

  • Copias de respaldo diarias para 14 días

  • Copias de respaldo semanales para 8 semanas

  • Copias de respaldo mensuales para 6 meses

../_images/backups.webp

Clave de cifrado de Borg

BorgBackup crea copias de respaldo cifradas y no podrá restaurarlas sin la frase de contraseña. La frase de contraseña se genera al agregar un nuevo servicio de respaldo y debe copiarla y guardarla en un lugar seguro.

Si utilizas Almacenamiento de copia de seguridad proporcionado por Weblate, haz una copia de respaldo de tu clave SSH privada también, ya que se utiliza para acceder a sus copias de respaldo.

Ver también

borg init

Personalización de la copia de seguridad

  • La copia de seguridad de la base de datos se puede configurar mediante DATABASE_BACKUP.

  • La creación de copias de respaldo puede personalizarse mediante BORG_EXTRA_ARGS.

Almacenamiento de copia de seguridad proporcionado por Weblate

La forma más sencilla de hacer una copia de seguridad de su instancia de Weblate es adquirir el servicio de copia de seguridad en weblate.org. Así es como se pone en marcha:

  1. Compre el Servicio de copia de seguridad en https://welate.org/support/#backup.

  2. Introduzca la clave obtenida en la interfaz de gestión, consulte Integración de asistencia.

  3. Weblate se conecta al servicio en la nube y obtiene información de acceso para las copias de respaldo.

  4. Active la nueva configuración de las copias de respaldo desde la pestaña Backups.

  5. Haga una copia de respaldo de sus credenciales de Borg para poder restaurar las copias de respaldo, consulte Clave de cifrado de Borg.

Consejo

El paso manual de encender todo está ahí para su seguridad. Sin tu consentimiento no se envía ningún dato al repositorio de copias de respaldo obtenido a través del proceso de registro.

Utilizar un almacenamiento personalizado para los respaldos

También puede utilizar su propio almacenamiento para las copias de respaldo. Se puede utilizar SSH para almacenar las copias de respaldo en el destino remoto, el servidor de destino necesita tener instalado BorgBackup.

Ver también

General en la documentación de Borg

Sistema de archivos local

Es recomendable especificar una ruta absoluta para la copia de respaldo local, como /ruta/al/respaldo. El directorio debe ser escribible por la cuenta de usuario que ejecute Weblate (consulte Permisos del sistema de archivos). Si no existe la ubicación, Weblate intentará crearla, pero necesita permiso para hacerlo.

Consejo

Siempre que se ejecute Weblate en Docker, hay que asegurarse de que el lugar de las copias de respaldo esté expuesta como volumen desde el contenedor de Weblate. De otro modo, Docker descartará las copias de respaldo al momento de reiniciar el contenedor.

Una opción es colocar las copias de respaldo en un volumen existente, por ejemplo /app/data/borgbackup. Este es un volumen existente en el contenedor.

También puede añadir un nuevo contenedor para las copias de respaldo en el archivo Docker Compose, por ejemplo, utilizando /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.

Copias de respaldo remotas

Para crear copias de respaldo remotas, tendrá que instalar BorgBackup en otro servidor que sea accesible para su implementación de Weblate a través de SSH utilizando la clave SSH de Weblate:

  1. Prepare un servidor donde se almacenarán sus copias de respaldo.

  2. Instala el servidor SSH en él (lo tendrás por defecto con la mayoría de las distribuciones de Linux).

  3. Instale BorgBackup en ese servidor; la mayoría de las distribuciones de Linux tienen paquetes disponibles (véase Installation).

  4. Elija un usuario existente o cree un nuevo usuario que se utilizará para las copias de respaldo.

  5. Añade la clave SSH de Weblate al archivo .ssh/authorized_keys del usuario, tal que ese Weblate pueda acceder por SSH al servidor sin necesidad de contraseña (consulte Clave SSH de Weblate).

  6. Crea un directorio escribible por usuario donde Weblate pueda configurar remotamente el repositorio de respaldo Borg, por ejemplo en el directorio inicial (p.e. /home/borg/backups).

  7. Configure el lugar del respaldo en Weblate como usuario@host:/home/usuario/backups o ssh://usuario@host:puerto/home/usuario/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.

Consejo

Almacenamiento de copia de seguridad proporcionado por Weblate le proporciona copias de respaldo remotas automatizadas sin ningún esfuerzo.

Restaurar a partir de BorgBackup

  1. Restablece el acceso a tu repositorio de copias de respaldo y prepara tu frase de acceso a las mismas.

  2. Listar todas las copias de respaldo en el servidor usando borg list REPOSITORY.

  3. Restaura la copia de seguridad deseada en el directorio actual utilizando borg extract REPOSITORY::ARCHIVE.

  4. Restaure la base de datos desde el volcado de SQL colocado en el directorio backup en el directorio de datos de Weblate (ver Datos volcados para las copias de respaldo).

  5. Copie la configuración de Weblate (backups/settings.py, consulte Datos volcados para las copias de respaldo) en el lugar correcto, consulte Ajustar configuración.

    Cuando se utiliza un contenedor Docker, el archivo de configuración ya está incluido en el contenedor y debe restaurar las variables de entorno originales. El archivo environment.yml podría ayudarte con esto (ver Datos volcados para las copias de respaldo).

  6. Copiar todo el directorio de datos restaurado en el lugar configurado por DATA_DIR.

    Si utiliza un contenedor Docker, coloque los datos en el volumen de datos, véase Volúmenes de contenedores Docker.

    Por favor, asegúrese de que los archivos tienen la propiedad y los permisos correctos, véase Permisos del sistema de archivos.

La sesión de Borg podría verse así:

$ 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 también

Restaurar configuración basada en Docker

Los siguientes pasos asumen la configuración oficial de Docker Compose utilizando los servicios PostgreSQL y Valkey incluidos, consulte Instalar con Docker. Si su implementación utiliza una base de datos externa o un archivo Compose personalizado, adapte los pasos de la base de datos y del volumen a ese entorno.

Comience con una copia de Docker Compose que coincida con la implementación restaurada. Restaura tus configuraciones originales de Compose, secretos y variables de entorno. El archivo environment.yml de Datos volcados para las copias de respaldo puede ayudar con esto, pero no se importa automáticamente.

  1. Restaure el archivador de respaldo usando Restaurar a partir de BorgBackup o desempaquete su respaldo manual tal que el directorio de datos de Weblate y backups/database.sql estén disponibles.

  2. Detenga los servicios que puedan escribir en la base de datos o en el volumen de datos:

    docker compose stop weblate cache
    
  3. Recree el volumen PostgreSQL.

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

    El nombre del volumen depende del nombre del proyecto Compuse y puede diferir desde weblate-docker_postgres-data. Comprueba su configuración antes de retirar cualquier volumen.

  4. Inicie el servicio de la base de datos:

    docker compose up -d database
    
  5. Restaurar el volcado de la base de datos:

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

    Compruebe que el nombre de la base de datos coincide con POSTGRES_DB y el usuario coincide con POSTGRES_USER en su configuración de Compose.

  6. Restaura el directorio de datos de Weblate al volumen de datos Docker montado como /app/data, consulte Volúmenes de contenedores Docker. Los archivos en este volumen tienen que ser propiedad de UID 1000, consulte Permisos del sistema de archivos.

  7. Inicie los servicios restantes y siga las bitácoras:

    docker compose up -d
    docker compose logs -f
    

    El contenedor de Weblate realiza migraciones de base de datos al arranque. Si también mejora Weblate, siga Actualizar el contenedor de Docker.

  8. Recarga los repositorios tras la restauración:

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

Copia de respaldo manual

En función de lo que desee guardar, respalde los tipos de datos que Weblate almacena en cada sitio respectivo.

Consejo

Si estás haciendo las copias de respaldo manuales, puede que quieras silenciar el aviso de Weblate sobre la falta de copias de respaldo añadiendo weblate.I028 a SILENCED_SYSTEM_CHECKS en settings.py o WEBLATE_SILENCED_SYSTEM_CHECKS para Docker.

SILENCED_SYSTEM_CHECKS.append("weblate.I028")

Base de datos

El lugar real del almacenamiento depende de su configuración de la base de datos.

Consejo

El almacenamiento más importante es el de la base de datos. Configure copias de respaldo periódicas de la base de datos. Sin esta, todas las traducciones desaparecerán.

Copia de seguridad de la base de datos nativa

El enfoque recomendado es guardar un volcado de la base de datos utilizando herramientas nativas de la base de datos como pg_dump. Suele funcionar mejor que la copia de seguridad de Django, y restaura tablas completas con todos sus datos.

Puedes restaurar esta copia de seguridad en una versión más reciente de Weblate, realizará todas las migraciones necesarias cuando se ejecute en migrate. Por favor, consulta Modernizar Weblate para más información detallada sobre cómo migrar entre versiones.

Copia de seguridad de la base de datos de Django

Alternativamente, puedes hacer una copia de seguridad de tu base de datos utilizando el comando dumpdata de Django. De esta manera la copia de seguridad es agnóstica a la base de datos y puede ser utilizada en caso de que quieras cambiar el backend de la base de datos.

Antes de restaurar la base de datos, debes ejecutar exactamente la misma versión de Weblate en la que hiciste la copia de seguridad. Esto es necesario ya que la estructura de la base de datos cambia entre versiones y podría corromper los datos de alguna manera. Después de instalar la misma versión, ejecuta todas las migraciones de las bases de datos utilizando migrate.

Después, algunas entradas ya estarán creadas en la base de datos y las tendrá también en la copia de respaldo de la base de datos. Lo recomendable es eliminar dichas entradas manualmente utilizando el intérprete de gestión (consulte Invocar órdenes de gestión):

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

Archivos

Si tiene suficiente espacio para hacer copias de respaldo, simplemente haga una copia de respaldo de todo el DATA_DIR. Esto es una apuesta segura incluso si incluye algunos archivos que no quieres. Las siguientes secciones describen en detalle lo que debes respaldar y lo que puedes omitir.

Datos volcados para las copias de respaldo

Distinto en la versión 4.7: El volcado del entorno fue agregado como environment.yml para ayudar en la restauración en los entornos Docker.

Almacenados en DATA_DIR /backups.

Weblate vuelca varios datos aquí, y puedes incluir estos archivos para obtener copias de respaldo más completas. Los archivos se actualizan diariamente (se requiere un servidor de beats Celery en funcionamiento, véase Tareas en segundo plano con Celery). Actualmente, esto incluye:

  • Ajustes de Weblate como settings.py (también hay una versión ampliada en settings-expanded.py).

  • Copia de seguridad de la base de datos PostgreSQL como database.sql.

  • Volcado del entorno como environment.yml.

Las copias de respaldo de la base de datos se guardan como texto plano por defecto, pero también pueden comprimirse o saltarse por completo utilizando DATABASE_BACKUP.

Para restaurar la copia de seguridad de la base de datos, cárguela utilizando herramientas de base de datos, por ejemplo:

psql --file=database.sql weblate

Repositorios de control de versiones

Almacenado en DATA_DIR /vcs.

Los repositorios de control de versiones contienen una copia de tus repositorios en desarrollo con los cambios de Weblate. Si tienes Enviar al consolidar activado para todos tus componentes de traducción, todos los cambios de Weblate se incluyen en el flujo ascendente. No es necesario hacer una copia de respaldo de los repositorios en el lado de Weblate, ya que se pueden clonar de nuevo desde el lugar de subida sin pérdida de datos.

Claves SSH y GPG

Almacenado en DATA_DIR /ssh y DATA_DIR /home.

Si utiliza las claves SSH o GPG que Weblate genera, debe realizar copias de respaldo de esos lugares. De lo contrario, perderá las claves privadas y habrá de generar nuevas.

Los script de cobertura SSH generados son almacenados en CACHE_DIR y no necesita ser respaldado.

Archivos cargados por los usuarios

Almacenado en DATA_DIR /media.

Debe crear copias de respaldo de todos los archivos que cargan los usuarios (p. ej., Captura de pantalla y contexto visual).

Tareas de Celery

La cola de tareas de Celery puede contener alguna información, pero normalmente no es necesaria para una copia de seguridad. A lo sumo se perderán las actualizaciones que aún no han sido procesadas en la memoria de traducción. Se recomienda realizar la actualización del texto completo o del repositorio en el momento de la restauración, por lo que no hay problema en perderlos.

Órdenes de interfaz de texto para efectuar copias de respaldo manualmente

Con la ayuda de una tarea de cron es posible montar una orden de Bash que se ejecute diariamente. Por ejemplo:

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

Puede ajustar la lista de carpetas y de archivos para adecuarla a sus necesidades. Para evitar guardar la memoria de traducción (en la carpeta de las copias de respaldo), puede utilizar:

$ 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

Restaurar una copia de respaldo manual

  1. Restaure todos los datos de los que ha hecho copia de respaldo.

  2. Actualiza todos los repositorios usando updategit.

    weblate updategit --all
    

Trasladar una instalación de Weblate

Para mudar su instalación a un sistema diferente, siga las instrucciones de respaldo y restauración anteriores.