Skava Skava / Wiki

Företagsbackupar

Företagsadministratörer och ägare öppnar sitt företag i webbappen och väljer Backupar. De kan begära backupar, ladda ner ZIP-filer och hantera API-nycklar för sin backupserver. Denna export är inte tillgänglig i mobilappen.

Omfattning och begränsningar

Backupen innehåller företagets vanliga projektchatter, inklusive arkiverade chatter, med meddelanden, reaktioner, chattkort och deras tillhörande uppladdade bilagor. Den innehåller även metadata för projekt och chatter, deltagarnamn och publicerade företagsdokument i dessa chatter. Företagsadministratörer och ägare kan backa upp företagschatter de inte personligen har anslutit sig till.

Direkta meddelanden, privata anteckningar, personligt synliga tjänster, chattar mellan företag och personliga utkast är uteslutna. Företagsdriv och innehåll i externa länkar ingår inte i denna chattexport. Saknade tillhörande bilagor gör att genereringen misslyckas. ZIP-filen är en dataexport; automatisk import tillbaka till Skava är inte tillgänglig ännu.

Kvoter, inkrementer och behållning

Varje företag kan begära en fullständig backup inom 7 dagar och två inkrementella backuper inom 24 timmar. Dessa rullande tidsfönster startar vid varje begäran. Att ladda ner samma färdiga fil igen förbrukar ingen genereringskvot. Misslyckade genereringsjobb räknas inte in i dessa gränser.

Varje inkrement innehåller ändringar och borttagningar sedan den senaste fullt överförda och kontrollsumma-bekräftade backusen. Kedjan är A + B + C: A är den fullständiga backusen, B innehåller ändringar sedan A och C endast ytterligare ändringar sedan B. Återställ tillståndet genom att tillämpa alla paket i ordning. Oförändrade bilagor hänvisar till filer som redan finns i denna kedja.

Nedladdningar är tillgängliga i 24 timmar efter att genereringen är klar. Därefter tas ZIP-filen bort medan historiken kvarstår. Spara den fullständiga backusen och alla tillhörande inkrement lokalt. Jämförandestatet är användbart i högst 90 dagar efter den fullständiga backusen; en ny fullständig backup krävs därefter. Varje inkrement identifierar både den fullständiga backusen och dess direkta föregångare via ID och SHA-256.

Endast ett fullt mottaget och bekräftat paket blir den nya föregångaren. Ett färdigt, obekräftat inkrement blockerar ett annat inkrement tills det är bekräftat eller utgånget. När ett obekräftat paket löper ut, startar nästa försök från det senaste bekräftade tillståndet och inkluderar de ändringar som ännu inte har backats upp. Om en bekräftad del saknas lokalt, ladda ner den igen inom dess 24 timmars tillgänglighet eller starta en ny fullständig backup enligt den veckovisa gränsen. Föredra en gemensam backup-mapp per företag; oberoende klienter måste behålla samma kompletta kedja.

Skapa en API-nyckel

Under API-nycklar anger du ett namn som "Företags NAS" och skapar nyckeln. Den visas en gång, löper ut efter ett år och kan återkallas när som helst. Spara den i ditt backupmiljö skyddade hemlig lagring. Företaget äger nyckeln, som endast kan komma åt företagets backup-API. Den fungerar oberoende av skaparens senare inloggning.

Skicka den via HTTPS i Authorization: Bearer YOUR_BACKUP_TOKEN-rubriken. Håll nycklar borta från URL:er, publika skript och loggar. Endast företagsadministratörer och ägare kan skapa, lista och återkalla nycklar.

Webapp: API-nyckel med utgångsdatum och åtgärd för återkallande
Hantering av nycklar i webappen: namn, giltighet och återkallande för varje säkerhetskopieringsprogram.

Python: ladda ner en fullständig backup och inkrementella uppdateringar

Ladda ner company_backup.py Python-klienten och placera den bredvid ditt skript. Den kräver Python 3.10 eller nyare på Linux eller macOS och använder endast standardbiblioteket. Sätt SKAVA_BACKUP_TOKEN i den skyddade processmiljön och ersätt 42 med företags-ID:t från webbtillämpningens adress.

import os
from company_backup import BackupClient

client = BackupClient("https://chat.skava.io", 42,
                      os.environ["SKAVA_BACKUP_TOKEN"])
full = client.backup("full", "backups")  # once every 7 days
# Later, up to twice in a rolling 24-hour window:
diff = client.backup("diff", "backups")

Planerade jobb kan anropa samma klient direkt:

python3 company_backup.py --company 42 --kind full --directory backups
python3 company_backup.py --company 42 --kind diff --directory backups

Klienten begär generering, pollar status, strömmar nerladdningen till disken, kontrollerar storlek, SHA-256 och ZIP-innehåll samt bekräftar mottagandet. Den sparar fullständiga och inkrementella säkerhetskopior som separata filer. Behåll den dolda statusfilen i den katalogen: den innehåller kedjan och återupptagningsinformation. Innan en ny inkrementell begärs verifierar klienten varje tidigare ZIP-fil. Efter ett avbrott upprepar du samma kommando. Samtidiga jobb för samma företag i samma katalog förhindras.

API-flöde utan en beständig anslutning

  1. Begäran: POST /api/v1/companies/42/backups med {"kind":"full","request_id":"YOUR_UNIQUE_ID"}. För en inkrementell, sätt kind till diff och skicka ditt lokala fullständiga säkerhetskopierings-ID som base_id och det senast bekräftade paket-ID:t som parent_id. Svarskoden tillhandahåller job.id. Återanvänd samma request_id vid omprövning.
  2. Pollning: GET /api/v1/companies/42/backups/JOB_ID, ungefär var tionde sekund. Genereringen körs i bakgrunden under queued eller running. Ingen anslutning hålls öppen mellan begäranden.
  3. Hämta: Vid ready med available: true, anropar du GET /api/v1/companies/42/backups/JOB_ID/download. Endast denna överföring håller en anslutning öppen. Om den avbryts, hämtar du hela filen igen.
  4. Bekräfta mottagande: Kontrollera job.bytes och job.sha256. Hämta X-Backup-Download-Id och X-Backup-Receipt från svarsrubrikerna vid hämtningen. Skicka POST /api/v1/companies/42/backups/JOB_ID/downloads/DOWNLOAD_ID/confirm med {"receipt":"RECEIPT","bytes":12345,"sha256":"SHA256"}. Endast en komplett överföring med en matchande bekräftelse räknas som lyckad.

GET /api/v1/companies/42/backups returnerar historik, paginerad via next_offset. Utnyttjade kvoter eller tillfälliga kapacitetsgränser returnerar HTTP 429 med Retry-After. Säkerhetskopior genereras sekventiellt inom gränserna så att samtidiga nattjobb inte överbelastar applikationen.

Förstå hämtningshistorik

Historiken visar typ (komplett eller inkrementell), begäranstid, utgång, komplett säkerhetskopia, föregående version och varje hämtningsförsök med överförda bytes. "Klar" identifierar en genererad fil. "Överförd" betyder att servern skickade alla bytes. "Kontrollsumma bekräftad" betyder att klienten verifierade och bekräftade fullt mottagande. Avbrutna och misslyckade försök förblir synliga.

Webapp: inkrementell säkerhetskopiering med föregående version, utgångsdatum för nedladdning och bekräftad kontrollsumma
Nedladdningshistoriken visar säkerhetskopieringskedjan, 24-timmarsfönstret och verifierad mottagning av all data.

Webappen verifierar mottagandet i webbläsaren innan sparrutan visas. Bekräftelsen bevisar inte att filen har lagrats permanent på din dator. För automatiska säkerhetskopior skriver Python-klienten filen till disken innan den bekräftar mottagandet. Nedladdningar i webappen är begränsade till 64 MiB. Använd Python-klienten för större arkiv.