Skava Skava / Wiki

Selskapsbackup

Selskapsadministratorer og eiere åpner selskapet sitt i nettappen og velger Backups. De kan be om backups, laste ned ZIP-filer og administrere API-nøkler for backup-tjeneren sin. Denne eksporten er ikke tilgjengelig i mobilappen.

Omfang og begrensninger

Backupen inneholder selskapets vanlige prosjektchatter, inkludert arkiverte chatter, med meldinger, reaksjoner, chatkort og tilknyttede opplastede vedlegg. Den inkluderer også prosjekt- og chatmetadata, deltakernavn og publiserte selskapsdokumenter i disse chattene. Selskapsadministratorer og eiere kan ta backup av selskapschatter de ikke personlig har deltatt i.

Direktemeldinger, private notater, personlig synlige tjenester, tverrgående selskapschatter og personlige utkast er ekskludert. Selskapsdisk og innhold i eksterne lenker ligger utenfor denne chat-eksporten. Manglende tilknyttede vedlegg får genereringen til å feile. ZIP-filen er en dataeksport, og automatisk import tilbake til Skava er ikke tilgjengelig ennå.

Kvoter, inkrementer og beholdelse

Hvert selskap kan be om en fullstendig sikkerhetskopi innen 7 dager og to inkrementelle sikkerhetskopier innen 24 timer. Disse rullende vinduene starter ved hver forespørsel. Å laste ned den samme ferdige filen på nytt bruker ikke opp genereringskvoten. Mislykkede genereringsjobber teller ikke mot disse grensene.

Hvert inkrement inneholder endringer og slettinger siden sist fullstendig overførte og kontrollsumbekreftede sikkerhetskopier. Kjeden er A + B + C: A er den fullstendige sikkerhetskopien, B inneholder endringer siden A, og C kun ytterligere endringer siden B. Gjenopprett tilstanden ved å anvende hver pakke i rekkefølge. Uendvedte vedlegg henviser til filer som allerede finnes i denne kjeden.

Last ned er tilgjengelig i 24 timer etter at genereringen er fullført. ZIP-filen fjernes deretter, mens historikken beholdes. Behold den fullstendige sikkerhetskopien og alle tilknyttede inkrementer lokalt. Sammenligningstilstanden er brukbar i opptil 90 dager etter den fullstendige sikkerhetskopien; en ny fullstendig sikkerhetskopi kreves deretter. Hvert inkrement identifiserer både den fullstendige sikkerhetskopien og dens direkte forgjenger ved ID og SHA-256.

Kun en fullstendig mottatt og bekreftet pakke blir den nye forgjengeren. Et ferdig, ubekreftet inkrement blokkerer et annet inkrement inntil det er bekreftet eller utløpt. Etter at en ubekreftet pakke utløper, starter neste forsøk fra sist bekreftede tilstand og inkluderer endringer som ennå ikke er sikkerhetskopiert. Hvis en bekreftet del mangler lokalt, last den ned på nytt innen 24 timers tilgjengelighet eller start en ny fullstendig sikkerhetskopi underlagt den ukevisse grensen. Foretrekk én delt sikkerhetskopikatalog per selskap; uavhengige klienter må beholde den samme komplette kjeden.

Oppsett av API-nøkkel

Under API-nøkler, skriv inn et navn som «Firma NAS» og opprett nøkkelen. Den vises én gang, utløper etter ett år og kan revokes når som helst. Lagre den i den beskyttede hemmelighetslageret i backup-miljøet ditt. Firmaet eier nøkkelen, som kun kan tilgå firmaets backup-API. Den fungerer uavhengig av oppretters senere pålogging.

Send den over HTTPS i Authorization: Bearer YOUR_BACKUP_TOKEN-hoveden. Hold nøkler unna URL-er, offentlige skript og logger. Kun firmaadministratorer og eiere kan opprette, liste og revoke nøkler.

Nettapp: API-nøkkel med utløpsdato og opptrekk
Nøkkelhåndtering i nettappen: navn, gyldighet og opptrekk for hvert sikkerhetskopiprogram.

Python: last ned full backup og inkrementer

Last ned company_backup.py Python-klienten og plasser den ved siden av skriptet ditt. Den krever Python 3.10 eller nyere på Linux eller macOS og bruker kun standardbiblioteket. Sett SKAVA_BACKUP_TOKEN i den beskyttede prosessmiljøet og erstatt 42 med firma-ID-en fra webapp-adressen.

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")

Planlagte oppgaver kan kalle samme klient direkte:

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

Klienten ber om generering, sporer status, strømer nedlastingen til disken, sjekker størrelse, SHA-256 og ZIP-innhold, og bekrefter mottak. Den lagrer fullstendige og inkrementelle sikkerhetskopier som separate filer. Beholj den skjulte tilstandsfilen i den mappen: den inneholder kjede- og gjenopptakelsesinformasjon. Før du ber om en ny inkrementell sikkerhetskopi, verifiserer klienten alle tidligere ZIP-filer. Etter en avbrutt prosess, kjører du samme kommando på nytt. Samtidige oppgaver for samme selskap i samme mappe forhindres.

API-flyt uten vedvarende tilkobling

  1. Forespørsel: POST /api/v1/companies/42/backups med {"kind":"full","request_id":"YOUR_UNIQUE_ID"}. For en inkrementell sikkerhetskopi, setter du kind til diff og sender din lokale fullstendige sikkerhetskopier-ID som base_id og den siste bekreftede pakke-ID som parent_id. Svarmeldingen inneholder job.id. Gjenbruk samme request_id ved gjentatte forsøk.
  2. Sporing: GET /api/v1/companies/42/backups/JOB_ID, omtrent hvert tiende sekund. Genereringen kjører i bakgrunnen under queued eller running. Ingen tilkobling holdes åpen mellom forespørsler.
  3. Last ned: Når ready er satt og available: true, kalles GET /api/v1/companies/42/backups/JOB_ID/download. Bare denne overføringen holder en tilkobling åpen. Hvis den avbrytes, lastes hele filen ned på nytt.
  4. Bekreft mottak: Kontroller job.bytes og job.sha256. Hent X-Backup-Download-Id og X-Backup-Receipt fra svarhodene ved nedlasting. Send POST /api/v1/companies/42/backups/JOB_ID/downloads/DOWNLOAD_ID/confirm med {"receipt":"RECEIPT","bytes":12345,"sha256":"SHA256"}. Bare en fullstendig overføring med tilsvarende bekreftelse regnes som vellykket.

GET /api/v1/companies/42/backups returnerer historikk, paginert via next_offset. Utnyttede kvoter eller midlertidige kapasitetsbegrensninger returnerer HTTP 429 med Retry-After. Sikkerhetskopier genereres sekvensielt innenfor grensene, slik at samtidige nattlige oppdrag ikke overbelaster applikasjonen.

Forstå nedlastingshistorikk

Historikken viser om det er en full eller inkrementell type, anmodningstid, utløpstid, full sikkerhetskopiering, forgjenger og hver nedlastingsforsøk med antall overførte bytes. «Klar» identifiserer en generert fil. «Overført» betyr at serveren sendte alle bytes. «Kontrollsum bekreftet» betyr at klienten verifiserte og bekreftet fullstendig mottak. Avbrutte og mislykkede forsøk forblir synlige.

Nettapp: inkrementell sikkerhetskopiering med forgjenger, nedlastingsutløp og bekreftet kontrollsum
Nedlastingshistorikk viser sikkerhetskopikjeden, 24-timersvinduet og bekreftet mottak av alle data.

Nettappen bekrefter mottak i nettleseren før lagringsdialogen vises. Denne bekreftelsen viser ikke at filen deretter ble lagret permanent på datamaskinen din. For automatiske sikkerhetskopier skriver Python-klienten filen til disken før den bekrefter mottak. Last ned via nettappen er begrenset til 64 MiB. Bruk Python-klienten for større arkiver.