Skava Skava / Wiki

Kopje rezervë të kompanisë

Administratorët dhe pronarët e kompanisë hapin kompaninë e tyre në aplikacionin web dhe zgjedhin Kopje rezervë. Ata mund të kërkojnë kopje rezervë, të shkarkojnë skedarë ZIP dhe të menaxhojnë çelësat API për shërbuesin e tyre të kopjeve rezervë. Ky eksport nuk është i disponueshëm në aplikacionin mobil.

Hapësira dhe kufizimet

Kopja rezervë përmban bisedat e rregullta të projekteve të kompanisë, duke përfshirë bisedat e arkivuar, me mesazhe, reaksione, karta bisede dhe bashkëlidhjet e ngarkuara përkatëse. Ajo përfshin gjithashtu metadaten e projekteve dhe bisedave, emrat e pjesëmarrësve dhe dokumentet e kompanisë të publikuara në ato biseda. Administratorët dhe pronarët e kompanisë mund të bëjnë kopje rezervë të bisedave të kompanisë në të cilat nuk kanë marrë pjesë personalisht.

Mesazhet direkte, shënimet private, shërbimet e dukshme personalisht, bisedat ndërkompunare dhe skicat personale përjashtohen. Përmbajtja e Drive të kompanisë dhe e lidhjeve të jashtme është jashtë këtij eksporti bisedash. Mungesa e bashkëlidhjeve përkatëse bën që gjenerimi të dështojë. ZIP është një eksport i të dhënave; importimi automatik përsëri në Skava nuk është ende i disponueshëm.

Kuotat, inkrementalet dhe ruajtja

Çdo kompani mund të kërkojë një kopje rezervë të plotë brenda 7 ditëve dhe dy kopje rezervë inkrementale brenda 24 orëve. Këto dritare rrotulluese fillojnë me çdo kërkesë. Shkarkimi i të njëjtit skedar të gatshëm përsëri nuk konsumon kuotën e gjenerimit. Detyrat e dështuara të gjenerimit nuk llogariten kundrejt këtyre kufizimeve.

Çdo inkremental përmban ndryshimet dhe fshirjet që nga kopja rezervë e fundit e transferuar plotësisht dhe e konfirmuar me checksum. Zinxhiri është A + B + C: A është kopja rezervë e plotë, B përmban ndryshimet që nga A, dhe C vetëm ndryshime të mëtejshme që nga B. Rindërtoni gjendjen duke aplikuar çdo paketë në rend. Bashkëngjitjet e papërshtatura referohen te skedarët që tashmë janë të pranishëm në këtë zinxhir.

Shkarkimet mbeten të disponueshme për 24 orë pas përfundimit të gjenerimit. ZIP pastaj hiqet, ndërsa historia mbetet. Ruajni kopjen rezervë të plotë dhe çdo inkremental të lidhur lokalisht. Gjendja e krahasimit mbetet e përdorshme për më së shumti 90 ditë pas kopjes rezervë të plotë; pas kësaj kërkohet një kopje rezervë e re e plotë. Çdo inkremental identifikon si kopjen rezervë të plotë ashtu edhe pararendësin e drejtpërdrejtë me ID dhe SHA-256.

Vetëm një paketë e pranuar plotësisht dhe e konfirmuar bëhet pararendësi i ri. Një inkremental i gatshëm, i pakonfirmuar, bllokon një inkremental tjetër deri në konfirmim ose skadencë. Pas skadencës së një pakete të pakonfirmuar, përpjekja e radhës fillon nga gjendja e fundit e konfirmuar dhe përfshin ndryshimet që ende nuk janë kopjuar rezervë. Nëse një pjesë e konfirmuar mungon lokalisht, shkarkojeni përsëri brenda disponueshmërisë 24-orëse ose filloni një kopje rezervë të re të plotë sipas kufizimit javor. Preferoni një direktori të vetëm kopje rezervë të përbashkët për kompani; klientët e pavarur duhet të ruajnë të njëjtin zinxhir të plotë.

Konfiguro një çelës API

Nën Çelësit API, vendos një emër si “NAS i kompanisë” dhe krijo çelësin. Ai shfaqet një herë, skadon pas një viti dhe mund të revokohet në çdo kohë. Ruaje në magazinën e fshehtësive të mbrojtur të mjedisit të rezervimit. Kompania zotëron çelësin, i cili mund të aksesojë vetëm API-n e rezervimit të atij kompanie. Ai vepron pavarësisht nga hyrja e mëvonshme e krijuesit.

Dërgoje mbi HTTPS në kryesoren Authorization: Bearer YOUR_BACKUP_TOKEN. Mbaj çelësit jashtë URL-ve, skripteve publike dhe regjistrimeve. Vetëm administratorët dhe pronarët e kompanisë mund të krijojnë, listojnë dhe revokojnë çelësit.

Aplikacioni web: kyç API me datë skadimi dhe veprim për heqje
Menaxhimi i kyçeve në aplikacionin web: emër, vlefshmëri dhe heqje për çdo program rezervimi.

Python: shkarko një rezervim të plotë dhe inkrementalet

Shkarko klientin Python company_backup.py dhe vendoseje pranë skriptit tënd. Kërkon Python 3.10 ose më të ri në Linux ose macOS dhe përdor vetëm bibliotekën standarde. Vendos SKAVA_BACKUP_TOKEN në mjedisin e procesit të mbrojtur dhe zëvendëso 42 me ID-në e kompanisë nga adresa e aplikacionit web.

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

Detyrat e planifikuara mund të thërrasin të njëjtin klient drejtpërdrejt:

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

Klienti kërkon gjenerimin, kontrollon statusin, transmeton shkarkimin në disk, kontrollon madhësinë, SHA-256 dhe përmbajtjen e ZIP, dhe konfirmon marrjen. Ai ruajet backup-et e plota dhe inkrementale si skedarë të veçantë. Mbajeni skedarin e fshehtë të gjendjes në atë direktori: ai përmban informacionin e zinxhirit dhe ripërsëritjes. Para se të kërkojë një tjetër inkremental, klienti verifikon çdo skedar ZIP të mëparshëm. Pas një ndërprerjeje, përsëritni të njëjtën komandë. Detyrat e njëkohshme për të njëjtin kompani në të njëjtin direktori parandalohen.

Rrjedha e API pa një lidhje të qëndrueshme

  1. Kërkesa: POST /api/v1/companies/42/backups me {"kind":"full","request_id":"YOUR_UNIQUE_ID"}. Për një inkremental, vendisni kind si diff dhe dërgoni ID-në e backup-it tuaj lokal të plotë si base_id dhe ID-në e fundit të konfirmuar të paketës si parent_id. Përgjigja furnizon job.id. Ripërdorni të njëjtin request_id kur riprovoni.
  2. Kontroll: GET /api/v1/companies/42/backups/JOB_ID, rreth çdo dhjetë sekonda. Gjenerimi ekzekutohet në sfond gjatë queued ose running. Asnjë lidhje nuk mbetet e hapur midis kërkesave.
  3. Shkarkim: Kur gjendja është ready dhe available: true, thirr GET /api/v1/companies/42/backups/JOB_ID/download. Vetëm ky transferim mban një lidhje të hapur. Nëse ndërpritet, shkarko përsëri skedarin e plotë.
  4. Konfirmo marrjen: Kontrollo job.bytes dhe job.sha256. Merr X-Backup-Download-Id dhe X-Backup-Receipt nga kryetë e përgjigjes së shkarkimit. Dërgo POST /api/v1/companies/42/backups/JOB_ID/downloads/DOWNLOAD_ID/confirm me {"receipt":"RECEIPT","bytes":12345,"sha256":"SHA256"}. Vetëm një transferim i plotë me konfirmim përputhës llogaritet si i suksesshëm.

GET /api/v1/companies/42/backups kthen historikun, me faqe përmes next_offset. Kuotat e shfrytëzuara ose kufizimet e përkohshme të kapacitetit kthejnë HTTP 429 me Retry-After. Kopjet e rezervës gjenerohen në mënyrë sekuenziale brenda kufijve, kështu që punët e njëkohshme natën nuk e mbivendosin aplikacionin.

Kupto historikun e shkarkimeve

Historiku tregon llojin e plotë ose inkremental, kohën e kërkesës, skadencën, kopjen e plotë të rezervës, pararendësin dhe çdo përpjekje shkarkimi me bajtet e transferuara. “Gati” identifikon një skedar të gjeneruar. “Transferuar” do të thotë se serveri dërgoi të gjitha bajtet. “Verifikuar me checksum” do të thotë se klienti verifikoi dhe konfirmoi marrjen e plotë. Përpjekjet e ndërpritura dhe të dështuara mbeten të dukshme.

Aplikacioni web: rezervim inkremental me pararendës, skadim shkarkimi dhe kontroll i verifikuar
Historiku i shkarkimeve tregon zinxhirin e rezervimeve, dritaren 24 orë dhe marrjen e verifikuar të të gjitha të dhënave.

Aplikacioni web verifikon marrjen në shfletues para se të shfaqet dialogu i ruajtjes. Kjo konfirmim nuk provon se skedari u ruajt më pas përfundimisht në kompjuterin tuaj. Për kopjet e rezervës automatike, klienti Python shkruan skedarin në disk para se të konfirmojë marrjen. Shkarkimet me aplikacionin web janë të kufizuara në 64 MiB; përdorni klientin Python për arkiva më të mëdha.