الميزات¶
BombVault بسيط افتراضياً وعميق عند الحاجة. تُظهر الواجهة الأساسيات فقط حتى تقلب مفتاح عرض بسيط / عرض متقدم. تجمع هذه الصفحة مجموعة الميزات الكاملة.
نطاق النسخ الاحتياطي¶

الحاويات، لكل واحدة مفتاح جدولة خاص وترتيب نسخ وسجل خاص بها.
| ماذا | ما الذي يُحفَظ |
|---|---|
| Docker containers | مجلد appdata إضافة إلى تعريف الحاوية (الصورة، متغيرات البيئة، المنافذ، التسميات، الوحدات). افتراضيًا مجلد appdata كله؛ ويحدد اختيار المجلدات في الحاوية بدقة المجلدات التي تشملها النسخة، مع عدّ حي للمسارات، وقائمة بما استبعدته، ومفتاح تخطي مجلدات الكاش لكل جذر (CACHEDIR.TAG). |
| KVM / libvirt VMs | صورة (صور) قرص الـ VM، وتعريف XML، وذاكرة UEFI NVRAM (إيقاف تشغيل آمن أو لقطة حية، عبر SSH). تعود اللقطات الحية تلقائياً إلى نسخة احتياطية آمنة إذا تعذّر إنشاء اللقطة، فلا يفشل نسخ الـ VM احتياطياً بمجرد خطأ. عند تفعيل الكتل المتغيرة فقط يُقرأ الجهاز الافتراضي العامل بأقراص qcow2 عبر نقاط التحقق في libvirt، فلا تقرأ النسخة الاحتياطية إلا الكتل المكتوبة منذ النسخة السابقة، وتبقى كل لقطة قادرة على استعادة القرص كاملًا وحدها. تُنقل الأقراص الموجودة على zvol في ZFS عبر zfs send من خلال اتصال SSH نفسه، فيُنسخ الـ VM الذي أقراصه zvol احتياطيًا كجهاز واحد. وتُحفظ حالة vTPM الممرَّر (passthrough) بجانب NVRAM عندما يذكر تعريف XML للجهاز مساره. أما vTPM المحاكى، الذي يعدّه TrueNAS لضيوف Windows 11، فلا ينشر هذا المسار، لذا احتفظ بمفتاح الاسترداد لمثل هذا الضيف في متناول يدك. راجع دليل نسخ الـ VM احتياطيًا. |
| Unraid flash | فلاش USB بالكامل (/boot): نظام التشغيل، الترخيص، إعداد المصفوفة، المشاركات، وإعداد الشبكة والإضافات. الاستعادة هي تنزيل .zip بنقرة واحدة ولا تكتب فوق الفلاش قيد التشغيل أبداً. |
| إعدادات التطبيق | مجلد /config الخاص بـ BombVault (قاعدة بيانات الإعدادات، بيانات الاعتماد خارج الموقع، زوج مفاتيح libvirt SSH)، مُلتقَط بلقطة عبر VACUUM INTO في SQLite فلا تُلتقَط قاعدة بيانات بوضع WAL أثناء الكتابة. يُستعاد عبر إعادة تشغيل ذاتية، فلا تُكتَب البيانات فوق قاعدة البيانات الحية تحت مقبض مفتوح. |
| الملفات والمجلدات | مجموعات ملفات مسمّاة: أي مجلد على الخادم (مشاركة، مستنداتك، مكتبة صور)، ولكلٍّ منها أنماط استبعاد اختيارية خاصة بكل مجموعة. تكافؤ كامل مع النطاقات الأخرى (الجداول الزمنية، الاحتفاظ، النسخ خارج الموقع، فحوص السلامة وتمارين الاستعادة). |
| مجموعات بيانات ZFS | مجموعة بيانات مع كل مجموعات البيانات التي تحتها، تُقرأ من لقطة ZFS واحدة فتأتي كلها من اللحظة نفسها، وتُحفظ بـ restic مثل أي مجلد: مع إزالة التكرار وإمكانية التصفح واستعادة الملفات منفردة. تنضم مجموعات البيانات الفرعية الجديدة من تلقاء نفسها، ويمكن استبعاد فرع بعينه، والفرع الذي لا يمكن قراءته يُتخطّى ويُذكر باسمه. عند الرغبة تُوقَف الحاويات أو يُنفَّذ أمر للحظة اللقطة فقط. الأحجام (volumes) غير مشمولة: حجم الـ VM يُنسخ مع الـ VM، والحجم الذي لا يستخدمه أي VM لا يُنسخ بعد. راجع مجموعات بيانات ZFS. |
الاستعادة¶

التعافي الموجَّه يأخذ تثبيتًا جديدًا عبر حالة الكارثة، في مكان واحد.
- استعادة كاملة بنقرة واحدة. اختر لقطة، انقر استعادة. انتهى.
- خط زمني واحد لكل عنصر. تسرد الحاويات والـ VMs ومجموعات المجلدات والفلاش وإعدادات التطبيق نسخها الاحتياطية كخط زمني واحد عبر كل مكان تقع فيه، والمستودع الذي تُكتب إليه، وكل هدف خارج الموقع. تظهر النسخة المنسوخة خارج الموقع مرة واحدة، معلَّمة بكل مكان. تُقرأ أماكن خارج الموقع عند فتحها، والحذف في مكان واحد يقول ما إذا كانت آخر نسخة.
- يُعاد تثبيت الحاويات تلقائياً. يُعاد تطبيق تعريف الحاوية على واجهة Docker API، فتظهر الحاوية من جديد في تبويب Docker على Unraid تماماً كما كانت.
- تعود وحدة GPU والحدود والروابط. تستعيد الحاوية حدود مواردها ومشغّل السجلات وإعدادات DNS والروابط القديمة ومعالجها الرسومي أو بيئة تشغيلها (
--gpus،--runtime=nvidia). على مضيف لا يملك برنامج تشغيل GPU أو بيئة التشغيل تلك، تذكر الاستعادة ذلك وتعرض استعادة دون المعالج الرسومي وبيئة التشغيل، وكذلك بعد استعادة عدة حاويات أو stack. يُترك الرابط إلى حاوية مفقودة، أو متوقفة عند تشغيل الحاوية المستعادة، ويذكر سجل التشغيلات ذلك. - يُعاد إنشاء الـ VMs تلقائياً. يُعاد استيراد XML عبر SSH فيظهر الـ VM من جديد في مدير الأجهزة الافتراضية مع إعادة ربط قرصه وذاكرة UEFI NVRAM، حتى بعد حذف الـ VM. تعيد اكتشاف النسخ الاحتياطية بناء إدخال اختفى بالكامل (مثلاً بعد تثبيت جديد).
- استعادة فردية. استعِد حاوية واحدة أو VM واحداً أو مجموعة ملفات واحدة دون المساس بالبقية.
- استعادة الفلاش هي تنزيل
.zip. يُبثّ إلى متصفحك باسمflash-<id>.zip، جاهز للإسقاط في أداة إنشاء USB من Unraid. لا يُمَس/bootقيد التشغيل أبداً. - إضافة واحدة في كل مرة. تعرض صفحة Flash الإضافات في كل نسخة احتياطية من الفلاش مع إصدارها وحجمها، وتعيد إضافة واحدة إلى الفلاش العامل: ملف
.plgالخاص بها ومجلدها ضمنconfig/pluginsوملفات الحزم الموجودة في النسخة. لا يتغير شيء آخر على الفلاش. يثبّت Unraid الإضافة عند الإقلاع التالي، أو فورًا من Plugins, Install Plugin. - تصدير zip مجدوَل للفلاش. بعد كل نسخة احتياطية للفلاش، اكتب اللقطة اختيارياً كملف
.zipعادي إلى مجلد تختاره (ملفflash-latest.zipواحد يُستبدَل أو سجل متجدد). وجّهه إلى مجلد Syncthing أو rclone حتى تغادر نسخة USB القابلة للإقلاع الخادمَ تلقائياً. - فحص تعارض قبل التنفيذ. قبل إيقاف أو إزالة أي شيء، تتحقق الاستعادة من أن عنوان IP الثابت للحاوية ومنافذ المضيف المنشورة متاحة، وتُجهض برسالة واضحة بدلاً من ترك استعادة نصف مكتملة.
- فحوص قبل الاستعادة. تتحقق كل نافذة استعادة أولًا من أن المستودع يستجيب، وأن المفتاح المحفوظ يفتحه، وأن نقطة الاستعادة موجودة، وأن في الوجهة مساحة لما ستكتبه الاستعادة. يبقى زر البدء مقفلًا ما دام أحد الفحوص فاشلًا، وتقول علامة (i) في الزر أيها.
- خطة الاستعادة. قبل التأكيد، تعرض النافذة ما ستفعله الاستعادة مقارنة بالوضع الحالي: الملفات الجديدة والمستبدلة وغير المتغيرة، مع القائمة عند الطلب، والملفات الموجودة في الوجهة وليست في النسخة الاحتياطية فتبقى في مكانها. وفي الحاويات والأجهزة الافتراضية تقارن أيضًا الإعدادات التي ستعيد الاستعادة إنشاءها بالإعدادات العاملة: الصورة والوسم والمنافذ وأسماء المتغيرات ووحدات التخزين، أو الذاكرة ووحدات vCPU والأقراص والشبكة. يحسب restic ذلك بتشغيل تجريبي حسب الحجم ووقت التعديل دون قراءة الملفات، وتتوقف الشجرة الكبيرة جدًا بعد 30 ثانية وتذكر ذلك. استعادة المكدس تفحص كل عضو وتخطط له، وتسمّي العضو الذي يمنعها.
- مجلدات مشتركة. تسمّي الاستعادة في المكان الأصلي كل حاوية أخرى، عاملة أو متوقفة، يصل ربطها إلى مجلد تكتب فيه، مثل «يستخدم nextcloud-db هذا المسار أيضًا». إنها تحذير ولا تمنع شيئًا.
- استعادة على مستوى الملفات. وسّع الملفات للقطة حاوية، صفِّ، علّم أي عدد من الملفات والمجلدات، ثم استعِد المحدَّد في مكانه أو داخل مجلد تختاره.
- استعادة مجموعة ملفات. استعِد لقطة مجموعة ملفات في مكانها (بعد تأكيد صريح) أو داخل مجلد تختاره، ولا يحدث ذلك بصمت أبداً. تعمل الاستعادة الانتقائية هنا أيضاً.
- استعادة مجموعة بيانات ZFS. استعد مجموعة بيانات واحدة من عنصر إلى مكانها (بعد لقطة أمان ZFS تبقى حتى تحذفها)، أو إلى مجلد، أو الملفات التي تختارها فقط، أو كل مجموعات البيانات في نسخة احتياطية إلى مجلد. لا يُعاد أي مجموعة بيانات إلى الوراء ولا تُستبدل.
- تحافظ الاستعادة على حالة التشغيل. حاوية أو VM كان يعمل عند نسخه احتياطياً يعود يعمل؛ وما كان متوقفاً يبقى متوقفاً. علّم تركه متوقفاً بعد الاستعادة لإعادة الإنشاء دون تشغيل.
- استعادة حزمة كاملة. تُجمَّع الحاويات من نفس مشروع Docker Compose في لوحة الـ Stacks. تعيد استعادة الـ stack… بناء كل عضو من أحدث نسخة احتياطية له متوقفاً، ثم تشغّلها اختيارياً وفق ترتيب
depends_on. - تقدم حي، وإلغاء، وتغذية راجعة عن الانشغال. تُظهر استعادة طويلة شريط نسبة مئوية حياً ويمكن إلغاؤها بتأكيد مُدرك للنوع. تُسجَّل الاستعادة المُلغاة على أنها مُلغاة، لا فاشلة.
- تعافٍ موجَّه. يرشد تبويب الاستعادة مخصَّص تثبيتاً جديداً عبر حالة الكارثة. راجع النسخ خارج الموقع والتعافي.
- الاستعادة من مستودع BombVault آخر. تفتح جلسة لمرة واحدة للقراءة فقط مستودعَ نسخة BombVault مختلفة باستخدام
APP_KEYالخاص بتلك النسخة، فيمكنك سحب حاوية من الخادم A إلى الخادم B دون المساس بإعداداتك. راجع النسخ خارج الموقع والتعافي. - خصائص ZFS تعود. تحتفظ كل نسخة احتياطية لـ ZFS بالخصائص المضبوطة محليًا لكل مجموعة بيانات، مثل الضغط وحجم السجل والحصة والتمييز بين الأحرف الكبيرة والصغيرة. الاستعادة إلى مجموعة بيانات جديدة تنشئها بهذه الخصائص، والاستعادة إلى مجموعة موجودة تعرضها ولا تضبطها إلا إذا طلبت ذلك. راجع مجموعات بيانات ZFS.
- الاستيراد من إضافة Appdata.Backup. في صفحة الاستعادة، وجّه BombVault إلى مجلد النسخ الاحتياطي الخاص بالإضافة. يصبح كل أرشيف حاوية نقطة استعادة لحاويته، بتاريخ إنشاء الإضافة له. تُتخطى الأرشيفات المستوردة سابقًا، ولا تُقرأ الأرشيفات نفسها إلا قراءة. تحتاج الحاوية أولًا إلى نسخة احتياطية واحدة في BombVault، حتى يكون للاستعادة تعريفها. لا يحذف الاحتفاظ نقاط الاستعادة المستوردة، لذلك احذف بنفسك ما لم تعد بحاجة إليه.
التخزين والجدولة¶
- نسخ احتياطية تزايدية ومُزالة التكرار عبر restic، فلا تنتفخ حتى أقراص الـ VM الكبيرة داخل المستودع.
- الوجهات: مسار محلي، أو خارج الموقع. مشاركات SMB وخوادم WebDAV (Nextcloud وownCloud وSharePoint) مباشرة من نموذج ضمن الإعدادات، الوصول السحابي، rclone، دون تركيب على المضيف؛ وNFS (ركّب التصدير على Unraid ووجّه مسار نسخ احتياطي إليه)؛ أو خلفيات restic الأصلية دون rclone (
s3:...،rest:http://host:8000/repo،sftp:user@host:/repo)، أو أي remote في rclone عبرrclone:<remote>:<bucket>/path. تُخزَّن جميع بيانات الاعتماد مشفَّرة. - أهداف SSH لا تحتاج تثبيت أي شيء على الطرف البعيد. يتطلب
sftp:فقط خادم SSH، فيعمل حتى Raspberry Pi مجرّد (دون Docker، دون restic) كوجهة خارج الموقع. تُثبَّت مفاتيح المضيف تلقائياً عند أول اتصال. - نسخة خارج الموقع (محلي + بعيد). احتفظ بالنسخة المحلية السريعة وأضف نسخة متماثلة أو أكثر خارج الموقع، مُنسَخة عبر
restic copyعلى أساس بذل أفضل جهد (عثرة خارج الموقع لا تُفشل النسخة المحلية أبداً). لكل نطاق جدوله الزمني الخاص خارج الموقع، إضافة إلى زر نسخ الآن. - أهداف متعددة خارج الموقع لكل نطاق. يمكن لكل نطاق (الحاويات، الـ VMs، الفلاش، الإعدادات، مجموعات الملفات ومجموعات بيانات ZFS) النسخ إلى عدة وجهات خارج الموقع في آن واحد، لا وجهة واحدة فقط. أضف أهدافاً إضافية في صفحة خارج الموقع، لكلٍّ مستودعه الخاص وفئة تخزين S3 وعلامة append-only واحتفاظ وميزانية نمو. تُنقَل نسختك الحالية خارج الموقع بوصفها الهدف الأول، فلا يتغير شيء حتى تضيف هدفاً ثانياً، ويُنسَخ كل هدف لنطاقٍ ما وفق جدول ذلك النطاق خارج الموقع.
- مستودعات مسمّاة. اكتب مواقع نسخك الاحتياطية مرة واحدة في الإعدادات، التخزين، المستودعات، سواء كانت مسارًا محليًا أو أي مستودع restic بعيد بمجموعة بيانات اعتماد خاصة به، ثم اختر أحدها موقعًا لعنصر ما في بطاقته. يُظهر كل صف عدد العناصر التي تشير إليه، ولا يمكن نقل مستودع يستخدمه عنصر أو أحد افتراضيات الموضع ولا حذفه، لأن BombVault لا ينقل أبدًا نسخة احتياطية كُتبت بالفعل.
- عدة مجموعات من بيانات الاعتماد السحابية. تسري بيانات الاعتماد السحابية المشتركة في كل مكان افتراضيًا، لكن أي وجهة يمكنها أن تختار بدلًا منها مجموعة بيانات اعتماد مسمّاة (الإعدادات، الوصول السحابي، مجموعات بيانات اعتماد إضافية)، فيعمل bucket على Hetzner S3 وخادم Garage محلي جنبًا إلى جنب، لكلٍّ مفتاحه. ويشمل ذلك الأهداف خارج الموقع ومسار النسخ الاحتياطي الذي يكون هو نفسه مستودعًا بعيدًا.
- الوجهات. تُعَدّ الوجهة خارج الموقع مرة واحدة، عبر معالج يسرد خدمات تخزين S3 وخادم S3 الخاص بك وخادمك ومشاركاتك وكل تخزين سحابي يدعمه rclone، مع تسجيل الدخول واختبار اتصال ومنتقي مجلدات وكلمة صريحة عن الحماية من الحذف. ثم تظهر زراً في كل نطاق وعنصر. راجع الوجهات.
- الموضع لكل عنصر. لكل بطاقة حاوية أو VM أو مجموعة مجلدات صف أزرار، محلي وزر لكل هدف خارج الموقع، وتحصل المضاءة منها على نسخها الاحتياطية. مشاركة تعيش بالفعل على NAS لم تعد بحاجة للذهاب إلى B2 أيضاً. الموضع ثابت منذ أول نسخة احتياطية، ويمكن أن تتغير النسخ في أي وقت، وتقول البطاقة في كم موقع يُحفظ العنصر وما إذا كانت قاعدة 3-2-1 مستوفاة. راجع الموضع لكل عنصر.
- افتراضيات الموضع. يحدد صف واحد لكل نطاق أين تُكتب العناصر الجديدة وإلى أي الأهداف تُنسَخ العناصر بلا اختيار خاص بها. تغييره لا ينقل أي نسخ احتياطية ويذكر مسبقاً أي الأهداف يكسب أو يفقد عناصر.
- ترتيب نسخ احتياطي يدوي. اضبط الترتيب الدقيق الذي تُنسَخ به حاوياتك من لوحة backup-order في صفحة Containers. تتبع عمليات التشغيل المجدولة ومتعددة التحديد ذلك؛ وأي حاوية تتركها غير مرتَّبة تحتفظ بسلوك الأكثر تأخّراً أولاً السابق، ولا تتغير نسخة حاوية واحدة.
- احتفاظ قابل للضبط: keep-last / يومي / أسبوعي / شهري / سنوي، يُقلَّم تلقائياً بعد كل نسخة احتياطية، ويُضبَط لكل مصدر (المحلي وخارج الموقع معاً في الإعدادات، الاحتفاظ، حتى تحتفظ بالنسخ خارج الموقع أطول كأرشيف). ويمكن لكل مصدر أيضًا أن يحتفظ وفق قواعد خاصة به، محليًا وخارج الموقع (قواعد الاحتفاظ لكل مصدر)، مثل 7 نسخ يومية للحاويات التي تتغير يوميًا وعدد أقل للأجهزة الافتراضية التي نادرًا ما تتغير.
- ضغط لكل مستودع: إيقاف أو تلقائي (الافتراضي في restic) أو أقصى، يُضبط في الإعدادات، التخزين لكل مسار نسخ احتياطي ولكل مستودع مسمّى، وفي الإعدادات، خارج الموقع لكل وجهة خارج الموقع. تكتب به النسخ الاحتياطية والنسخ خارج الموقع والتقليم، وتذكره حزمة الاسترداد حتى يواصل restic العادي الكتابة بالطريقة نفسها.
- جدولة لكل نطاق (يومي / أسبوعي بما فيه مجموعات متعددة الأيام / كل N أيام / cron خام)، وكلها تُحرَّر في مكان واحد في الإعدادات، الجداول. ويمكن لحاوية واحدة أو VM أو مجموعة مجلدات أو عنصر ZFS أن يحمل وتيرة خاصة به، ويعمل كل N أيام أيضًا لتمرين الاستعادة واختبار العبث والملخص الأسبوعي.
- الانتظار حتى يهدأ التطبيق. يمكن للحاوية أن تجعل نسخها الاحتياطي المجدول ينتظر ما دام تطبيقها مشغولًا، لعدد الساعات الذي تحدده كحد أقصى، ثم يبدأ فور هدوء التطبيق. يُعد خادم الوسائط هادئًا حين لا يبث، وأي حاوية أخرى حين يبقى المعالج وحركة المرور تحت الحدود في الإعدادات، الجداول لبضع دقائق (على شبكة المضيف يُحتسب المعالج فقط). يظهر النسخ المنتظر في سجل النشاط وعلى الحاوية مع سببه وموعده الأقصى. لا يحجز أي قفل، فتمضي الحاويات الأخرى. النسخ اليدوية لا تنتظر أبدًا. ينتظر أعضاء حزمة compose المستحقة في التشغيل نفسه معًا، ويستمر الانتظار بموعده الأقصى بعد إعادة التشغيل. إطفاء الحاويات يلغي كل نسخة احتياطية منتظرة، وإطفاء جدولها يلغي النسخ التي أوقفتها تشغيلاته. وتقليل الساعات يقصّر أيضًا انتظارًا بدأ بالفعل.
- حدود نطاق التراسل خارج الموقع. حُدّ معدل رفع/تنزيل restic حتى لا يُشبع النسخ شبكة WAN لديك.
- البث أولًا. أثناء بث خادم وسائط مثل Plex أو Jellyfin أو Emby، ترفع النسخ خارج الموقع بحد أدنى وتعود إلى الحد العادي بعد دقائق من انتهاء البث. يقرأ BombVault حركة المرور الصادرة لخوادم الوسائط من Docker. تتباطأ REST وS3 وB2 وAzure وGoogle Cloud وSwift وrclone عبر HTTP في منتصف النسخ؛ أما SFTP والمجلدات المحلية أو الموصولة فتأخذ الحد الأدنى عند خطوة النسخ التالية. لا يمكن قياس خادم وسائط على شبكة المضيف. في الإعدادات، خارج الموقع.
- فئة تخزين باردة وأرشيفية (S3). لمستودع S3 أصلي خارج الموقع يمكنك اختيار فئة التخزين، مقيّدة بالمستويات القابلة للقراءة عند الاستعادة (Standard، Standard-IA، One Zone-IA، Intelligent-Tiering، Glacier Instant Retrieval) فلا يعطّل تسعير الأرشفة استعادةً بصمت أبداً. تُستبعَد عمداً مستويات الأرشفة العميقة التي تحتاج أولاً إلى إذابة غير متزامنة (Glacier Flexible، Deep Archive). خلفيات S3 الأصلية فقط؛ أما remotes في rclone فتضبط فئتها في إعداد rclone.
- تبقى مجلدات النسخ الاحتياطي قابلة للنسخ خارج الجهاز. بعد كل نسخة احتياطية يخفّف BombVault شجرة المستودع المحلي إلى أدلة
0755/ ملفات0644(المستودعات مشفَّرة، فلا شيء مكشوف) حتى لا يُحجَب مستخدم مزامنة غير root عبر SMB. تعيش تعريفات الاستعادة داخل كل مستودع، فمجلد مستودع منسوخ مكتفٍ ذاتياً بالكامل.
الرؤية والتحقق والمراقبة¶
- إيقاف مؤقت من البطاقة. لكل بطاقة حاوية وVM ومجموعة مجلدات زر إيقاف الجدول مؤقتًا، وهو يُخرج العنصر من الجدول الزمني ومن النسخ الاحتياطي الشامل، وزر استئناف الجدول لإعادته. يضبط المفتاح نفسه الذي يضبطه تضمين في الجدول الزمني، فيتفق الاثنان دائمًا. ويحمل العنصر الموقوف شارة رمادية الجدول متوقف مؤقتًا، ويظل نسخ احتياطي الآن يعمل.
- حالة الحماية (RPO). تُظهر لوحة التحكم مؤشراً أخضر / كهرماني / أحمر لكل نطاق، مقارِناً آخر نسخة احتياطية ناجحة بجدولها الزمني، فتتحول نسخة متأخرة إلى الأحمر بدلاً من الاختباء في سجل.
- خريطة حرارية لصحة النسخ الاحتياطي. تقويم على غرار مساهمات GitHub لنتائج النسخ الاحتياطي اليومية لكل نطاق، مع مبدّل Containers / VMs / Flash / النسخ الذاتي / المجلدات.
- توقيت التشغيل في كل مكان. يقرأ كل إدخال في سجل التشغيل
start, end (duration)، وتحمل كل حاوية وكل VM قائمتها الخاصة أحدث التشغيلات في صفحتها. - لوحة تحكم يمكنك إعادة ترتيبها. بدّل وضع التخصيص لسحب البطاقات إلى ترتيبك وإخفاء ما لا تحتاجه. يُحفَظ التخطيط لكل متصفح.
- حجم المستودع واتجاه إزالة التكرار. حجم المستودع الحالي، ونسبة إزالة التكرار، وعدد اللقطات لكل نطاق، مع مخطط بياني مصغّر لنمو التخزين.
- تمارين التحقق من الاستعادة. يثبت BombVault دورياً أن نسخك الاحتياطية قابلة للاستعادة (
restic check --read-data-subset، محدودة) ويُظهر شارة تم التحقق من قابلية الاستعادة لكل نطاق. - فحص الاستعادة بعد أول نسخة احتياطية. عند اكتمال أول نسخة احتياطية لعنصر ما، يستعيد BombVault عينة منها (حتى 100 ملف و256 MiB) إلى مجلد مؤقت داخل مجلد الاستعادة، ويجعل restic يعيد قراءة كل ملف مقابل قيم التجزئة الخاصة به، ثم يقارن الأحجام بالنسخة الاحتياطية. أما الملف الأكبر من العينة، مثل قرص VM، فتُعاد قراءة أول 64 MiB منه بدلًا من ذلك. تعرض بطاقة العنصر النتيجة، ويُرسل الفشل كإشعار، ويشغّل زر فحص الاستعادة الفحص نفسه على أحدث نسخة احتياطية متى شئت. لا تكرره النسخ الاحتياطية اللاحقة.
- اختبار التشغيل. فحص البايتات لا يثبت أن التطبيق يعود للعمل. يستعيد زر اختبار التشغيل في بطاقة الحاوي أحدث نسخة احتياطية إلى نسخة معزولة ويشغّلها: باسم يبدأ بـ
bombvault-test-، وشبكة Docker داخلية خاصة بها بلا منافذ منشورة ولا طريق إلى الشبكة المحلية، ومعالج واحد و2 GiB من الذاكرة، والبيانات في مجلد مؤقت داخل مجلد الاستعادة. ينجح الاختبار حين يبلغ فحص صحة الحاوي بأنه سليم، أو من دونه حين يستجيب أول منفذ مكشوف من داخل تلك الشبكة، أو من دون كليهما حين يستمر في العمل. لا يُوقف الحاوي الأصلي ولا يُغيَّر أبدًا، وتُزال النسخة وشبكتها وبياناتها بعد ذلك، حتى لو أُعيد تشغيل BombVault في منتصف الاختبار. تُعرض الحاويات على شبكة المضيف والمميزة وذات الأجهزة وتلك التي تحتاج إلى حاوٍ آخر على أنها غير قابلة للاختبار. فعّل اختبار التشغيل ضمن فحوص الاستعادة المجدولة لاختبار حاوٍ واحد في كل تشغيل، بدءًا بالأقدم اختبارًا. تظهر النتيجة على البطاقة وفي لوحة المعلومات. لا تحمل النسخة أيًا من تسميات الأصل، وتعمل دون الصلاحيات (capabilities) وخيارات الأمان وقيم sysctl وcgroup parent التي يضيفها الأصل. الحاوية التي تحتاجها تفشل في الاختبار، وتذكر النتيجة ما عملت النسخة من دونه. - عمليات ذاتية الإصلاح. يُمسَح ويُعاد المحاولة مرة واحدة تلقائياً لقفل restic يتيماً مثبَتاً (تركه إعادة تشغيل أثناء عملية). الاحتفاظ ثابت الهوية (يُقلَّم لكل عنصر، محصَّن ضد تغييرات المسار أو المضيف) ويُرسِل فشلُ الاحتفاظ إشعاراً.
- تحذيرات لا يراها فحص المجلدات. يجيب مساعد الاستثناءات عن سؤال يخص الحجم. لكن بعض أغلى أخطاء النسخ الاحتياطي لا علاقة لها بالحجم، لذلك يحمل المساعد أيضاً تنبيهات خاصة بكل تطبيق حول طريقة تخزينه لبياناته. التنبيه الذي وُجد من أجله: يحفظ Immich ألبومات كل صورة ووجوهها وتواريخها في قاعدة بيانات PostgreSQL تعمل في حاوية منفصلة، فتستعيد النسخة الاحتياطية على مستوى الملفات لحاوية Immich الصور دون أي من ذلك، وتبدو الاستعادة وكأنها نجحت. يظهر التحذير سواء عُرض استثناء أم لا، بما في ذلك على حاوية لم يُحدَّد فيها شيء للفحص، لأن التنبيه صحيح في الحالتين.
- غير منسوخ احتياطياً (التغطية). بطاقة في لوحة التحكم تسمّي كل ما على الخادم لا تغطيه أي نسخة احتياطية تلقائية، مع سبب كل منها: لم يُضَف إلى BombVault أصلاً، أو موجود لكنه غير مدرج في الجدول، أو جدوله الخاص مطفأ، أو لا يوجد جدول مفعَّل في أي مكان. يجيب مؤشر الحماية فوقها عن سؤال آخر، وهو هل عملت في موعدها النسخ الاحتياطية المجدولة فعلاً، ولا يستطيع رؤية الحاوية التي لم يُعدّها أحد قط: فهي غائبة عن كل قائمة وعن كل خطأ، فلا يتحول شيء إلى الكهرماني بسببها. تُقرأ الحاويات من قائمة Docker الحية لا من سجلات BombVault نفسها، لأن العنصر الذي لا سجل له هو بالضبط العنصر الذي يجب تسميته. ويُستبعَد نوع النسخ الاحتياطي الذي أطفأته من العدّ كلياً، لأن ذلك كان اختيارك.
- معاينة الاحتفاظ. تعرض اللوحة المجاورة لإعدادات الاحتفاظ ما يوشك التشغيل التالي على حذفه، قبل أن يحدث: لكل مستودع ولكل عنصر، مع تسمية نقاط الاستعادة. لا تأخذ قفل مستودع ولا تغيّر شيئاً، لذلك تجيب حتى أثناء تشغيل نسخة احتياطية. إذا كان الاحتفاظ مطفأً فهي تقول ذلك بدلاً من عرض قائمة فارغة، ويُوسَم المستودع append-only بذلك (لا يعمل الاحتفاظ فيه إطلاقاً)، ويُذكَر اسم المستودع الذي تعذّر الوصول إليه بدلاً من أن يغيب بصمت. تجدها ضمن الإعدادات، الاحتفاظ لكل من السياسة المحلية وسياسة خارج الموقع، ولكل منهما معاينتها.
- الحالات الشاذة. تُقارَن كل نسخة احتياطية لحاوية أو آلة افتراضية أو مجموعة مجلدات أو تفريغ قاعدة بيانات أو محرك الفلاش أو النسخة الذاتية بالسجل الخاص بذلك العنصر. تنظر الفحوص إلى البيانات الجديدة في التشغيل مقارنة بأكبر الكميات المعتادة في النسخ الأخيرة وبالمعدل المعتاد في الساعة؛ وإلى نسخة أعادت حفظ معظم البيانات، بما في ذلك الملفات التي أعيدت تسميتها وكتابتها؛ وإلى حجم المصدر وعدد الملفات اللذين يبلّغ عنهما restic لكل عنصر ولكل تفريغ؛ وإلى زمن النسخ الخاص بـ restic؛ وإلى سلاسل الإخفاقات والإخفاقات المتقطعة؛ وإلى فحوص الاستعادة التي توقفت عن النجاح؛ وإلى المساحة الحرة في المستودعات المحلية ومستودعات SFTP وrclone، متوقَّعة من نمو المستودع. يتعلّم العنصر من أول 10 نسخ له، بينما يُفحص المصدر شبه الفارغ وإعادة كتابة معظم البيانات والإخفاقات منذ البداية. عند الترقية يُقرأ السجل مرة واحدة من ملخصات اللقطات التي يحفظها restic 0.17، فلا تبدأ التثبيتات الموجودة من الصفر. تُضبط الحساسية (صارمة، متوازنة، متساهلة) وأدنى درجة خطورة ترسل إشعارًا بشكل عام في الإعدادات، السلامة، ويمكن تغييرها لكل عنصر. تُغلق التحذيرات نفسها عندما يزول السبب؛ أما النتائج الحرجة عن بيانات مفقودة وقرص يمتلئ فتبقى حتى تؤكدها، ولا تُبلَّغ النتيجة المؤكَّدة مجددًا حتى يزول سببها مرة واحدة. يجعل الإجراء تعليمها كمتوقعة مستوى جديدًا هو المعتاد بعد 10 نسخ، لكنه لا يوقف أبدًا فحص المصدر شبه الفارغ، وبعد تغيير التحديد يبدأ سجل العنصر من جديد تلقائيًا. ما دام المصدر شبه فارغ أو تقلّص بشدة أو أعادت نسخةٌ حفظ معظم بياناته، يحتفظ الاستبقاء بالنسخ القديمة لذلك العنصر حتى تؤكد النتيجة أو تعلّمها كمتوقَّعة، وترتبط النتيجة بآخر نسخة سليمة. يُرسل إشعار واحد لكل حادثة، ولا تُبلَّغ مرتين الإخفاقاتُ وفحوص الاستعادة التي ترسل إشعاراتها أصلًا. ما لا تفعله: لا توجد قيمة للمساحة الحرة لمستودعات S3 وB2 وREST، وعلى مشاركة المستخدم في Unraid تكون المساحة الحرة هي مساحة المصفوفة كلها، ولا يوجد سجل أحجام للنسخ التي سبقت restic 0.17. تُفحص عناصر ZFS أيضًا، مجموعةَ بيانات تلو الأخرى: لكل مجموعة بيانات في الشجرة سجلها الخاص، وتُعدّ المجموعة التي أُفرغت أو لم تعد قابلة للقراءة فقدانًا للبيانات، ولا يُحتفظ إلا بالنسخ القديمة لتلك المجموعة. تجد كيف يُراقَب عنصر ZFS مجموعة بيانات تلو الأخرى في مجموعات بيانات ZFS، ويستطيع المساعد قراءة الحالات الشاذة المفتوحة عبر خادم MCP. يُؤرَّخ الاكتشاف المتعلق بحجم المصدر أو عدد ملفاته بأول نسخة ظهر فيها، ويعرض قارن بالنسخة السابقة المجلدات التي اختفت فيها ملفات أو أُضيفت أو تغيّرت، مع ملاحظة عندما يقع كل ذلك تقريبًا في فهرس بحث أو ذاكرة مؤقتة أو صور مصغرة يعيد التطبيق بناءها بنفسه.
- استثناءات موصى بها لكل تطبيق. للصور المعروفة (Plex وJellyfin وEmby وSonarr وRadarr وLidarr وReadarr وProwlarr وImmich وNextcloud وPhotoPrism وTautulli، من linuxserver أو hotio أو binhex أو الناشر الرسمي) يعرض مساعد الاستبعاد المجلدات التي يملؤها التطبيق من جديد بنفسه: ذاكرات التخزين المؤقت والسجلات وصور المعاينة والملصقات. يوضح كل بند ما يحتويه، ويمكن إيقاف أي منها، ولا يُستثنى شيء حتى تضغط استثناء المحدد.
- حزمة الدعم. ملف ZIP منقّح بنقرة واحدة لبلاغ عن خطأ: فحص التكامل مع المضيف، وإعداداتك بعد إزالة كل سر منها، والتشغيلات الأخيرة، وما هو مجدول تالياً، والسجل الحديث. ويحمل أيضاً كيف جرى آخر تفريغ لكل قاعدة بيانات، وعناصر ZFS مع نقاط التركيب التي تراها الحاوية، والحالات الشاذة المفتوحة، وعدد مفاتيح MCP الموجودة (دون أسمائها أبداً). تُزال كلمات المرور والرموز وإعدادات rclone وبيانات اعتماد الإشعارات وأي كلمة مرور مضمَّنة في موقع مستودع، وتذكر الحزمة ذلك في بيانها الخاص، لأن ملف الدعم يجب ألا يُظَن أبداً نسخة احتياطية للإعدادات. وهي تتطلب كلمة مرور تسجيل الدخول للسبب نفسه الذي تتطلبها له حقيبة الاستعادة. السجل الذي تحمله هو مخرجات هذه الحاوية منذ آخر بدء لها؛ أما لانهيار أعاد تشغيل الحاوية فيبقى
docker logsهو المكان الذي تبحث فيه. - حقيبة استعادة مفتاح التشفير. تنزيل بنقرة واحدة للمفتاح الرئيسي، وكلمة مرور restic المشتقة، ومواقع المستودعات وأوامرها بالضبط، فيمكنك الاستعادة دون BombVault يعمل. راجع النسخ خارج الموقع والتعافي.
- تصدير إعداداتك واستيرادها. تكتب بطاقة تصدير / استيراد الإعدادات في صفحة الإعدادات، النظام إعداداتك بالكامل (إعدادات النطاقات، الأهداف خارج الموقع، الجداول الزمنية، الاحتفاظ، الإشعارات) إلى ملف JSON محمول، فلا يعني الانتقال إلى جهاز جديد أو استنساخ إعداد إعادة إدخال كل شيء يدوياً. أنت تختار ما إذا كنت ستُضمّن بيانات اعتماد خارج الموقع والإشعارات؛ ومعها يكون الملف حساساً مثل حقيبة الاستعادة الخاصة بك. يعرض الاستيراد معاينة ويطلب تأكيداً، ولا يمس بيانات نسخك الاحتياطية أو سجلها أبداً.
- الإشعارات. Webhook (Discord / Slack / Gotify / ntfy)، Matrix، Healthchecks.io، البريد الإلكتروني (SMTP)، خادم Apprise API ذاتي الاستضافة، ونظام الإشعارات الأصلي في Unraid. السياسة لكل نسخة احتياطية: أبداً / عند الفشل / دائماً. يمكن لتشغيل مجدوَل لعناصر كثيرة إرسال ملخص واحد N من M نجحت. تحصل Healthchecks على دورة الحياة الكاملة (
/start، ثم النجاح أو/fail) كلما ضُبِط رابط. - الملخص الأسبوعي. رسالة واحدة في الأسبوع عبر القنوات نفسها: أعداد التشغيلات، وكمية بيانات النسخ الاحتياطي الجديدة التي وصلت، وهل النسخ خارج الموقع محدّث، وأبرز الإخفاقات. معطّل افتراضيًا، وله وتيرته الخاصة في الإعدادات، الإشعارات، فيُبلَّغ عن الأسبوع الهادئ أيضًا.
/metricsمن Prometheus. اختياري (معطَّل افتراضياً، رمز bearer اختياري) لـ Grafana أو Uptime Kuma. يكشف حالة النسخ الاحتياطي وأحجامها وطوابعها الزمنية، دون أسرار أو مسارات في التسميات.- HTTP API وHome Assistant وmDNS. تحصل السكربتات ولوحات التحكم على واجهة API تحت
/api/v1برموز مسمّاة، للقراءة فقط أو مسموح لها ببدء النسخ الاحتياطي. ويجد Home Assistant خادم BombVault عبر اكتشاف MQTT كجهاز له مستشعرات، ومع زر نسخ احتياطي لكل نطاق إن سمحت بذلك. ويعلن BombVault عن نفسه على الشبكة باسمbombvault.local. راجع واجهة API والتكاملات. - المساحة الحرة والأسابيع حتى الامتلاء. المستودعات المحلية ومستودعات SFTP ووجهات SMB أو WebDAV التي تُبلغ عنها تعرض مساحتها الحرة وكم أسبوعًا يبقى بمعدل النمو الحالي. أما مستودعات S3 وB2 وREST فتقول "المساحة الحرة غير معروفة"، لأن هذه الخلفيات لا تُبلغ عنها.
- الحجم حسب المجلد. في قسم النسخ الاحتياطية لحاوية أو آلة افتراضية أو مجموعة مجلدات، يعرض الحجم حسب المجلد المجلدات والملفات التي تشغل المساحة في أحدث نسخة احتياطية، وكم منها جاء جديدًا أو متغيرًا مع آخر نسخة، مستوى بعد مستوى. يقرأ BombVault ذلك من فهرس المستودع دون قراءة الملفات، ويحدّثه بعد كل نسخة احتياطية بمجرد أن تفتحه مرة.
- لماذا كانت النسخة الاحتياطية بطيئة. أثناء النسخ الاحتياطي يراقب BombVault مدى انشغال المعالج والأقراص والشبكة. عندما تستغرق النسخة وقتًا أطول بكثير من المعتاد ويكون شيء واحد بوضوح عند حدّه، يذكر السجل ذلك، مثل "كان القرص الهدف disk1 مشغولًا بنسبة 98%" أو "استخدم BombVault نسبة 100% من حد المعالج لحاويته". وإلا فلا يذكر شيئًا.
- تغيّر منذ آخر نسخة احتياطية. الحاوية التي أُعيد إنشاؤها بصورة أو منافذ أو متغيرات أو وحدات تخزين أخرى منذ آخر نسخة احتياطية تحصل على علامة بجانب اسمها. يسرد رمز (i) الخاص بها ما تغيّر، والمتغيرات بأسمائها فقط. إنها ملاحظة فقط وتختفي مع النسخة الاحتياطية التالية.
الحماية من برامج الفدية¶
- نسخة خارج الموقع غير قابلة للتغيير (append-only). علّم مستودعاً خارج الموقع بأنه append-only حتى لا تستطيع برامج الفدية أو مضيف مخترَق حذف نسخك الاحتياطية أو إعادة كتابتها. يفرض ذلك الطرفُ البعيد (خادم
restic/rest-serverفي وضع--append-only)؛ ولا يفعل BombVault سوى التحقق منه، ولا يُظهر الأخضر بناءً على مجرد ادعاء إعداد. - اختبار العبث. يثبت BombVault دورياً ضمانة append-only بمحاولة حذف فعلية على المستودع خارج الموقع (موجَّهة إلى كائن غير موجود): الرفض يعني محميّاً، والقبول يعني غير محميّ. النتيجة غير الحاسمة لا تقلب الحكم المخزَّن أبداً.
- إعداد موجَّه لخارج الموقع. يرشدك معالج من اختيار الخلفية عبر مقتطف نشر rest-server جاهز للّصق، واختبار اتصال، ومفتاح عدم القابلية للتغيير، واستراتيجية احتفاظ.
- تمارين التعافي من الكوارث (خارج الموقع). استعِد هدفاً حقيقياً من المستودع خارج الموقع إلى بيئة اختبار قابلة للتخلص، وتحقق منه ملفاً بملف وبايتاً ببايت، ثم نظّف. راجع النسخ خارج الموقع والتعافي.
- بطاقة تقييم الحماية من برامج الفدية. بطاقة في لوحة التحكم بوضعية خضراء / كهرمانية / حمراء لكل نطاق وقائمة تحقق مؤرَّخة العمر؛ يرتبط كل صف أحمر مباشرة بالإصلاح. لا تتحول إلى الأخضر إلا على حقائق مُتحقَّق منها.
- إنذار ميزانية النمو. لنسخة خارج الموقع غير قابلة للتغيير (حيث لا تُقلَّم اللقطات القديمة عمداً أبداً)، اضبط ميزانية حجم واحصل على تنبيه قبل أن تنفلت.
- الإقران بعبارة. تنضم النسخ إلى مجموعة واحدة باثنتي عشرة كلمة: أنشئ العبارة على واحدة، واكتبها على التالية. تتحدث الأعضاء على الشبكة نفسها مباشرة، بينما تمر البقية عبر مُرحِّل (مُرحِّل المشروع، أو مُرحِّل خاص، أو بلا مُرحِّل)، وكل مكالمة بينها مشفَّرة من طرف إلى طرف. تحمل المجموعة بطاقات التقييم في صفحة المثيلات وعروض Mesh خارج الموقع وما يحتاجه المُستقبِل أو مصدر السحب، ولا تحمل أبداً بيانات النسخ الاحتياطي ولا APP_KEY. راجع النسخ خارج الموقع والتعافي.
- صفحة المثيلات. فعّل المثيلات في الإعدادات لتحصل على صفحة فيها بطاقة لكل مثيل في مجموعتك، بما فيه هذا المثيل: عنوانه، وهل هو متصل، وحالة الحماية لكل نطاق مع آخر نسخة احتياطية له، بالأحمر والكهرماني والأخضر نفسها التي تعرضها لوحة التحكم المحلية. افحص الآن يطلب من عضو التحقق من مستودع نطاق واحد. لا شيء في الصفحة يستطيع بدء نسخ احتياطي أو استعادة أو حذف أي شيء على جهاز آخر.
- Mesh خارج الموقع. يستطيع عضو أن يعرض تخزينه خارج الموقع على عضو آخر عبر المجموعة. يرى المسؤول الآخر العرض في صفحة المثيلات فيقبله أو يرفضه؛ والقبول ينشئ مجموعة بيانات اعتماد عادية وهدفًا خارج الموقع. لا تنتقل بهذه الطريقة إلا تفاصيل الاتصال، ولا تنتقل بيانات النسخ الاحتياطي أبدًا.
- لوحة تحكم المُستقبِل (الجانب المُستقبِل). على الجهاز الذي يستقبل نسخاً غير قابلة للتغيير خارج الموقع من BombVault آخر، فعّل مفتاح المستقبِل (الإعدادات) للكشف عن تبويب المستقبِل. سجّل مستودعاً مستقبَلاً للقراءة فقط (مفتوحاً بكلمة مرور restic الخاصة بالنسخة المُرسِلة، التي تصل عبر مجموعة الإقران) لرؤية جرد لقطاته مجمَّعاً بحسب المصدر، ومتى وصل كل مصدر آخر مرة، وتشغيل
restic checkمستقل على الجهاز المُستقبِل. ينبّهك عندما يتوقف مصدر عن الإرسال ضمن نافذة تحددها (مفتاح رجل ميت) أو عندما يفشل فحص سلامة. للقراءة فقط بصرامة، فلا يكتب أبداً إلى المستودع المستقبَل، ومعطَّل افتراضياً. راجع النسخ خارج الموقع والتعافي. - السحب من نسخة أخرى (الجانب الجالب). الصورة المعكوسة للنسخ المتماثل خارج الموقع: بدلاً من أن يدفع هذا الجهاز لقطاته إلى الخارج، يجلب لقطات جهاز آخر إليه. فعّل مفتاح سحب (الإعدادات) للكشف عن تبويب سحب في صفحة المثيلات، واختر النسخة الأخرى من مجموعة الإقران وموقع مستودعها، ثم حدّد نوع النسخ الاحتياطي الذي يحويه وعدد مرات الجلب. تصل كلمة مرور restic الخاصة بها عبر المجموعة، ولا يصل APP_KEY الخاص بها أبداً. لا يحتاج الطرف البعيد إلى أي إعداد إضافي، ولا يلزم أن يكون قيد التشغيل. لا يُقرأ المستودع المصدر إلا قراءة: يُفتَح للتحقق من كلمة المرور، ويُسرَد، ويُسمّى مصدراً للنسخ، ولا يُهيَّأ أبداً ولا يُفَك قفله ولا يُقلَّم ولا يُكتَب إليه. يحتفظ كل طرف ببيانات اعتماده الخاصة، ويُرفَض المصدر
rclone:لأن rclone سيصل إليه عبر remotes هذه النسخة. راجع النسخ خارج الموقع والتعافي.
عمليات التصدير النصية¶
- تصدير نصي للحاوية. يكتب زر تصدير (tar عادي) لكل حاوية نسخة قابلة للتصفح وخالية من الأدوات بجوار المستودع:
<name>.tar.gzلمجلدات النسخ الاحتياطي إضافة إلى قالب Unraid<name>.xml. يبقى restic هو المحرك؛ وهذه نسخة راحة إضافية. - تصدير نصي للـ VM. للـ VMs نفس تصدير (tar عادي):
<name>.tar.gzلصورة (صور) القرص إضافة إلى<name>.xml، قابل للاستعادة بـvirsh defineمع القرص، دون حاجة إلى BombVault أو restic. - تشفير عمليات التصدير النصية (age). تقع عمليات التصدير خارج restic، فهي نص عادي افتراضياً. فعّل تشفير age ضمن الإعدادات وأضف مستلماً أو أكثر (مفتاح age عام أو مفتاح SSH عام). عندئذٍ يُختَم كل تصدير (ملفات
.tar.gzللحاوية والـ VM، وملفات.xmlالمرافقة لها، وملف الفلاش المضغوط) لهؤلاء المستلمين، وتفك تشفيره لاحقاً خارج الجهاز بالمفتاح الخاص المطابق. كقاعدة أمان، مع تفعيل التشفير وعدم ضبط مستلم صالح، يفشل التصدير برسالة خطأ واضحة بدلاً من كتابة نص عادي أبداً. - حقيبة الاستعادة تُختَم أيضاً. مع تفعيل الإعداد نفسه، تُنزَّل الحقيبة باسم
bombvault-recovery-kit.md.age. وهي بصيغة ASCII-armored لا ثنائية، فتبقى نصاً عادياً مقروءاً: ما زال بإمكانك لصقها في مدير كلمات مرور أو طباعتها، وهذا ما وُجدت الحقيبة من أجله. وتنطبق قاعدة الأمان نفسها، فمع تفعيل التشفير وعدم وجود مستلم صالح للاستخدام يُرفَض التنزيل بدلاً من الرجوع إلى تسليم المفتاح الرئيسي نصاً واضحاً. أمر واحد يجب أن تضبطه جيداً عند تفعيل هذا: تحتاج إلى مفتاح age الخاص بك لفتح الحقيبة، فاحفظ ذلك المفتاح في مكان لا يعتمد على الحقيبة نفسها.
مساعدو الذكاء الاصطناعي (MCP)¶
يأتي BombVault بخادم MCP مدمج يستطيع من خلاله مساعد مثل Claude Code أو Claude Desktop قراءة حالة النسخ الاحتياطية والتغطية وسجل التشغيلات ونقاط الاستعادة والنشاط الجاري. ومع مفتاح يسمح بذلك يستطيع المساعد أيضًا بدء نسخ احتياطي لعنصر واحد أو نطاق واحد أو لكل شيء، وإلغاء النسخ التي بدأها بنفسه. تبقى الاستعادة والحذف وprune والإعدادات في واجهة الويب. يحصل كل عميل على مفتاحه الخاص في الإعدادات، التكاملات، خادم MCP؛ ويظهر المفتاح مرة واحدة، ولا يُحفظ إلا كبصمة، ويمكن إعادة تسميته أو استبداله أو إبطاله في أي وقت. البدء محدود في الساعة ولكل عنصر، ويمنع حارس الاحتفاظ نسخ المساعد من دفع نقاط الاستعادة الخاصة بك خارج سياسة "احتفظ بآخر N". وكل تشغيل يبدؤه مساعد يُعلَّم بعبارة "عبر MCP" مع اسم المفتاح. انظر خادم MCP. نسخ قواعد البيانات ومجموعات بيانات ZFS من بين العناصر ونقاط الاستعادة التي يقرؤها، ويستطيع عرض الحالات الشاذة التي لاحظها BombVault.
التطبيقات والمرافقات¶
- تطبيق Android. كل خادم في مجموعتك على هاتفك، مع سجل النشاط لها جميعًا في شاشة واحدة. يقترن بمجموعتك عبر رمز QR ويفتح كل خادم وقد سُجّل الدخول مسبقًا. راجع تطبيق Android.
- خادم الاستقبال. يستطيع الجهاز الذي يستقبل النسخ خارج الموقع تشغيل rest-server بوضع append-only بنقرة واحدة وعرضه على بقية النسخ في مجموعتك، لكل منها تسجيل دخول خاص به. راجع خادم الاستقبال.
- الإعدادات، التطبيقات. صفحة تبدأ بتطبيق Android، مع ملف APK للإصدار الذي يشغّله الخادم ورمز QR له، تليها بطاقة لكل تطبيق مرافق. تعرض بطاقة ParleyPort قالب Unraid الخاص به، وتنسخ أمر Docker الذي يشغّله، وتقود إلى مستودعه وإلى إعدادات المُرحِّل تحت الاقتران. وتعرض بطاقة BombVault Widget قالبه ومستودعه، وتثبّت الإضافة أو تزيلها عبر اتصال SSH بالمضيف.
- BombVault Widget. بلاطة على لوحة Dashboard في Unraid فيها سجل نشاط BombVault والتشغيل المجدول التالي. ومن دون اتصال SSH بالمضيف تعطيك البطاقة عنوان
.plgلتثبيته من Plugins, Install Plugin، ويمكن إزالة الإضافة من هناك مثل أي إضافة أخرى. - سجل نشاط قابل للتضمين. أنشئ رمزًا للقراءة فقط في الإعدادات، التكاملات فتحصل على عنوان لأي لوحة تحكم تعرض iframe، مثل Homepage أو Organizr أو Heimdall: صفحة صغيرة فيها سجل النشاط الحي فقط. لا يمنح الرمز إلا ذلك السجل، وتعطيل يبطله فورًا. الصفحة المضمَّنة بالإنجليزية فقط.
أخرى¶
- أوقف نسخًا احتياطيًا جاريًا. كل بطاقة تستطيع بدء نسخ احتياطي فيها زر إلغاء النسخ الاحتياطي بجانب شريط التقدم ما دام التشغيل نشطًا. يُسجَّل التشغيل ملغى لا فاشلًا. والإيقاف آمن، لأن restic يكتب لقطته في النهاية، فلا يترك التشغيل المقطوع إلا بيانات غير مُشار إليها ولا يترك لقطة.
- انسخ الكثير احتياطياً دفعة واحدة. حدّد حاويات متعددة واضغط نسخ المحدَّد احتياطياً. تعمل الدفعة على جانب الخادم، فتستمر حتى لو أغلقت التبويبة أو فقدت الاتصال. لا ينسخ BombVault حاويته الخاصة احتياطياً أبداً (ومن ثم لا يوقفها).
- متصفح لقطات بقائمة نقاط استعادة، وحذف لكل لقطة، وشجرة مجلدات قابلة للطي للاستعادة على مستوى الملفات.
- صيانة المستودع لكل نطاق: تحقّق (
restic check)، وإلغاء القفل (مسح قفل عالق)، وتقليم (يطبّق سياسة الاحتفاظ عند الطلب حين تكون مضبوطة، وإلا استعادة مساحة عادية). - التقدم أثناء التحقق وفحوص الاستعادة والتنظيف. أثناء تشغيل أيّ منها يعرض سجل النشاط وبطاقة السلامة إلى أين وصل restic في العدّ، مثل 12 من 47 حزمة، مع الوقت المتبقي في تلك الخطوة حين يتوفر ما يكفي لتقديره. يعدّ restic هنا الحزم واللقطات وملفات الفهرس لا البايتات، ولذلك يعرض الشريط ذلك؛ وقبل أول عدّ يتحرك من دون رقم.
- نسخ قواعد البيانات تلقائياً. حاويات PostgreSQL وMySQL وMariaDB المعروفة (الصور الرسمية، وPostGIS، وTimescaleDB، وpgvector، وpgautoupgrade، وصور قاعدة بيانات Immich، وlinuxserver، وyobasystems، وjc21 MariaDB، وmysql-server من Oracle) يُؤخذ منها ملف تفريغ قبل كل نسخة احتياطية، من الخادم وهو يعمل. الحاويات التي تبدو فقط كقاعدة بيانات تحصل على الخيار نفسه في بطاقتها، مُطفأً حتى تختاره بنفسك. يتدفق ملف التفريغ مباشرةً إلى المستودع ويصبح فيه نقطة استعادة قائمة بذاتها إلى جانب نسخة الملفات، ولا يُكتب إلى قرص أبداً. تأتي بيانات الدخول من متغيرات الحاوية نفسها، بما فيها أسرار
*_FILE، ولا تغادرها. تُظهر كل بطاقة ما إذا كان مجلد بيانات قاعدة البيانات يُحفظ والحاوية متوقفة، أم يُنسخ أثناء التشغيل، أم لا يُحفظ إطلاقاً. فشل التفريغ لا يُفشل النسخة الاحتياطية: يظهر كتشغيل فاشل مع سببه وتلميح لإصلاحه، ويُرسل إشعاراً. ولا يُعاد تحميل أي تفريغ من تلقاء نفسه. نزّل واحداً (خاماً أو مضغوطاً)، أو احفظه في مجلد، أو استورده بنقرة واحدة إلى قاعدة بيانات بدأت للتو، أو اسحبه بأداة restic من سطر الأوامر. يمكنك إطفاؤه لكل حاوية على حدة، باللصيقةbombvault.dbdump=false، أو لكل الحاويات من الإعدادات. يراقب اكتشاف الحالات الشاذة أيضاً حجم كل نسخة، ويستطيع المساعد عرض نسخ قواعد بيانات الحاوية عبر خادم MCP. - خطافات ما قبل/بعد النسخ الاحتياطي لكل حاوية. تُنفَّذ أوامر الصدفة داخل الحاوية (مثلاً كتابة ذاكرة مؤقتة إلى القرص)؛ ويُلغي خطاف ما قبل الفاشل النسخةَ الاحتياطية. أما قواعد البيانات المعروفة فيُؤخذ منها التفريغ تلقائياً ولا تحتاج إلى خطاف.
- إيقاف حاويات أخرى أثناء النسخ الاحتياطي، مع إعادة تشغيل مقيَّدة بالحالة الصحية. سمِّ حاويات معتمِدة (مثلاً قاعدة بيانات) لإيقافها أثناء نسخ هذه احتياطياً. بعد ذلك يعيدها BombVault وفق ترتيب
depends_onفي Compose وينتظر افتراضياً أن يبلّغ كلٌّ منها عن حالته الصحية (أو أنه يعمل، إن لم يكن له فحص صحة) قبل تشغيل الحاويات التي تعتمد عليه، فتكون تبعية مثل Pi-hole أو قاعدة بيانات أو بوابة VPN فعلاً قيد التشغيل قبل الخدمات التي تحتاجها، بدلاً من عودتها بـ connection refused. الانتظار محدود بمهلة لكل حاوية (120 ثانية افتراضياً) فلا يمكن أبداً لحاوية بطيئة أو لا تصح أن تعلّق التشغيل؛ ويعيش كل من الانتظار والمهلة في الإعدادات، Containers (أوقف الانتظار لإعادة التشغيل السابقة دفعة واحدة). يغلّف نفس إعادة التشغيل المرتَّبة والمقيَّدة بالحالة الصحية أيضاً تحديثَ الصورة بعد النسخ الاحتياطي، ففي يوم يصل فيه تحديث تُبقى التبعيات موقوفة طوال إعادة الإنشاء ولا تُعاد إلا مقيَّدة بالحالة الصحية بمجرد انتهائه. - أنماط استبعاد لكل حاوية. اسرد الأدلة الفرعية التي تتخطّاها داخل وحدة منسوخة احتياطياً، واحدة في كل سطر. اكتب المسارات كما تراها داخل الحاوية؛ تُظهر معاينة حية ما يُترجَم إليه كل سطر وتحذّر عندما لا يستبعد سطرٌ شيئاً.
- التحديث بعد نسخة احتياطية ناجحة (متقدم، معطَّل افتراضياً). فعّل هذا على حاوية فيسحب BombVault أحدث صورة ويعيد إنشاءها، لكن فقط حين توجد فعلاً صورة أحدث، فتوجد دائماً نقطة استعادة حديثة أولاً. إضافات اختيارية: إشعار لكل حاوية مُحدَّثة وتنظيف الصور (لا تُحذَف أبداً صورة أساس تشترك فيها حاويات أخرى). بعد التحديث يطلب BombVault أيضاً من Unraid إعادة فحص حالة تحديث تلك الحاوية بالذات، فتُمسَح لافتة update available القديمة في تبويب Docker بنفسها بدلاً من بقائها (تمر تحديثات Unraid مباشرة عبر Docker API، فحالته المخزَّنة، وفي بعض الإصدارات ملخص مخزَّن، تُبقي اللافتة ظاهرة لولا ذلك). إنها بذل أفضل جهد، ولا تؤثر على النسخة الاحتياطية أبداً، ومفعّلة افتراضياً ولها مفتاح في الإعدادات.
- الاستعادة إلى مجلد بديل للاستنساخ أو الفحص.
- مقارنة اللقطات وعلاماتها. قارِن لقطتين لرؤية ما تغيّر، وضع علامات على اللقطات لتصفيتها.
- ما الجديد بعد التحديث. تظهر ملاحظات الإصدار مرة واحدة لكل نسخة جديدة، مُقدَّمة من ملاحظات مضمَّنة في الملف الثنائي، فيعمل الحوار دون اتصال.
- HTTPS جاهز افتراضياً (موقّع ذاتياً، أو أحضِر شهادتك الخاصة خلف عاكس بروكسي).
- فحص صحة Docker. تبلّغ الحاوية عن حالتها الصحية / غير الصحية من
/api/healthالخاص بها، فيمكن لأداة إصلاح ذاتي إعادة تشغيلها إذا علِق المحرك يوماً. - واجهة داكنة/فاتحة بـ 42 لغة مع منتقي أعلام.
- الإعدادات تحفظ نفسها. اقلب مفتاحًا أو غادر حقلًا فيُكتب التغيير فورًا، مع وميض قصير على عنصر التحكم واهتزاز إن رفضه الخادم. ثلاثة مواضع تحتفظ بزر حفظ لأن حفظها نصف مكتملة غير آمن: مربع إعدادات rclone، ومحرر مجموعة بيانات الاعتماد، وكلمة مرور تسجيل الدخول.
- رسائل منبثقة هادئة. في الإعدادات، عام يمكنك كتم رسائل التأكيد الروتينية المنبثقة، فلا يقاطعك إلا الفشل. هذا الإعداد لكل متصفح ولا يمس الإشعارات.
- اجعل المظهر كما تريد. يضبط الإعدادات، المظهر الألوان (لون إبراز واحد، أو وضع قوس قزح بلوحة من ثمانية ألوان)، والزوايا (مستديرة أو ناعمة أو مربعة)، والحركة (إيقاف أو خفيفة أو جامحة أو عاصفة)، وتُحفظ لكل متصفح. وعندما يطلب نظامك حركة أقل، يكون له القول الفصل دائمًا.