Skava Skava / Wiki

Įmonės atsargos kopijos

Įmonės administratoriai ir savininkai atidaro savo įmonę skelbimo programoje ir pasirenka Atsargos kopijos. Jie gali užsakyti atsargų kopijas, atsisiųsti ZIP failus ir valdyti API raktus savo atsargų kopijų serveriui. Šis eksportas nėra prieinamas mobiliąja programėle.

Apimtis ir apribojimai

Atsargoje kopijoje yra įmonės įprasti projekto pokalbiai, įskaitant archyvuotus pokalbius, su žinutėmis, reakcijomis, pokalbio kortelėmis ir su jomis susijusiais įkeltais priedais. Ji taip pat apima projekto ir pokalbio metaduomenis, dalyvių vardus ir tuose pokalbiuose paskelbtus įmonės dokumentus. Įmonės administratoriai ir savininkai gali kurti atsargų kopijas įmonės pokalbiams, kurių asmeniškai neprisijungė.

Tiesioginės žinutės, asmeninės pastabos, asmeniškai matomos paslaugos, tarp įmonių pokalbiai ir asmeniniai juodraščiai yra neįtraukti. Įmonės „Drive“ ir išorinių nuorodų turinys yra už šio pokalbių eksporto ribų. Trūkstami susiję priedai sukelia generavimo klaidą. ZIP yra duomenų eksportas; automatinis importas atgal į Skava dar nėra prieinamas.

Kontingentai, inkrementai ir saugojimo laikas

Kiekviena įmonė gali užsakyti vieną pilną atsargos kopiją per 7 dienas ir dvi inkrementines atsargos kopijas per 24 valandas. Šie slenkantys laikotarpiai prasideda nuo kiekvieno užsakymo. Tas pats paruoštas failas atsisiunčiamas iš naujo nebeima generavimo kontingento. Nepavykę generavimo darbai neskaičiuojami į šiuos apribojimus.

Kiekvienas inkrementas apima pakeitimus ir ištrynimus nuo paskutinės visiškai perduotos ir patikrintos kontrolės sumos atsargos kopijos. Grandinė yra A + B + C: A yra pilna atsargos kopija, B apima pakeitimus nuo A, o C – tik tolesnius pakeitimus nuo B. Būsena atkurta taikant kiekvieną paketą tvarka. Nepakitusi priedai nurodo failus, jau esančius šioje grandinėje.

Atsisiuntimas lieka prieinamas 24 valandas po to, kai generavimas baigiamas. Tada ZIP yra pašalintas, o istorija lieka. Pilną atsargos kopiją ir visus susijusius inkrementus laikykite lokaliai. Palyginimo būsena lieka naudinga ne ilgiau kaip 90 dienų po pilnos atsargos kopijos; po to reikalinga nauja pilna atsargos kopija. Kiekvienas inkrementas identifikuoja tiek pilną atsargos kopiją, tiek tiesioginį pirmtaką pagal ID ir SHA-256.

Tik visiškai gautas ir patvirtintas paketas tampa nauju pirmtaku. Paruoštas, nepatvirtintas inkrementas blokuoja kitą inkrementą, kol bus patvirtintas arba baigęs galiojimą. Po to, kai nepatvirtintas paketas baigia galiojimą, kitas bandymas prasideda nuo paskutinės patvirtintos būsenos ir apima pakeitimus, kurie dar nebuvo įtraukti į atsargos kopiją. Jei patvirtinta dalis trūksta lokaliai, atsisiųskite ją iš naujo per 24 valandų prieinamumo laiką arba pradėkite naują pilną atsargos kopiją, laikydamiesi savaitinio apribojimo. Pageidautina viena bendra atsargos kopijų katalogas įmonei; nepriklausomi klientai turi laikytis tos pačios pilnos grandinės.

Sukurkite API raktą

Po API raktai, įveskite pavadinimą, pvz., „Įmonės NAS“, ir sukurkite raktą. Jis rodomas tik kartą, baigia galiojimą po vienerių metų ir gali būti atšauktas bet kuriuo metu. Saugokite jį savo atsargos kopijų aplinkos apsaugotoje slaptažodžių saugykloje. Įmonė yra rakto savininkė, o jis gali prieiti tik prie tos įmonės atsargos kopijų API. Jis veikia nepriklausomai nuo jo kūrėjo vėlesnės prisijungimo.

Siųskite jį per HTTPS Authorization: Bearer YOUR_BACKUP_TOKEN antraštėje. Raktus laikykite toli nuo URL, viešų skriptų ir žurnalų. Tik įmonės administratoriai ir savininkai gali kurti, sąrašą ir atšaukti raktus.

Web program: API raktas su galiojimo pabaigos data ir atšaukimo veiksmu
Raktų valdymas web programoje: kiekvienos atsarginės kopijos programos pavadinimas, galiojimas ir atšaukimas.

Python: atsisiųskite pilną atsargos kopiją ir inkrementus

Atsisiųskite company_backup.py Python klientą ir padėkite jį šalia jūsų skripto. Jam reikalingas Python 3.10 arba naujesnė versija Linux arba macOS ir jis naudoja tik standartinę biblioteką. Nustatykite SKAVA_BACKUP_TOKEN apsaugotoje proceso aplinkoje ir pakeiskite 42 įmonės ID iš skelbimo programos adreso.

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

Suplanuoti darbai gali tiesiogiai iškviesti tą patį klientą:

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

Klientas užsako generavimą, tikrina būseną, srautais atsisiunčia į diską, tikrina dydį, SHA-256 ir ZIP turinį, ir patvirtina gavimą. Jis saugo pilnas ir inkrementines atsargos kopijas kaip atskirus failus. Laikykite paslėptą būsenos failą tame kataloge: jame yra grandinė ir tęsimas informacija. Prieš užsakydamas kitą inkrementą, klientas patikrina visus ankstesnius ZIP failus. Po pertraukos, pakartokite tą pačią komandą. Vienalaikiai darbai tai pačiai įmonei tame pačiame kataloge yra užkirsti.

API srautas be nuolatinio ryšio

  1. Užklausos: POST /api/v1/companies/42/backups su {"kind":"full","request_id":"YOUR_UNIQUE_ID"}. Inkrementui nustatykite kind į diff ir siųskite savo lokalų pilną atsargos kopijos ID kaip base_id ir paskutinio patvirtinto paketo ID kaip parent_id. Atsakymas pateikia job.id. Bandydami iš naujo, naudokite tą patį SKAVA_BACKUP_TOKEN0.
  2. Tikrinimas: SKAVA_BACKUP_TOKEN1, apie kas dešimt sekundžių. Generavimas vyksta fone per SKAVA_BACKUP_TOKEN2 arba SKAVA_BACKUP_TOKEN3. Tarp užklausų ryšys neatsidaro.
  3. Atsisiuntimas: SKAVA_BACKUP_TOKEN4 su SKAVA_BACKUP_TOKEN5, iškviest SKAVA_BACKUP_TOKEN6. Tik šis perdavimas laiko ryšį atidarytą. Jei pertraukta, atsisiųskite visą failą iš naujo.
  4. Gavimo patvirtinimas: Patikrinkite SKAVA_BACKUP_TOKEN7 ir SKAVA_BACKUP_TOKEN8. Paimkite SKAVA_BACKUP_TOKEN9 ir 420 iš atsisiuntimo atsakymo antraščių. Siųskite 421 su 422. Tik pilnas perdavimas su atitinkančiu patvirtinimu skaičiuojamas kaip sėkmingas.

423 grąžina istoriją, puslapiuotą per 424. Išsemti kontingentai arba laikini talpos apribojimai grąžina HTTP 429 su 425. Atsargos kopijos generuojamos sekliai ribose, kad vienu metu vykstantys naktiniai darbai neperkrautų programos.

Supraskite atsisiuntimo istoriją

Istorija rodo pilną arba inkrementinį tipą, užsakymo laiką, galiojimo pabaigą, pilną atsargos kopiją, pirmtaką ir kiekvieną atsisiuntimo bandymą su perduotais baitais. „Paruošta“ identifikuoja sugeneruotą failą. „Perduota“ reiškia, kad serveris išsiuntė visus baitus. „Kontrolės suma patvirtinta“ reiškia, kad klientas patikrino ir patvirtino pilną gavimą. Pertraukti ir nepavykę bandymai lieka matomi.

Web programoje: inkrementinis atsarginis kopijavimas su pirmtaku, atsisiuntimo galiojimu ir patvirtintu kontroliniu kodu
Atsisiuntimo istorija rodo atsarginių kopijų grandinę, 24 valandų laikotarpį ir visų duomenų gavimo patvirtinimą.

Skelbimo programa naršyklėje patvirtina gavimą prieš išsaugojimo dialogą. Tas patvirtinimas nepatvirtina, kad failas vėliau buvo nuolat išsaugotas jūsų kompiuteryje. Automatinėms atsargoms kopijoms, Python klientas rašo failą į diską prieš patvirtindamas gavimą. Skelbimo programos atsisiuntimai yra apriboti iki 64 MiB; didesniems archyvams naudokite Python klientą.