لتجنّب الفجوات الطويلة في نسخ Borg الاحتياطية، شغّل حذف النسخ القديمة بعد نجاح النسخ الاحتياطي، ولكن جدولة ضغط المستودع على فترات أقل وخارج نافذة النسخ الاحتياطي الرئيسية. يفصل Borg 1.4 بين حذف الأرشيفات واستعادة المساحة فعليًا، لذلك لا توجد حاجة إلى تشغيل borg compact بعد كل borg prune.
يستهدف هذا الدليل نموذج الأوامر المستقر الحالي لـ Borg 1.4.x. يغيّر Borg 2 دلالات المستودعات والأرشيفات في عدة جوانب، لذا تحقّق من الإصدار المثبّت قبل نسخ الأتمتة من إصدار رئيسي آخر.
تحقّق من إصدار Borg والمستودع
borg --version
borg info /mnt/backup/borg-repo
borg list /mnt/backup/borg-repo
تشير الأسئلة الشائعة حول Borg إلى أن Borg يستخدم قفلًا على مستوى المستودع، ولا يمكن إلا لعملية واحدة الحصول على صلاحية الكتابة في الوقت نفسه. وإذا تداخلت عملية ضغط طويلة مع موعد النسخ الاحتياطي المجدول التالي، فسوف ينتظر النسخ الاحتياطي تحرير القفل أو يفشل عند انتهاء مهلة القفل.
حدّد سياسة الاحتفاظ أولًا باستخدام التشغيل التجريبي
يؤدي borg prune إلى حذف سجل الأرشيفات. وتوصي وثائق Borg بشدة بإجراء اختبار باستخدام --dry-run و--list.
borg prune --dry-run --list --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --glob-archives '{hostname}-*' /mnt/backup/borg-repo
إذا كان مستودع واحد يحتوي على نسخ احتياطية من عدة أجهزة أو مجموعات بيانات، فإن عامل تصفية الأرشيفات ضروري. ومن دون عامل تصفية مقيّد، يعتبر Borg 1.4 جميع الأرشيفات في المستودع مرشحةً لتطبيق قواعد الاحتفاظ نفسها.
شغّل الحذف فقط بعد نجاح النسخ الاحتياطي
#!/bin/sh
set -eu
REPO=/mnt/backup/borg-repo
ARCHIVE='{hostname}-{now:%Y-%m-%d_%H-%M}'
borg create --stats "$REPO::$ARCHIVE" /srv/data
borg prune --list --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --glob-archives '{hostname}-*' "$REPO"
لا تُجرِ التنظيف لمجرد أن المُجدوِل أطلقه؛ أجرِه لأن نسخة احتياطية جديدة اكتملت بنجاح ولأن سياسة الاحتفاظ قد جرى التحقق منها مسبقًا.
افهم لماذا لا يحرر التنظيف المساحة فورًا
منذ Borg 1.2، فُصل الضغط عن أوامر الكتابة العادية إلى المستودع. وتوضح ملاحظات الضغط المنفصلة في Borg أن حذف الأرشيفات أو تنظيفها لا يستعيد فورًا كل مساحة القرص في المستودع.
borg create
|
تثبيت أرشيف جديد
|
borg prune
|
إزالة الأرشيفات القديمة من مجموعة الاحتفاظ
|
borg compact
|
استعادة المساحة غير المستخدمة في المقاطع
يفيد ذلك في الجدولة، لأن النسخ الاحتياطية اليومية لا تحتاج إلى تحمّل التكلفة الكاملة لإعادة كتابة مقاطع المستودع المستخدمة جزئيًا.
جدولة الضغط بمعدل أقل من التنظيف
- النسخ الاحتياطي: كل ليلة؛
- التنظيف: بعد كل نسخة احتياطية ناجحة أو عدة مرات أسبوعيًا؛
- الضغط: مرة واحدة أسبوعيًا خلال فترة هدوء؛
- فحص المستودع بالكامل: وفق جدول منفصل وأقل تكرارًا.
# نسخة احتياطية يومية + تنظيف
0 1 * * * /usr/local/sbin/borg-backup
# الضغط أسبوعيًا
0 4 * * 0 /usr/local/sbin/borg-compact
إذا كانت النسخ الاحتياطية تستغرق عدة ساعات غالبًا، فأجّل الضغط أكثر أو استخدم مؤقتًا ذا تبعيات محددة صراحةً.
استخدم حد الضغط الافتراضي قبل فرض إعادة الكتابة القصوى
تستخدم وثائق الضغط الحالية حدًا قدره 10% افتراضيًا.
borg compact --progress /mnt/backup/borg-repo
يُعد هذا الإعداد الافتراضي نقطة بداية جيدة عندما تكون أولويتك تقصير نافذة الصيانة. تجنّب الاستخدام التلقائي لـ --threshold 0؛ إذ يعيد الكتابة كلما أمكن توفير أي مساحة، وقد يكون أبطأ بكثير في المستودعات الكبيرة.
امنع تعارض الصيانة مع النسخة الاحتياطية التالية
إذا كان من المحتمل أن تنتظر مهمةٌ ما عمليةَ Borg أخرى بشكل مشروع، فحدّد مهلة انتظار محدودة للقفل:
borg --lock-wait 1800 create /mnt/backup/borg-repo::'{hostname}-{now}' /srv/data
لا تستخدم فترة انتظار طويلة جدًا للقفل كبديل عن الجدولة الجيدة. راقب وقت بدء النسخة الاحتياطية وانتهائها فعليًا.
إذا شارك عدة عملاء مستودعًا واحدًا، فوزّع جداولهم الزمنية. تشير الأسئلة الشائعة لـ Borg إلى أن استخدام مستودعات متعددة قد يقلل التنافس على القفل عندما لا تكون إزالة البيانات المكررة بين العملاء مهمة.
استخدم الإحصاءات السريعة عندما تؤدي التقارير إلى إبطاء prune
أضاف Borg 1.4.5 --quick-stats لإنشاء الأرشيفات وحذفها وتنفيذ prune، مع تجنب إحصاءات المستودع الشاملة الأبطأ عندما لا تكون مطلوبة.
borg prune --quick-stats --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --glob-archives '{hostname}-*' /mnt/backup/borg-repo
أبقِ مساحة حرة متاحة قبل الحاجة إلى compact
لا تنتظر حتى يصل نظام ملفات المستودع إلى صفر من المساحة الحرة. إذ لا يستطيع Borg تنفيذ أعمال الكتابة العادية في المستودع بشكل موثوق عندما يمتلئ نظام الملفات بالكامل.
df -h /mnt/backup
borg info /mnt/backup/borg-repo
بالنسبة إلى خطة نسخ احتياطي أوسع لأجهزة NAS، يُعد دليل النسخ الاحتياطي 3-2-1 الخاص بـ ZimaOS تذكيرًا مفيدًا بأن الاحتفاظ بالمستودع ليس سوى طبقة واحدة من تصميم النسخ الاحتياطي.
تحقق من الجدول قبل الوثوق به
- هل أنشأت كل نسخة احتياطية أرشيفًا جديدًا؟
- هل شُغّلت prune فقط بعد نجاح النسخ الاحتياطية؟
- هل تطابقت مجموعة الاحتفاظ مع خطة التشغيل التجريبي؟
- هل اكتملت عملية compact الأسبوعية قبل النسخة الاحتياطية التالية؟
- هل زادت المساحة الحرة بعد compact؟
- هل قضت أي مهمة وقتًا غير متوقع في انتظار قفل Borg؟
إذا تداخلت عملية compact مرارًا مع النسخة الاحتياطية التالية، فقلّل وتيرة الضغط، وأبقِ الحد الافتراضي، وانقل compact إلى فترة أكثر هدوءًا، أو اقسم أحمال العمل غير المرتبطة إلى مستودعات منفصلة.
نمط صيانة Borg بفجوة زمنية منخفضة
يوميًا
01:00 borg create
|
+-- نجاح --> borg prune
|
+-- فشل --> الاحتفاظ بالأرشيفات القديمة وإرسال تنبيه
أسبوعيًا
04:00 borg compact
دوري
borg check
استعادة الملفات المحددة واختبارها
القاعدة الأساسية بسيطة: تحمي عملية prune سياسة الاحتفاظ؛ وتستعيد عملية compact مساحة التخزين؛ ولا يلزم تشغيلهما بالتواتر نفسه.
الدعم والنصائح
المزيد للقراءة

يعمل Home Assistant عبر شبكة Wi‑Fi لكنه يفشل عبر Ethernet أو VPN
اختبر كل مسار شبكي على حدة، وتحقق من حالة الواجهة والتوجيه، وميّز بين الاتصال المباشر بعنوان IP والاكتشاف، ثم أصلح الطبقة المتعطلة فقط.

كيفية إيقاف تشغيل Home Assistant نهائيًا دون ترك بيانات غير محمية
أثبت الاستبدال أو الأرشفة، وألغِ كل مسار ثقة، وطهّر كل جهاز يحمل بيانات، واحتفظ فقط بنسخ الاسترداد المحمية والموثقة.

هل ينبغي استخدام التحديثات التلقائية لـ Home Assistant على خادم منزلي؟
اختر التحديثات اليدوية أو التي تقتصر على الإشعارات أو التحديثات التلقائية المرحلية بناءً على تأثيرها على المنزل، ومخاطر التوافق، ومدة المراقبة، والاستعداد للاسترداد.

