Skava Skava / Wiki

Εφεδρικές αντιγραφές εταιρείας

Οι διαχειριστές και οι ιδιοκτήτες της εταιρείας ανοίγουν την εταιρεία τους στην εφαρμογή web και επιλέγουν Εφεδρικές αντιγραφές. Μπορούν να ζητήσουν εφεδρικές αντιγραφές, να κατεβάσουν αρχεία ZIP και να διαχειρίζονται τα κλειδιά API για τον διακομιστή εφεδρικών αντιγραφών τους. Η εξαγωγή αυτή δεν είναι διαθέσιμη στην εφαρμογή κινητού.

Εύρος και όρια

Η εφεδρική αντιγραφή περιλαμβάνει τα κανονικά chats έργων της εταιρείας, συμπεριλαμβανομένων των αρχειοθετημένων chats, με μηνύματα, αντιδράσεις, κάρτες chat και τα συσχετισμένα ανεβασμένα συνημμένα. Περιλαμβάνει επίσης μεταδεδομένα έργων και chats, ονόματα συμμετεχόντων και δημοσιευμένα έγγραφα εταιρείας σε αυτά τα chats. Οι διαχειριστές και οι ιδιοκτήτες της εταιρείας μπορούν να δημιουργήσουν εφεδρικές αντιγραφές εταιρικών chats στα οποία δεν έχουν συμμετάσχει προσωπικά.

Τα άμεσα μηνύματα, τα ιδιωτικά σημειώματα, οι υπηρεσίες ορατές προσωπικά, τα chats μεταξύ εταιρειών και τα προσωπικά προσχέδια εξαιρούνται. Το περιεχόμενο του Company Drive και των εξωτερικών συνδέσμων βρίσκεται εκτός αυτής της εξαγωγής chat. Τα λείποντα συσχετισμένα συνημμένα προκαλούν αποτυχία δημιουργίας. Το ZIP είναι μια εξαγωγή δεδομένων, η αυτόματη επαναφορά στο Skava δεν είναι ακόμη διαθέσιμη.

Όρια, επιμερίσεις και διάρκεια διατήρησης

Κάθε εταιρεία μπορεί να ζητήσει μία πλήρη αντιγραφή ασφαλείας εντός 7 ημερών και δύο επιμερίσεις εντός 24 ωρών. Αυτά τα κυλιόμενα παράθυρα ξεκινούν από κάθε αίτημα. Η επαναλήπτη λήψη του ίδιου έτοιμου αρχείου δεν καταναλώνει όριο δημιουργίας. Οι αποτυχημένες εργασίες δημιουργίας δεν μετρούνται εναντίον αυτών των ορίων.

Κάθε επιμερίση περιλαμβάνει αλλαγές και διαγραφές από την τελευταία πλήρως μεταφερμένη και επιβεβαιωμένη με ελέγχο ακεραιότητας αντιγραφή ασφαλείας. Η αλυσίδα είναι A + B + C: Το A είναι η πλήρης αντιγραφή, το B περιέχει αλλαγές από το A, και το C μόνο περαιτέρω αλλαγές από το B. Ανακαταστήστε την κατάσταση εφαρμόζοντας κάθε πακέτο με τη σειρά. Τα αμετάβλητα συνημμένα αναφέρονται σε αρχεία που υπάρχουν ήδη σε αυτή την αλυσίδα.

Οι λήψεις παραμένουν διαθέσιμες για 24 ώρες μετά το τέλος της δημιουργίας. Το ZIP αφαιρείται τότε, ενώ το ιστορικό παραμένει. Διατηρήστε την πλήρη αντιγραφή και κάθε σχετική επιμερίση τοπικά. Η κατάσταση σύγκρισης παραμένει χρήσιμη για το πολύ 90 ημέρες μετά την πλήρη αντιγραφή. Απαιτείται νέα πλήρης αντιγραφή μετά από αυτό. Κάθε επιμερίση ταυτοποιεί τόσο την πλήρη αντιγραφή όσο και τον άμεσο προκάτοχό της μέσω ID και SHA-256.

Μόνο ένα πλήρως παραληφθέν και επιβεβαιωμένο πακέτο γίνεται ο νέος πρόδρομος. Ένα έτοιμο, μη επιβεβαιωμένο επιμεριστικό πακέτο εμποδίζει ένα άλλο επιμεριστικό πακέτο μέχρι να επιβεβαιωθεί ή να λήξει. Μετά τη λήξη ενός μη επιβεβαιωμένου πακέτου, η επόμενη προσπάθεια ξεκινά από την τελευταία επιβεβαιωμένη κατάσταση και περιλαμβάνει τις αλλαγές που δεν έχουν ακόμη αντιγραφεί. Αν λείπει ένα επιβεβαιωμένο μέρος τοπικά, κατεβάστε το ξανά εντός της διαθεσιμότητας 24 ωρών ή ξεκινήστε μια νέα πλήρη αντιγραφή σύμφωνα με το εβδομαδιαίο όριο. Προτιμήστε έναν κοινό κατάλογο αντιγραφής ασφαλείας ανά εταιρεία. Οι ανεξάρτητοι πελάτες πρέπει να διατηρούν την ίδια πλήρη αλυσίδα.

Ρύθμιση κλειδιού API

Στο Κλειδιά API, εισάγετε ένα όνομα όπως «NAS Εταιρείας» και δημιουργήστε το κλειδί. Εμφανίζεται μία φορά, λήγει μετά από ένα χρόνο και μπορεί να ανακληθεί οποιαδήποτε στιγμή. Αποθηκεύστε το στο προστατευμένο αποθετήριο μυστικών του περιβάλλοντος επιχείρησής σας. Η εταιρεία κατέχει το κλειδί, το οποίο μπορεί να προσεγγίσει μόνο το API επιχείρησής της. Λειτουργεί ανεξάρτητα από τη μεταγενέστερη σύνδεση του δημιουργού του.

Στείλτε το μέσω HTTPS στο κεφάλαιο Authorization: Bearer YOUR_BACKUP_TOKEN. Κρατήστε τα κλειδιά μακριά από διευθύνσεις URL, δημόσια σενάρια και αρχεία καταγραφής. Μόνο οι διαχειριστές και οι ιδιοκτήτες της εταιρείας μπορούν να δημιουργούν, να παραθέτουν και να ανακαλούν κλειδιά.

Εφαρμογή ιστού: κλειδί API με ημερομηνία λήξης και ενέργεια ανάκλησης
Διαχείριση κλειδιών στην εφαρμογή ιστού: όνομα, ισχύς και ανάκληση για κάθε πρόγραμμα δημιουργίας αντιγράφων ασφαλείας.

Python: λήψη πλήρους επιχείρησης και διαδοχικών

Κατεβάστε τον πελάτη Python company_backup.py και τοποθετήστε τον δίπλα στο σενάριό σας. Απαιτεί Python 3.10 ή νεότερη έκδοση σε Linux ή macOS και χρησιμοποιεί μόνο τη βιβλιοθήκη προτύπου. Ορίστε το SKAVA_BACKUP_TOKEN στο προστατευμένο περιβάλλον διεργασίας και αντικαταστήστε το 42 με το αναγνωριστικό εταιρείας από τη διεύθυνση της εφαρμογής 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")

Οι προγραμματισμένες εργασίες μπορούν να καλέσουν τον ίδιο πελάτη απευθείας:

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

Ο πελάτης ζητά τη δημιουργία, ελέγχει την κατάσταση, μεταδίδει τη λήψη στον δίσκο, ελέγχει το μέγεθος, το SHA-256 και το περιεχόμενο του ZIP και επιβεβαιώνει την παραλαβή. Αποθηκεύει τα πλήρη και ταcremental backups ως ξεχωριστά αρχεία. Διατηρήστε το κρυφό αρχείο κατάστασης σε αυτόν τον κατάλογο: περιέχει τις πληροφορίες αλυσίδας και επαναλήψιμης λήψης. Πριν ζητήσετε άλλο increment, ο πελάτης επιβεβαιώνει όλα τα προηγούμενα αρχεία ZIP. Μετά από διακοπή, επαναλάβετε την ίδια εντολή. Οι ταυτόχρονες εργασίες για την ίδια εταιρεία στον ίδιο κατάλογο αποτρέπονται.

Ροή API χωρίς μόνιμη σύνδεση

  1. Αίτημα: POST /api/v1/companies/42/backups με {"kind":"full","request_id":"YOUR_UNIQUE_ID"}. Για increment, ορίστε το kind σε diff και στείλτε το τοπικό ID πλήρους backup ως base_id και το τελευταίο επιβεβαιωμένο ID πακέτου ως parent_id. Η απάντηση παρέχει το job.id. Επαναχρησιμοποιήστε το ίδιο request_id κατά την επανάληψη.
  2. Επαλήθευση: GET /api/v1/companies/42/backups/JOB_ID, περίπου κάθε δέκα δευτερόλεπτα. Η δημιουργία εκτελείται σε παρασκήνιο κατά τη διάρκεια των queued ή running. Δεν παραμένει ανοιχτή σύνδεση μεταξύ των αιτημάτων.
  3. Λήψη: Στο ready με available: true, καλέστε GET /api/v1/companies/42/backups/JOB_ID/download. Μόνο αυτή η μεταφορά διατηρεί μια σύνδεση ανοιχτή. Αν διακοπεί, κατεβάστε ξανά ολόκληρο το αρχείο.
  4. Επιβεβαίωση λήψης: Ελέγξτε τα job.bytes και job.sha256. Λάβετε τα X-Backup-Download-Id και X-Backup-Receipt από τα κεφαλαία της απόκρισης λήψης. Στείλτε POST /api/v1/companies/42/backups/JOB_ID/downloads/DOWNLOAD_ID/confirm με {"receipt":"RECEIPT","bytes":12345,"sha256":"SHA256"}. Μόνο μια πλήρης μεταφορά με ταιριαστή επιβεβαίωση θεωρείται επιτυχής.

GET /api/v1/companies/42/backups επιστρέφει το ιστορικό, με σελιδοποίηση μέσω next_offset. Εξαντλημένα όρια ή προσωρινά όρια χωρητικότητας επιστρέφουν HTTP 429 με Retry-After. Τα αντίγραφα ασφαλείας δημιουργούνται διαδοχικά εντός των ορίων, ώστε τα ταυτόχρονα νυχτερινά καθήκοντα να μην υπερφορτώσουν την εφαρμογή.

Κατανοήστε το ιστορικό λήψεων

Το ιστορικό εμφανίζει τον τύπο (πλήρης ή διαδοχική), την ώρα αίτησης, τη λήξη, το πλήρες αντίγραφο, τον προκάτοχο και κάθε προσπάθεια λήψης με τα μεταφερθέντα bytes. Το «Έτοιμο» υποδεικνύει ένα αρχείο που έχει δημιουργηθεί. Το «Μεταφέρθηκε» σημαίνει ότι ο διακομιστής έστειλε όλα τα bytes. Το «Επαληθεύτηκε το checksum» σημαίνει ότι ο πελάτης επαλήθευσε και επιβεβαίωσε την πλήρη λήψη. Οι διακοπές και οι αποτυχημένες προσπάθειες παραμένουν ορατές.

Εφαρμογή ιστού: επαυξητικό αντίγραφο ασφαλείας με προηγούμενο αντίγραφο, προθεσμία λήψης και επιβεβαιωμένο άθροισμα ελέγχου
Το ιστορικό λήψεων δείχνει την αλυσίδα αντιγράφων ασφαλείας, το διάστημα των 24 ωρών και την επαληθευμένη λήψη όλων των δεδομένων.

Η web εφαρμογή επιβεβαιώνει την λήψη στον περιηγητή πριν εμφανιστεί ο διαλόγος αποθήκευσης. Αυτή η επιβεβαίωση δεν αποδεικνύει ότι το αρχείο αποθηκεύτηκε μόνιμα στον υπολογιστή σας. Για αυτόματες αντιγραφές ασφαλείας, ο πελάτης Python γράφει το αρχείο στον δίσκο πριν επιβεβαιώσει την λήψη. Οι λήψεις μέσω web εφαρμογής περιορίζονται στα 64 MiB. Χρησιμοποιήστε τον πελάτη Python για μεγαλύτερα αρχεία.