Säkerhetskopiera och flytta Weblate

Säkerhetskopior på projektnivå

Added in version 4.14.

Varning

Återställning av säkerhetskopior stöds endast när PostgreSQL eller MariaDB 10.5+ används som databas.

Projektet säkerhetskopierar allt översättningsinnehåll från Weblate (projekt, komponenter, översättningar, strängkommentarer, förslag eller kontroller). Det är lämpligt för att överföra ett projekt till en annan Weblate-instans.

Du kan göra en säkerhetskopia av projektet i OperationsBackups. Säkerhetskopian kan återställas när du skapar ett projekt (se Lägga till översättningsprojekt och komponenter).

Säkerhetskopiorna innehåller för närvarande inte information om åtkomstkontroll och historik.

Kommentarerna och förslagen backas upp med ett användarnamn för den användare som skapade dem. Vid import tilldelas de en matchande användare. Om det inte finns någon användare med det användarnamnet tilldelas de en anonym användare.

De genererade säkerhetskopiorna sparas på servern enligt konfigurationen i PROJECT_BACKUP_KEEP_DAYS och PROJECT_BACKUP_KEEP_COUNT (standardinställningen är att spara högst 3 säkerhetskopior i 30 dagar).

Använd den genererade filen för att importera projektet när du Lägga till översättningsprojekt och komponenter eller i import_projectbackup.

Observera

Återställningen av säkerhetskopian kan misslyckas om återställningsservern har en annan uppsättning Språkliga definitioner eller en annan konfiguration av SIMPLIFY_LANGUAGES. Återställningen kommer att visa vilka språkkoder som inte kunde bearbetas och du kan sedan lägga till saknade språkdefinitioner manuellt.

Automatisk säkerhetskopiering med BorgBackup

Weblate har inbyggt stöd för att skapa säkerhetskopior av tjänsten med hjälp av BorgBackup. Borg skapar utrymmeseffektiva krypterade säkerhetskopior som kan lagras säkert i molnet. Säkerhetskopiorna kan kontrolleras i administrationsgränssnittet från fliken Backups.

Förändrat i version 4.4.1: Både PostgreSQL- och MySQL/MariaDB-databaser ingår i de automatiska säkerhetskopiorna.

Säkerhetskopiorna med Borg är inkrementella och Weblate är konfigurerat för att behålla följande säkerhetskopior:

  • Dagliga säkerhetskopior i 14 dagar tillbaka

  • Veckobackuper för 8 veckor tillbaka

  • Månatliga säkerhetskopior för 6 månader tillbaka

../_images/backups.webp

Borg-krypteringsnyckel

BorgBackup skapar krypterade säkerhetskopior och du kan inte återställa dem utan lösenordet. Lösenordet genereras när du lägger till en ny säkerhetskopieringstjänst och du bör kopiera det och förvara det på ett säkert ställe.

Om du använder Weblate tillhandahöll backup-lagring, vänligen säkerhetskopiera även din privata SSH-nyckel, eftersom den används för att komma åt dina säkerhetskopior.

Se även

borg init

Anpassa säkerhetskopiering

Weblate tillhandahöll backup-lagring

Det enklaste sättet att säkerhetskopiera din Weblate-instans är att köpa säkerhetskopieringstjänsten på weblate.org. Så här får du igång den:

  1. Köp tjänsten ”Backup service” på https://weblate.org/support/#backup.

  2. Ange den erhållna nyckeln i hanteringsgränssnittet, se Integrering av support.

  3. Weblate ansluter till molntjänsten och hämtar åtkomstinformation för säkerhetskopiorna.

  4. Aktivera den nya säkerhetskopieringskonfigurationen från fliken Backups.

  5. Säkerhetskopiera dina Borg-inloggningsuppgifter så att du kan återställa säkerhetskopiorna, se Borg-krypteringsnyckel.

Råd

Det manuella steget att slå på allt finns där för din säkerhet. Utan ditt samtycke skickas inga data till det backup-arkiv som erhållits genom registreringsprocessen.

Använda anpassad säkerhetskopieringslagring

Du kan också använda din egen lagringsplats för säkerhetskopiorna. SSH kan användas för att lagra säkerhetskopior på den fjärranslutna destinationen, men målservrarna måste ha BorgBackup installerat.

Se även

General i Borg-dokumentationen

Lokalt filsystem

Det rekommenderas att ange den absoluta sökvägen för den lokala säkerhetskopian, till exempel /path/to/backup. Katalogen måste vara skrivbar för den användare som kör Weblate (se Filssystemets behörigheter). Om den inte finns försöker Weblate skapa den, men behöver rätt behörighet för att göra det.

Råd

När du kör Weblate i Docker, se till att säkerhetskopieringsplatsen är exponerad som en volym från Weblate-containern. Annars kommer säkerhetskopiorna att kasseras av Docker när containern startas om.

Ett alternativ är att placera säkerhetskopior i en befintlig volym, till exempel /app/data/borgbackup. Detta är en befintlig volym i containern.

Du kan också lägga till en ny behållare för säkerhetskopiorna i Docker Compose-filen, till exempel genom att använda /borgbackup:

services:
  weblate:
    volumes:
      - /home/weblate/data:/app/data
      - /home/weblate/borgbackup:/borgbackup

Katalogen där säkerhetskopiorna ska lagras måste ägas av UID 1000, annars kan Weblate inte skriva säkerhetskopiorna där.

Fjärrbackuper

För att skapa fjärrbackuper måste du installera BorgBackup på en annan server som är tillgänglig för din Weblate-distribution via SSH med hjälp av Weblate SSH-nyckeln:

  1. Förbered en server där dina säkerhetskopior ska lagras.

  2. Installera SSH-servern på den (den ingår som standard i de flesta Linux-distributioner).

  3. Installera BorgBackup på den servern; de flesta Linux-distributioner har paket tillgängliga (se Installation).

  4. Välj en befintlig användare eller skapa en ny användare som ska användas för säkerhetskopiering.

  5. Lägg till Weblate SSH-nyckel till användarens .ssh/authorized_keys-fil, så att Weblate kan ansluta till servern via SSH utan lösenord (se Weblate SSH-nyckel).

  6. Skapa en katalog som användaren kan skriva i, där Weblate kan fjärrkonfigurera Borg-säkerhetskopieringsarkivet, till exempel i hemkatalogen (dvs. /home/borg/backups).

  7. Konfigurera säkerhetskopieringsplatsen i Weblate som user@host:/home/borg/backups eller ssh://user@host:port/home/borg/backups.

  8. När funktionen är aktiverad kommer säkerhetskopieringen att startas automatiskt varje dag. Du kan också starta en säkerhetskopiering manuellt från Weblate-gränssnittet.

Råd

Weblate tillhandahöll backup-lagring ger dig automatiska fjärrbackuper utan någon ansträngning.

Återställning från BorgBackup

  1. Återställ åtkomsten till ditt säkerhetskopieringsarkiv och förbered din säkerhetskopieringslösenord.

  2. Lista alla säkerhetskopior på servern med borg list REPOSITORY.

  3. Återställ önskad säkerhetskopia till den aktuella katalogen med hjälp av borg extract REPOSITORY::ARCHIVE.

  4. Återställ databasen från SQL-dumpen som finns i katalogen backup i Weblate-datakatalogen (se Dumpade data för säkerhetskopior).

  5. Kopiera Weblate-konfigurationen (backups/settings.py, se Dumpade data för säkerhetskopior) till rätt plats, se Justera konfigurationen.

    När du använder Docker-containern ingår inställningsfilen redan i containern och du bör återställa de ursprungliga miljövariablerna. Filen environment.yml kan hjälpa dig med detta (se Dumpade data för säkerhetskopior).

  6. Kopiera hela den återställda datakatalogen till den plats som konfigurerats av DATA_DIR.

    När du använder Docker-container placerar du data i datavolymen, se Docker-containervolymer.

    Se till att filerna har rätt ägarskap och behörigheter, se Filssystemets behörigheter.

Borg-sessionen kan se ut så här:

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

Manuell säkerhetskopiering

Beroende på vad du vill spara, säkerhetskopiera den typ av data som Weblate lagrar på respektive plats.

Råd

Om du gör manuella säkerhetskopior kan du stänga av Weblates varning om bristande säkerhetskopior genom att lägga till weblate.I028 till SILENCED_SYSTEM_CHECKS i settings.py eller WEBLATE_SILENCED_SYSTEM_CHECKS för Docker.

SILENCED_SYSTEM_CHECKS.append("weblate.I028")

Databas

Den faktiska lagringsplatsen beror på din databasinställning.

Råd

Databasen är den viktigaste lagringsplatsen. Ställ in regelbundna säkerhetskopieringar av din databas. Utan databasen försvinner alla översättningar.

Inbyggd databasbackup

Det rekommenderade tillvägagångssättet är att spara en dump av databasen med hjälp av databasens egna verktyg, såsom pg_dump eller mysqldump. Det fungerar vanligtvis bättre än Djangos säkerhetskopiering och återställer kompletta tabeller med all data.

Du kan återställa denna säkerhetskopia i en nyare version av Weblate, som kommer att utföra alla nödvändiga migreringar när den körs i migrate. Se Uppgradering av Weblate för mer detaljerad information om hur du uppgraderar mellan versioner.

Django-databasbackup

Alternativt kan du säkerhetskopiera din databas med hjälp av Djangos kommando dumpdata. På så sätt är säkerhetskopian databasoberoende och kan användas om du vill byta databasbackend.

Innan du återställer databasen måste du köra exakt samma version av Weblate som säkerhetskopian skapades på. Detta är nödvändigt eftersom databasstrukturen förändras mellan olika versioner och du annars riskerar att skada data på något sätt. Efter att ha installerat samma version kör du alla databasmigreringar med migrate.

Efteråt kommer vissa poster redan att ha skapats i databasen och du kommer också att ha dem i databasens säkerhetskopia. Det rekommenderade tillvägagångssättet är att radera sådana poster manuellt med hjälp av administrationsskalet (se Använda administrationskommandon):

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

Filer

Om du har tillräckligt med utrymme för säkerhetskopiering kan du helt enkelt säkerhetskopiera hela DATA_DIR. Detta är ett säkert val även om det innehåller några filer som du inte vill ha. I följande avsnitt beskrivs i detalj vad du bör säkerhetskopiera och vad du kan hoppa över.

Dumpade data för säkerhetskopior

Förändrat i version 4.7: Miljödumpen lades till som environment.yml för att underlätta återställningen i Docker-miljöerna.

Lagras i DATA_DIR /backups.

Weblate sparar olika data här, och du kan inkludera dessa filer för mer kompletta säkerhetskopior. Filerna uppdateras dagligen (kräver en körande Celery beats-server, se Bakgrundsuppgifter med Celery). För närvarande inkluderar detta:

  • Weblate-inställningar som settings.py (det finns också en utökad version i settings-expanded.py).

  • PostgreSQL-databasbackup som database.sql.

  • Miljö dump som environment.yml.

Databasbackuperna sparas som vanlig text som standard, men de kan också komprimeras eller helt hoppas över med hjälp av DATABASE_BACKUP.

För att återställa databasbackupen, ladda den med hjälp av databasverktyg, till exempel:

psql --file=database.sql weblate

Versionskontrollförvar

Lagras i DATA_DIR /vcs.

Versionskontrollförvaren innehåller en kopia av dina uppströmsförvar med Weblate-ändringar. Om du har Skicka vid incheckning aktiverat för alla dina översättningskomponenter inkluderas alla Weblate-ändringar uppströms. Det finns inget behov av att säkerhetskopiera förvaren på Weblate-sidan eftersom de kan klonas igen från uppströmsplatsen utan dataförlust.

SSH- och GPG-nycklar

Lagras i DATA_DIR /ssh och DATA_DIR /home.

Om du använder SSH- eller GPG-nycklar som genererats av Weblate bör du säkerhetskopiera dessa platser. Annars förlorar du de privata nycklarna och måste generera nya.

Användaruppladdade filer

Lagras i DATA_DIR /media.

Du bör säkerhetskopiera alla filer som användare har laddat upp (t.ex. Visuellt sammanhang för strängar).

Selleriuppgifter

Celery-uppgiftskön kan innehålla viss information, men behövs vanligtvis inte för en säkerhetskopiering. Du förlorar högst uppdateringar som ännu inte har bearbetats till översättningsminnet. Det rekommenderas ändå att utföra fulltext- eller arkivuppdateringen vid återställningen, så det är inget problem att förlora dessa.

Kommandorad för manuell säkerhetskopiering

Med hjälp av ett cron-jobb kan du ställa in ett Bash-kommando som ska köras dagligen, till exempel:

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

Du kan anpassa listan över mappar och filer efter dina behov. För att undvika att spara översättningsminnet (i mappen för säkerhetskopior) kan du använda:

$ 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

Återställa manuell säkerhetskopia

  1. Återställ alla data som du har säkerhetskopierat.

  2. Uppdatera alla arkiv med updategit.

    weblate updategit --all
    

Flytta en Weblate-installation

Flytta din installation till ett annat system genom att följa instruktionerna för säkerhetskopiering och återställning ovan.