لماذا تنسخ خادمك VPS احتياطيًا باستخدام BorgBackup
يرفع Borg إزالة التكرار إلى مستوى لافت: فهو يُقسّم الملفات إلى أجزاء (chunks) ذات حدود متغيّرة، ما يكشف البيانات المتطابقة حتى وإن كانت مُزاحة داخل الملف. والنتيجة أن أسابيع من الأرشيفات اليومية تتّسع في جزء يسير من مساحة نسخة كاملة واحدة. يُضاف إلى ذلك ضغط قابل للتهيئة (lz4 وzstd وzlib)، وتشفير موثَّق (فالمستودع يقاوم التزييف، لا القراءة فحسب)، وصيغة مستودع متينة. واستضافة Borg ذاتيًا على الخادم، مع دفع الأرشيفات إلى مستودع بعيد (ويُفضَّل أن يكون خدمة متوافقة مع BorgBackup)، تمنحك نسخًا احتياطية اقتصادية تخضع بالكامل لتحكّمك التشفيري، دون تسليم مفاتيحك إلى طرف ثالث.
نقاط قوة BorgBackup
- إزالة التكرار عبر أجزاء (chunks) ذات حدود متغيّرة، فعّالة بشكل هائل مع البيانات القليلة التغيّر.
- تشفير موثَّق: سرّية وضمان للسلامة ضدّ أي تلاعب بالمستودع.
- ضغط حسب اختيارك (zstd وlz4 وzlib) للموازنة بين الحجم والسرعة.
- أرشيفات مُسمّاة ومختومة بالوقت، قابلة للتركيب عبر FUSE لتصفّح نسخة احتياطية كأنها مجلد.
- سياسة احتفاظ دقيقة عبر
borg prune(يومية، أسبوعية، شهرية، سنوية). - نقل فعّال إلى مستودع بعيد عبر SSH، بإرسال الأجزاء (chunks) الجديدة فقط.
المتطلبات المسبقة لهذا النشر
يظلّ Borg خفيفًا على المعالج، لكن إزالة التكرار لديه تحتفظ بفهرس في الذاكرة: خصّص خادم VPS بذاكرة 1 إلى 2 غيغابايت من RAM، مع تزايد الاستهلاك بتزايد عدد الأجزاء (chunks) في المستودع. ثبّت حزمة borgbackup (وحزمة borgmatic لتنظيم العمل بشكل أبسط). أما في الوِجهة، فتحتاج إمّا إلى خدمة تخزين متوافقة مع Borg، وإمّا إلى خادم ثانٍ يمكن الوصول إليه عبر SSH ومثبَّت عليه Borg أيضًا. ويكتمل ما يلزم بوجود زوج مفاتيح SSH للنقل غير التفاعلي، وموضع خارج الخادم لحفظ عبارة مرور (passphrase) المستودع. ويُبسّط borgmatic، المُدار عبر ملف YAML، الأتمتة تبسيطًا واضحًا.
تهيئة نسخ Borg الاحتياطية باستخدام borgmatic
تثبيت Borg وborgmatic
على الخادم، ثبّت الحزمتين (apt install borgbackup borgmatic). تحقّق من الإصدار عبر borg --version. يضيف borgmatic طبقة تهيئة تعريفية (declarative) فوق أوامر Borg الخام.
تهيئة المستودع المشفّر البعيد
بوجود مفتاح SSH منشور مسبقًا، هيّئ المستودع: borg init --encryption=repokey-blake2 ssh://user@backup-host/./borg-repo. يخزّن وضع repokey المفتاح المشفّر داخل المستودع؛ ومن الضروري حفظ عبارة المرور (passphrase) في مكان آمن وخارج الخادم.
كتابة ملف تهيئة borgmatic
في /etc/borgmatic/config.yaml، عرّف source_directories (على سبيل المثال /etc و/var/www و/opt)، وعنصر repositories البعيد، وعبارة المرور عبر متغيّر بيئة، والضغط zstd. سيتولّى borgmatic تسلسل create وprune وcheck في استدعاء واحد.
إضافة خطّافات (hooks) قاعدة البيانات
يستطيع borgmatic تفريغ (dump) قواعد بياناتك قبل النسخ الاحتياطي. عرّف خطّاف postgresql_databases أو mariadb_databases: يُنشأ التفريغ ويُضمَّن في الأرشيف ثم يُنظَّف تلقائيًا، ما يضمن نسخة متّسقة من قاعدة البيانات.
تحديد الاحتفاظ وتشغيل تشغيلة
اضبط keep_daily: 7 وkeep_weekly: 4 وkeep_monthly: 6 في قسم الاحتفاظ، ثم نفّذ borgmatic --verbosity 1. لا ينقل Borg سوى الأجزاء (chunks) الجديدة، ما يجعل التشغيلات اللاحقة سريعة جدًا.
الجدولة والتحقّق من عمليات الاستعادة
فعّل مؤقّت systemd الذي يوفّره borgmatic (systemctl enable --now borgmatic.timer) لتشغيل يومي. اختبر استعادةً عبر borgmatic extract --archive latest إلى مجلد اختبار، ودع borgmatic check يتحقّق من السلامة بانتظام.
BorgBackup أم Restic: أيّهما تختار؟
| المعيار | BorgBackup | Restic |
|---|---|---|
| نموذج التخزين | مستودع أحادي الجهاز، وصول عبر SSH | مصادر متعددة إلى مستودع كائني واحد |
| واجهات التخزين الأصلية | محلي وSSH (يتطلّب خادم Borg) | S3, B2, Azure, SFTP, rest-server |
| إزالة التكرار | أجزاء متغيّرة، مكثّفة جدًا | أجزاء متغيّرة، فعّالة |
| الضغط | قابل للتهيئة (zstd, lz4, zlib) | محدود (لا ضغط تاريخيًا) |
| التشفير | موثَّق (مضادّ للتزييف) | AES-256 من جهة العميل |
| الوصول المتزامن | عميل واحد فقط في المرة على المستودع | عدة عملاء بالتوازي |
| التخزين الكائني (S3) | غير مباشر (عبر طبقة طرف ثالث) | أصلي ومباشر |
| أداة التنظيم (orchestration) | borgmatic (YAML) | سكربتات أو أغلفة (wrappers) من طرف ثالث |
نقطة ضعف Borg أنه لا يسمح إلا بعميل واحد في المرة على المستودع، وقد يترك قُفلًا متبقّيًا إذا انقطعت تشغيلة: راقِب وأتمتة رفع الأقفال العالقة عبر borg break-lock في سكربتك، لكن بعد التأكّد من أنه لا توجد عملية أخرى تكتب. وللاحتراس من اختراق الخادم، أنشئ في جانب خادم النسخ الاحتياطي مفتاح SSH مقيّدًا بـ command="borg serve --append-only": عندها لن يتمكّن المهاجم إلا من إضافة أرشيفات، ولن يستطيع أبدًا تدمير السجلّ القائم.