Skava Skava / Wiki

Vállalati mentések

A vállalati adminisztrátorok és tulajdonosok a webes alkalmazásban nyitják meg a vállalatukat, és kiválasztják a Mentések menüpontot. Kérelmet nyújthatnak be mentésekhez, letölthetik a ZIP-fájlokat, és kezelhetik a mentőszerver API-kulcsait. Ez az export nem érhető el a mobilalkalmazásban.

Hatókör és korlátok

A mentés tartalmazza a vállalat szokásos projektbeszélgetéseit, beleértve az archivált beszélgetéseket is, üzenetekkel, reakciókkal, csevegőkártyákkal és a hozzájuk tartozó feltöltött csatolmányokkal. Továbbá a projekt- és csevegésmetaadatokat, a résztvevők neveit, valamint az ezekben a beszélgetésekben közzétett vállalati dokumentumokat. A vállalati adminisztrátorok és tulajdonosok menthetik azokat a vállalati beszélgetéseket is, amelyekhez személyesen nem csatlakoztak.

A közvetlen üzenetek, a privát jegyzetek, a személyesen látható szolgáltatások, a vállalatok közötti beszélgetések és a személyes vázlatok nem részei a mentésnek. A vállalati meghajtó és a külső linkek tartalma szintén kívül esik ezen a csevegés-exporton. A hiányzó kapcsolódó csatolmányok miatt a generálás sikertelen lehet. A ZIP egy adatexport; a Skavába történő automatikus visszaimportálás még nem áll rendelkezésre.

Kvóták, inkrementális mentések és megőrzés

Minden vállalat kérhet egy teljes mentést 7 napon belül és két inkrementális mentést 24 órán belül. Ezek a görgőző időablakok minden egyes kérésnél újrakezdődnek. Az ugyanazon kész fájl újratöltése nem von le a generálási kvótából. A sikertelen generálási feladatok nem számítanak bele ezeken a korlátokba.

Minden inkrementális mentés tartalmazza az utolsó, teljesen átvitt és ellenőrzőösszeggel megerősített mentés óta bekövetkezett módosításokat és törléseket. A lánc A + B + C: az A a teljes mentés, a B az A óta történt módosításokat, a C pedig a B óta bekövetkezett további változásokat tartalmazza. Az állapot visszaállításához minden csomagot sorban kell alkalmazni. A változatlan csatolmányok a láncban már meglévő fájlokra utalnak.

A letöltések a generálás befejezése után 24 órán át érhetők el. Ezt követően a ZIP fájl eltávolításra kerül, a történet pedig megmarad. A teljes mentést és minden kapcsolódó inkrementális mentést helyben tárolja. Az összehasonlító állapot a teljes mentéstől számított legfeljebb 90 napig használható; ezt követően új teljes mentés szükséges. Minden inkrementális mentés azonosítja a teljes mentést és közvetlen elődét azonosító és SHA-256 alapján.

Csak a teljesen átvett és megerősített csomag válik az új előddé. A kész, de még nem megerősített inkrementális mentés blokkolja a következő inkrementális mentést, amíg meg nem erősítik, vagy le nem jár. Ha egy nem megerősített csomag lejár, a következő kísérlet az utolsó megerősített állapottól indul, és tartalmazza a még nem mentett változásokat. Ha egy megerősített rész hiányzik helyben, töltsd le újra a 24 órás elérhetőség alatt, vagy indíts új teljes mentést a heti korlát figyelembevételével. Célszerű egy közös mentési könyvtárat használni vállalatonként; a független klienseknek ugyanazt a teljes láncot kell megőrizniük.

API-kulcs beállítása

Az API-kulcsok menüpontban adjon meg egy nevet, például „Cégnév NAS”, és hozza létre a kulcsot. Ez csak egyszer jelenik meg, egy év múlva lejár, és bármikor visszavonható. Tartsa a biztonsági mentési környezet védett titoktárában. A kulcs a cég tulajdonát képezi, és csak az adott cég biztonsági mentési API-jához fér hozzá. A létrehozó későbbi bejelentkezésétől függetlenül működik.

HTTPS-en keresztül küldje el az Authorization: Bearer YOUR_BACKUP_TOKEN fejlécben. Ne kerüljenek a kulcsok URL-címekbe, nyilvános szkriptekbe vagy naplófájlokba. Csak a cégadminisztrátorok és tulajdonosok hozhatnak létre, listázhatnak és vonhatnak vissza kulcsokat.

Webalkalmazás: API-kulcs lejárati dátummal és visszavonási művelettel
Kulcskezelés a webalkalmazásban: név, érvényesség és visszavonás minden mentési programhoz.

Python: teljes és inkrementális biztonsági mentés letöltése

Töltse le a company_backup.py Python klienset, és helyezze a szkript mellé. Linuxon vagy macOS-en Python 3.10 vagy újabb verzió szükséges, és csak a standard könyvtárat használja. Állítsa be a SKAVA_BACKUP_TOKEN változót a védett folyamatkörnyezetben, és cserélje ki a 42 számot a webes alkalmazás címében szereplő cégazonosítóra.

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

A beütemezett feladatok közvetlenül ugyanazt a klienst hívhatják meg:

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

A kliens kéri a generálást, lekérdezi az állapotot, letölti a fájlt a lemezre, ellenőrzi a méretet, a SHA-256-ot és a ZIP tartalmát, majd visszaigazolja az átvételt. A teljes és az inkrementális mentéseket külön fájlokként tárolja. A rejtett állapotfájlt tartsa meg ebben a könyvtárban, mert az tartalmazza a láncot és a folytatáshoz szükséges adatokat. Egy újabb inkrementális mentés kérése előtt a kliens ellenőrzi az összes korábbi ZIP fájlt. Ha a folyamat megszakad, ismételje meg ugyanazt a parancsot. Ugyanabban a könyvtárban, ugyanahhoz a céghoz tartozó párhuzamos feladatok futását a rendszer megakadályozza.

API folyamat tartós kapcsolat nélkül

  1. Kérés: POST /api/v1/companies/42/backups a {"kind":"full","request_id":"YOUR_UNIQUE_ID"} testtel. Inkrementális mentéshez a kind értékét állítsa diff-re, a helyi teljes mentés azonosítóját adja meg base_id néven, az utolsó visszaigazolt csomag azonosítóját pedig parent_id néven. A válaszban szerepel a job.id. Újrapróbáláskor használja újra ugyanazt a request_id értéket.
  2. Állapotlekérdezés: GET /api/v1/companies/42/backups/JOB_ID, kb. tíz másodpercenként. A generálás a queued vagy running állapotban a háttérben fut. A kérések között nem marad nyitva kapcsolat.
  3. Letöltés: Amikor a ready állapotban van és available: true, hívja meg a GET /api/v1/companies/42/backups/JOB_ID/download végpontot. Csak ez az átvitel tart nyitva kapcsolatot. Ha megszakad, töltsön le újra az egész fájlt.
  4. Átvétel megerősítése: Ellenőrizze a job.bytes és a job.sha256 értékeket. Vegye ki az X-Backup-Download-Id és az X-Backup-Receipt mezőket a letöltési válasz fejlécéből. Küldje el a POST /api/v1/companies/42/backups/JOB_ID/downloads/DOWNLOAD_ID/confirm kérést a {"receipt":"RECEIPT","bytes":12345,"sha256":"SHA256"} testtel. Csak a teljes átvitel a megfelelő megerősítéssel számít sikeresnek.

A GET /api/v1/companies/42/backups visszatéríti az előzményeket, lapozva a next_offset segítségével. A kimerített kvóták vagy az ideiglenes kapacitáskorlátok HTTP 429 státuszkódot adnak vissza Retry-After mezővel. A mentések sorban készülnek a korlátok belül, így az egyidejű éjszakai feladatok nem terhelik túl az alkalmazást.

Letöltési előzmények megértése

Az előzmények mutatják a teljes vagy inkrementális típust, a kérés idejét, a lejárati dátumot, a teljes mentést, az előzményt és minden letöltési kísérletet a átvitt bájtokkal. A „Kész” az elkészült fájlt jelöli. Az „Átvitt” azt jelenti, hogy a szerver elküldte az összes bájtot. A „Ellenőrzőösszeg megerősítve” azt jelenti, hogy a kliens ellenőrizte és megerősítette a teljes átvételt. A megszakított és sikertelen kísérletek láthatóak maradnak.

Webalkalmazás: inkrementális mentés előzménnyel, letöltési lejárattal és megerősített ellenőrző összeggel
A letöltési előzmények a mentési láncot, a 24 órás időablakot és az összes adat ellenőrzött átvételét mutatják.

A webböveg a mentés párbeszédablak megjelenése előtt ellenőrzi a fogadást a böngészőben. Ez a megerősítés nem bizonyítja, hogy a fájl később tartósan elmentődött a számítógépen. Az automatizált mentésekhez a Python kliens a megerősítés előtt írja a fájlt a lemezre. A webböveg letöltése 64 MiB-ig terjed; nagyobb archívumokhoz a Python klienst használja.