Skava Skava / Wiki

نسخ احتياطية للشركة

يفتح مسؤولو الشركة ومالكوها شركتهم في التطبيق الويب ويختارون النسخ الاحتياطي. يمكنهم طلب نسخ احتياطية، وتنزيل ملفات ZIP، وإدارة مفاتيح API لخادم النسخ الاحتياطي الخاص بهم. هذا التصدير غير متاح في تطبيق الهاتف المحمول.

النطاق والحدود

تحتوي النسخة الاحتياطية على محادثات المشاريع العادية للشركة، بما في ذلك المحادثات المؤرشفة، مع الرسائل والتفاعلات وبطاقات المحادثات والمرفقات المرفقة بها. كما تتضمن بيانات وصفية للمشاريع والمحادثات، وأسماء المشاركين، والمستندات المنشورة للشركة في تلك المحادثات. يمكن لمسؤولي الشركة ومالكيها أخذ نسخ احتياطية من محادثات الشركة التي لم ينضموا إليها شخصياً.

تُستبعد الرسائل المباشرة والملاحظات الخاصة والخدمات المرئية شخصياً والمحادثات بين الشركات والمسودات الشخصية. محتوى شركة Drive ومحتوى الروابط الخارجية خارج نطاق هذا التصدير للمحادثات. يؤدي غياب المرفقات المرتبطة إلى فشل التوليد. ملف ZIP هو تصدير بيانات، ولا يتوفر استيراد تلقائي مرة أخرى إلى Skava بعد.

الحصص والنسخات التفاضلية والاحتفاظ

يمكن لكل شركة طلب نسخة احتياطية كاملة واحدة خلال 7 أيام ونسختين احتياطيتين تدريجيتين خلال 24 ساعة. تبدأ هذه النوافذ المتجددة مع كل طلب. إعادة تنزيل الملف الجاهز نفسه لا تستهلك من حصة الإنشاء. مهام الإنشاء التي تفشل لا تُحتسب ضمن هذه الحدود.

تحتوي كل نسخة تزايدية على التغييرات والحذفات منذ آخر نسخة كاملة تم نقلها وتأكيد تجزئتها. السلسلة هي A + B + C: حيث A هي النسخة الكاملة، وB تحتوي على التغييرات منذ A، وC تحتوي فقط على التغييرات اللاحقة منذ B. أعد بناء الحالة عن طريق تطبيق كل حزمة بالترتيب. تشير المرفقات غير المتغيرة إلى الملفات الموجودة مسبقًا في هذه السلسلة.

تبقى التنزيلات متاحة لمدة 24 ساعة بعد انتهاء عملية الإنشاء. ثم يُحذف ملف ZIP بينما تبقى السجلات. احتفظ بالنسخة الاحتياطية الكاملة وكل النسخ التفاضلية المرتبطة بها محليًا. تبقى حالة المقارنة صالحة للاستخدام لمدة تصل إلى 90 يومًا بعد النسخة الاحتياطية الكاملة، ويُطلب إنشاء نسخة احتياطية كاملة جديدة بعد ذلك. يحدد كل ملف تفاضلي النسخة الاحتياطية الكاملة والسابق المباشر له عبر المعرف وقيمة SHA-256.

لا يصبح الحزمة الجديدة سلفًا إلا بعد استلامها بالكامل وتأكيد استلامها. الحزمة التفاضلية الجاهزة وغير المؤكدة تمنع بدء حزمة تفاضلية أخرى حتى يتم تأكيدها أو انتهاء صلاحيتها. بعد انتهاء صلاحية حزمة غير مؤكدة، تبدأ المحاولة التالية من آخر حالة مؤكدة وتشمل التغييرات التي لم يتم نسخها احتياطيًا بعد. إذا كان جزء مؤكد مفقودًا محليًا، قم بتحميله مرة أخرى خلال فترة توافره البالغة 24 ساعة، أو ابدأ نسخة احتياطية كاملة جديدة ضمن الحد الأسبوعي. يُفضّل استخدام مجلد نسخ احتياطي مشترك واحد لكل شركة، مع ضرورة الحفاظ على نفس السلسلة الكاملة لدى العملاء المستقلين.

إعداد مفتاح واجهة برمجة التطبيقات

تحت مفاتيح واجهة برمجة التطبيقات، أدخل اسماً مثل «خادم الشبكة للشركة» وأنشئ المفتاح. يُعرض المفتاح مرة واحدة فقط، وينتهي صلاحيته بعد عام واحد، ويمكن إلغاؤه في أي وقت. احفظه في مخزن الأسرار المحمي في بيئة النسخ الاحتياطي الخاصة بك. المفتاح ملك للشركة، ولا يمكنه الوصول إلا إلى واجهة برمجة التطبيقات للنسخ الاحتياطي الخاصة بتلك الشركة. يعمل بشكل مستقل عن تسجيل دخول منشئه اللاحق.

أرسله عبر HTTPS في ترويسة Authorization: Bearer YOUR_BACKUP_TOKEN. أبعد المفاتيح عن عناوين URL والسكربتات العامة والسجلات. يمكن لمسؤولي الشركة ومالكيها فقط إنشاء المفاتيح وعرض قوائمها وإلغاؤها.

تطبيق الويب: مفتاح API بتاريخ انتهاء وإجراء إلغاء
إدارة المفاتيح في تطبيق الويب: الاسم، الصلاحية والإلغاء لكل برنامج نسخ احتياطي.

بايثون: تنزيل نسخة احتياطية كاملة والنسخات التكرارية

نزّل عميل بايثون company_backup.py وضعه بجانب سكربتك. يتطلب بايثون 3.10 أو أحدث على لينكس أو ماك أو إس، ويعتمد فقط على المكتبة القياسية. اضبط SKAVA_BACKUP_TOKEN في بيئة العملية المحمية، واستبدل 42 بمعرّف الشركة من عنوان تطبيق الويب.

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، ويؤكد الاستلام. يخزّن النسخ الاحتياطية الكاملة والتدريجية كملفات منفصلة. احتفظ بملف الحالة المخفي في ذلك المجلد، إذ يحتوي على معلومات السلسلة والاستئناف. قبل طلب نسخة تدريجية أخرى، يتحقق العميل من كل ملف ZIP سابق. بعد انقطاع الاتصال، كرر نفس الأمر. يتم منع تنفيذ مهام متزامنة لنفس الشركة في نفس المجلد.

تدفق الواجهة البرمجية دون اتصال دائم

  1. الطلب: POST /api/v1/companies/42/backups مع {"kind":"full","request_id":"YOUR_UNIQUE_ID"}. بالنسبة للنسخة التدريجية، اضبط kind على diff وأرسل معرّف النسخة الاحتياطية الكاملة المحلية كـ base_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. يتم توليد النسخ الاحتياطية تسلسلياً ضمن الحدود حتى لا تُحمّل المهام الليلية المتزامنة التطبيق.

فهم سجل التنزيل

يُظهر السجل النوع الكامل أو التزايدي، وقت الطلب، انتهاء الصلاحية، النسخة الاحتياطية الكاملة، السلف، وكل محاولة تنزيل مع البايتات المنقولة. "جاهز" يحدد ملفاً تم توليده. "منقول" يعني أن الخادم أرسل جميع البايتات. "تم تأكيد التوقيع" يعني أن العميل تحقق وأكّد الاستلام الكامل. تبقى المحاولات المنقطعة والفاشلة مرئية.

تطبيق الويب: نسخ احتياطي تدريجي مع سابق، انتهاء تنزيل ومطابقة تجريبية مؤكدة
سجل التنزيلات يعرض سلسلة النسخ الاحتياطي، نافذة 24 ساعة واستلام جميع البيانات بعد التحقق منها.

تحقق تطبيق الويب من الاستلام في المتصفح قبل ظهور مربع الحوار للحفظ. لا يثبت هذا التأكيد أن الملف تم تخزينه بشكل دائم على جهازك لاحقًا. بالنسبة للنسخ الاحتياطي التلقائي، يكتب عميل بايثون الملف على القرص قبل تأكيد الاستلام. تنزيلات تطبيق الويب محدودة بـ 64 ميغابايت؛ استخدم عميل بايثون للأرشيفات الأكبر حجمًا.