Skava Skava / Wiki

Şirket yedekleri

Şirket yöneticileri ve sahipleri, web uygulamasında şirketlerini açar ve Yedekler seçeneğini seçer. Yedek talebinde bulunabilirler, ZIP dosyalarını indirebilirler ve yedek sunucuları için API anahtarlarını yönetebilirler. Bu dışa aktarma, mobil uygulamada mevcut değildir.

Kapsam ve sınırlar

Yedek, şirketin düzenli proje sohbetlerini, arşivlenmiş sohbetleri, mesajları, tepkileri, sohbet kartlarını ve bunlara bağlı yüklenen ekleri içerir. Ayrıca proje ve sohbet meta verilerini, katılımcı adlarını ve bu sohbetlerdeki yayımlanmış şirket belgelerini de kapsar. Şirket yöneticileri ve sahipleri, kişisel olarak katılmadıkları şirket sohbetlerini de yedekleyebilir.

Doğrudan mesajlar, özel notlar, kişisel olarak görünen hizmetler, şirketler arası sohbetler ve kişisel taslaklar hariç tutulur. Şirket Sürücüsü ve dış bağlantı içerikleri bu sohbet dışa aktarımının kapsamı dışındadır. Eksik ilgili ekler, oluşturma işleminin başarısız olmasına neden olur. ZIP bir veri dışa aktarmasıdır; Skava'ya otomatik geri içe aktarma henüz mevcut değildir.

Kotalar, artımlar ve saklama süresi

Her şirket 7 gün içinde bir tam yedekleme ve 24 saat içinde iki artımlı yedekleme talep edebilir. Bu kayan pencereler her taleple başlar. Hazır olan aynı dosyanın tekrar indirilmesi üretim kotasını tüketmez. Başarısız üretim işleri bu sınırlara dahil edilmez.

Her artımlı yedekleme, son tam aktarılmış ve checksum ile doğrulanmış yedeklemeden bu yana yapılan değişiklikleri ve silinmeleri içerir. Zincir A + B + C şeklindedir: A tam yedeklemedir, B, A'dan bu yana değişiklikleri, C ise B'den bu yana ek değişiklikleri içerir. Durumu yeniden oluşturmak için tüm paketleri sırayla uygulayın. Değişmemiş ekler, bu zincirde zaten mevcut olan dosyalara atıfta bulunur.

İndirmeler, üretim bittikten sonra 24 saat boyunca kullanılabilir durumda kalır. Ardından ZIP dosyası kaldırılır, ancak geçmiş korunur. Tam yedeklemeyi ve ilişkili tüm artımlı yedeklemeleri yerel olarak saklayın. Karşılaştırma durumu, tam yedeklemeden en fazla 90 gün boyunca kullanılabilir; sonrasında yeni bir tam yedekleme gereklidir. Her artımlı yedekleme, hem tam yedeklemeyi hem de doğrudan öncülünü kimlik numarası ve SHA-256 ile tanımlar.

Yalnızca tam olarak alınmış ve onaylanmış paket yeni öncül haline gelir. Hazır ama onaylanmamış bir artımlı yedekleme, onaylanana veya süresi dolana kadar başka bir artımlı yedeklemeyi engeller. Onaylanmamış bir paketin süresi dolduktan sonra, sonraki deneme son onaylanmış durumdan başlar ve henüz yedeklenmemiş değişiklikleri içerir. Onaylanmış bir parça yerelde eksikse, 24 saatlik kullanılabilirlik süresi içinde tekrar indirin veya haftalık sınıra tabi olarak yeni bir tam yedekleme başlatın. Şirket başına tek bir ortak yedekleme dizini tercih edin; bağımsız istemciler aynı eksiksiz zinciri korumalıdır.

API anahtarı oluşturun

API anahtarları bölümünde “Firma NAS” gibi bir ad girin ve anahtarı oluşturun. Anahtar yalnızca bir kez görüntülenir, bir yıl sonra sona erer ve istenildiğinde iptal edilebilir. Yedekleme ortamınızın korumalı gizli depolama alanında saklayın. Anahtar firmaya aittir ve yalnızca o firmanın yedekleme API’sine erişebilir. Oluşturan kişinin sonraki oturum açma işlemlerinden bağımsız çalışır.

Authorization: Bearer YOUR_BACKUP_TOKEN başlığında HTTPS üzerinden gönderin. Anahtarları URL’lerde, herkese açık betiklerde ve günlüklerde tutmayın. Yalnızca firma yöneticileri ve sahipleri anahtar oluşturabilir, listeleyebilir ve iptal edebilir.

Web uygulaması: Son kullanma tarihi ve iptal eylemi olan API anahtarı
Web uygulamasında anahtar yönetimi: Her yedekleme programı için ad, geçerlilik süresi ve iptal.

Python: Tam yedek ve artımlı yedekleri indirin

company_backup.py Python istemcisi dosyasını indirin ve betiğinizin yanına yerleştirin. Linux veya macOS üzerinde Python 3.10 veya daha yeni bir sürüm gerektirir ve yalnızca standart kütüphaneyi kullanır. SKAVA_BACKUP_TOKEN değerini korumalı süreç ortamında tanımlayın ve web uygulaması adresindeki firma kimliğini 42 ile değiştirin.

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

Zamanlanmış işler aynı istemciyi doğrudan çağırabilir:

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

İstemci üretimini ister, durumu sorgular, indirmeyi diske akıtır, boyutu, SHA-256 değerini ve ZIP içeriğini kontrol eder, teslimi onaylar. Tam ve artımlı yedekleri ayrı dosyalar olarak saklar. Gizli durum dosyasını bu dizinde tutun: zincir ve devam bilgilerini içerir. Yeni bir artımlı talep etmeden önce istemci önceki tüm ZIP dosyalarını doğrular. Kesinti sonrası aynı komutu tekrarlayın. Aynı şirket için aynı dizinde eşzamanlı işler engellenir.

Kalıcı bağlantı olmadan API akışı

  1. İstek: POST /api/v1/companies/42/backups ve {"kind":"full","request_id":"YOUR_UNIQUE_ID"}. Artımlı için kind değerini diff olarak ayarlayın, yerel tam yedek kimliğinizi base_id olarak ve son onaylanan paket kimliğini parent_id olarak gönderin. Yanıt job.id değerini sağlar. Tekrar denemede aynı request_id değerini yeniden kullanın.
  2. Sorgu: GET /api/v1/companies/42/backups/JOB_ID, yaklaşık on saniyede bir. Üretim queued veya running sırasında arka planda çalışır. İstekler arasında açık bağlantı kalmaz.
  3. İndirme: ready durumunda ve available: true olduğunda, GET /api/v1/companies/42/backups/JOB_ID/download çağrısını yapın. Sadece bu aktarım bir bağlantıyı açık tutar. Kesinti olursa dosyanın tamamını yeniden indirin.
  4. Alımı onaylayın: job.bytes ve job.sha256 alanlarını kontrol edin. İndirme yanıt başlıklarından X-Backup-Download-Id ve X-Backup-Receipt değerlerini alın. {"receipt":"RECEIPT","bytes":12345,"sha256":"SHA256"} gövdesiyle POST /api/v1/companies/42/backups/JOB_ID/downloads/DOWNLOAD_ID/confirm isteğini gönderin. Sadece eşleşen onayla tamamlanan aktarım başarılı sayılır.

GET /api/v1/companies/42/backups isteği, next_offset üzerinden sayfalanan geçmişi döndürür. Dolan kotalar veya geçici kapasite sınırları, Retry-After başlığıyla HTTP 429 döndürür. Yedeklemeler sınırlar içinde sıralı olarak oluşturulur, böylece eşzamanlı gece işleri uygulamayı aşırı yüklenmeye zorlamaz.

İndirme geçmişini anlama

Geçmiş, tam veya artımlı türü, istek zamanı, son kullanma tarihi, tam yedek, öncülü ve aktarılan baytlarla her indirme denemesini gösterir. “Hazır”, oluşturulmuş bir dosyayı belirtir. “Aktarıldı”, sunucunun tüm baytları gönderdiğini ifade eder. “Kontrol toplamı onaylandı”, istemcinin tam alımı doğrulayıp onayladığı anlamına gelir. Kesintiye uğrayan ve başarısız denemeler görünür kalır.

Web uygulaması: Önceki sürüm, indirme son kullanma tarihi ve onaylanmış kontrol toplamı ile artımlı yedekleme
İndirme geçmişi, yedekleme zincirini, 24 saatlik süreyi ve tüm verilerin doğrulanmış teslimini gösterir.

Web uygulaması, kaydetme penceresi açılmadan önce tarayıcıda teslimatı doğrular. Bu onay, dosyanın bilgisayarınızda kalıcı olarak saklandığını kanıtlamaz. Otomatik yedeklemeler için Python istemcisi, teslimatı onaylamadan önce dosyayı diske yazar. Web uygulaması indirmeleri 64 MiB ile sınırlıdır; daha büyük arşivler için Python istemcisini kullanın.