Varnostne kopije podjetja
Skupni upravitelji in lastniki podjetja odprejo svoje podjetje v spletni aplikaciji in izberejo Varne kopije. Lahko zahtevajo varne kopije, prenesete datoteke ZIP in upravljajo ključe API za svoj strežnik varnih kopij. Ta izvoz ni na voljo v mobilni aplikaciji.
Obseg in omejitve
Varna kopija vsebuje redne klepete projektov podjetja, vključno s klečeti, ki so arhivirani, s sporočili, reakcijami, karticami klečeta in pripadajočimi naloženimi priponkami. Vključuje tudi metapodatke projektov in klečeta, imena udeležencev ter objavljene dokumente podjetja v teh klečeh. Skupni upravitelji in lastniki podjetja lahko varno kopirajo klečete podjetja, ki jim osebno niso pridruženi.
Neposredna sporočila, zasebne opombe, storitve, vidne samo osebno, medpodjetni klečeti in osebni osnutki so izključeni. Vsebina Skava Drive in vsebina zunanjih povezav nista del tega izvoza klečeta. Če manjkajo pripadajoče priponke, se generiranje ne uspe. ZIP je izvoz podatkov; samodejni uvoz nazaj v Skava še ni na voljo.
Kvote, inkrementali in zadrževanje
Vsako podjetje lahko zahteva eno celotno varnostno kopijo v 7 dneh in dve inkrementalni varnostni kopiji v 24 urah. Ti drseči okviri se začnejo ob vsaki zahtevi. Ponovno prenos istega pripravljenega datoteke ne porabi kvote za generiranje. Neuspešni poskusi generiranja se ne štejejo v te omejitve.
Vsaka inkrementalna vsebuje spremembe in izbrisane datoteke od zadnje popolnoma prenesene in preverjene s kontrolno vsoto varnostne kopije. Veriga je A + B + C: A je celotna varnostna kopija, B vsebuje spremembe od A, C pa le nadaljnje spremembe od B. Stanje obnovite tako, da uporabite vse pakete po vrsti. Neposredovane priloge se nanašajo na datoteke, ki so že prisotne v tej verigi.
Prenosi so na voljo 24 ur po koncu generiranja. Nato se ZIP odstrani, zgodovina pa ostane. Celotno varnostno kopijo in vse povezane inkrementalne shranite lokalno. Stanje za primerjavo je uporabno največ 90 dni po celotni varnostni kopiji; nato je potrebna nova celotna varnostna kopija. Vsaka inkrementalna določa tako celotno varnostno kopijo kot neposrednega predhodnika z ID in SHA-256.
Samo popolnoma prejet in potrjen paket postane nov predhodnik. Pripravljena, nepotrjena inkrementalna blokira drugo inkrementalno, dokler ni potrjena ali potekla. Po poteku nepotrjenega paketa se naslednji poskus začne od zadnjega potrjenega stanja in vključuje spremembe, ki še niso varnostno kopirane. Če je potrjen del manjkajoč lokalno, ga ponovno prenesite v roku 24 ur na voljo ali začnite novo celotno varnostno kopijo v skladu z tedensko omejitvijo. Raje uporabite eno skupno mapo za varnostne kopije na podjetje; neodvisni odjemalci morajo ohraniti isto popolno verigo.
Nastavite ključ API
V razdelku Ključi API vnesite ime, na primer »Podjetje NAS«, in ustvarite ključ. Ključ se prikaže enkrat, poteka po enem letu in ga lahko kadar koli razveljavite. Shranite ga v zaščitenem skladišču skrivnosti v okolju za varnostno kopijo. Ključ pripada podjetju in lahko dostopa samo do varnostne kopije API tega podjetja. Deluje neodvisno od kasnejše prijave ustvarjalca.
Pošljite ga prek HTTPS v glavi Authorization: Bearer YOUR_BACKUP_TOKEN. Ključev ne shranjujte v URL-jih, javnih skriptah in dnevnikih. Samo skrbniki in lastniki podjetja lahko ustvarjajo, izpisujejo in razveljavljajo ključe.
Python: prenos celotne varnostne kopije in inkrementalnih posodobitev
Prenesite stransko programsko opremo company_backup.py za Python in jo postavite poleg svoje skripte. Zahteva Python 3.10 ali novejši na sistemu Linux ali macOS in uporablja samo standardno knjižnico. V zaščitem okolju procesa nastavite SKAVA_BACKUP_TOKEN in zamenjajte 42 s ID podjetja iz naslova spletne aplikacije.
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")
Načrtovana opravila lahko neposredno pokličejo istega odjemalca:
python3 company_backup.py --company 42 --kind full --directory backups
python3 company_backup.py --company 42 --kind diff --directory backups
Odjemalec zahteva generiranje, preverja status, prenese datoteko na disk, preveri velikost, SHA-256 in vsebino ZIP datoteke ter potrdi prejem. Shranjuje celotne in inkrementalne varnostne kopije kot ločene datoteke. Skrito datoteko s stanjem v tem imeniku ohranite: vsebuje informacije o verigi in nadaljevanju. Pred zahtevo za novo inkrementalno kopijo odjemalec preveri vse prejšnje ZIP datoteke. Po prekinitvi ponovite isto ukaz. Preprečena so hkratna opravila za isto podjetje v istem imeniku.
Tok API brez trajne povezave
- Zahteva:
POST /api/v1/companies/42/backupss{"kind":"full","request_id":"YOUR_UNIQUE_ID"}. Za inkrementalno kopijo nastavitekindnadiffin pošljite ID lokalne celotne varnostne kopije kotbase_idter zadnji potrjen ID paketa kotparent_id. Odziv vsebujejob.id. Ob ponovnem poskusu uporabite istirequest_id. - Preverjanje:
GET /api/v1/companies/42/backups/JOB_ID, približno na vsakih deset sekund. Generiranje poteka v ozadju med stanjemqueuedalirunning. Med zahtevami povezava ni odprta. - Prenos: Ko je stanje
readyinavailable: true, pokličiteGET /api/v1/companies/42/backups/JOB_ID/download. Samo ta prenos ohrani odprto povezavo. Če se prenos prekliče, ponovno prenesite celotno datoteko. - Potrditev prejema: Preverite
job.bytesinjob.sha256. Iz glavic odgovora prenosa vzemiteX-Backup-Download-IdinX-Backup-Receipt. PošljitePOST /api/v1/companies/42/backups/JOB_ID/downloads/DOWNLOAD_ID/confirms{"receipt":"RECEIPT","bytes":12345,"sha256":"SHA256"}. Uspešen je le popoln prenos s skladno potrditvijo.
GET /api/v1/companies/42/backups vrne zgodovino, razdeljeno na strani prek next_offset. Izčrpane kvote ali začasne omejitve prostora vrnejo HTTP 429 s Retry-After. Varnosti kopije se ustvarjajo zaporedno v okviru omejitev, zato hkratni nočni deli ne preobremenijo aplikacije.
Razumevanje zgodovine prenosov
Zgodovina prikazuje tip (polna ali inkrementalna), čas zahtevka, rok veljavnosti, polno varnostno kopijo, predhodnik in vsak poskus prenosa s prenesenimi bajti. »Pripravljeno« označuje ustvarjeno datoteko. »Preneseno« pomeni, da je strežnik poslal vse bajte. »Preverjeno s kontrolno vsoto« pomeni, da je odjemalec preveril in potrdil popoln prejem. Prekinjeni in neuspešni poskusi ostanejo vidni.
Spletna aplikacija preveri prejem v brskalniku pred odpiranjem pogovornega okna za shranjevanje. Ta potrditev ne dokazuje, da je bil datoteka trajno shranjena na vašem računalniku. Za samodejne varnostne kopije Python odjemalec najprej zapiše datoteko na disk, nato pa potrdi prejem. Prenos prek spletne aplikacije je omejen na 64 MiB; za večje arhive uporabite Python odjemalec.