النسخ الاحتياطي والاستعادة
تطبيقك يعمل في الإنتاج. أنشئ نسخة احتياطية منه. تنسخ rdc مستودعاً كاملاً، التطبيق وقاعدة بياناته وملفاته وإعداداته، إلى جهاز ثانٍ، وتعيده عندما يختفي الجهاز الأول.
هذا الدرس لا يكتفي بوصف ذلك. إنه يُنفّذه فعلياً، على جهازين حقيقيين، ويقرأ البيانات مرة أخرى في النهاية.
ثلاث خطوات
- انسخ المستودع إلى جهاز تتحكم فيه.
- استعد تلك النسخة في مستودع خاص بها.
- أثبت ذلك بقراءة بياناتك مرة أخرى.
الخطوة 1: البيانات التي يجب أن تنجو
rdc term connect my-app --command 'cat orders.txt' اقرأ البيانات أولاً من الـ repository الحيّ. سطر واحد في ملف واحد، ليكون الإثبات في النهاية شيئًا تراه بعينك، لا شيئًا عليك تصديقه فحسب.
كل ما يلي يُقاس مقابل هذا السطر الواحد. راقبه مجدداً في الخطوة 7.
الخطوة 2: نسخ المستودع إلى جهاز ثانٍ
rdc repo push my-app --to machine-12 انسخ الـ repository إلى آلة ثانية. ينقل أول دفع الصورة المشفّرة كاملةً، نحو جيجابايتين في ثلاثين إلى أربعين ثانية على هذا الأسطول، وكل دفع بعده يرسل فقط الكتل التي تغيّرت. ما يصل إلى الهدف هو عنصر نسخة احتياطية لا repository حيّ ثانٍ.
يعرض درس نقل الفروق النصف التزايدي من هذا مباشرة.
القطعة الأثرية ليست مستودعاً يعمل، وهذا هو السبب الكامل لوجود الخطوة 5.
الخطوة 3: جهاز النسخ الاحتياطي يملكها
rdc repo list --machine machine-12 اسأل آلة النسخ الاحتياطي عمّا تحتفظ به. تظهر النسخة تحت اسمها الخاص، مُستخلَصًا من الـ config الخاص بك. الصف الثاني الحامل لمعرّف خام هو قاعدة الفرق المحتفَظ بها، وهي ما يجعل الدفع التالي إلى هذه الآلة تزايديًا.
الخطوة 4: الكارثة
rdc repo down my-app --unmount أوقف الآلة الأساسية عن الشبكة: أوقف خدماتها وافصل الـ volume المشفّر. من الآن فصاعدًا، كل شيء يعمل مقابل النسخة على الآلة الأخرى.
الخطوة 5: تحويل القطعة الأثرية إلى مستودع
rdc backup restore my-app@machine-12 --as my-app-restored --machine machine-12 --yes الاستعادة هي الأمر الذي يحوّل نسخة مدفوعة إلى repository. تُسمّى بـ --as، وتُحدَّد آلتها بـ --machine، وتُؤكَّد بـ --yes. الاستعادة تحت اسم جديد لا تكتب فوق أي شيء، وهذا ما يجعلها آمنة للتجربة على آلة حيّة.
افعل هذا مرة واحدة لكل جهاز قبل أن تحتاجه. الجهاز الذي لم يُكمل الدورة الكاملة قط ليس محمياً باحتياطي، مهما بدت عمليات الدفع لديه سليمة، والاستعادة تحت اسم جديد آمنة على جهاز يخدم حركة مرور حية.
الخطوة 6: تحميله
rdc repo up my-app-restored --no-start ثبّت الـ repository المُستعاد. تبقى الحاويات متوقفة عن قصد: ما نثبته هنا هو البيانات، لا التطبيق.
الخطوة 7: البيانات نجت
rdc term connect my-app-restored --command 'cat orders.txt' نفس أمر الخطوة الأولى، مُنفَّذًا مقابل repository لم يكن موجودًا قبل أمرين. السطر يعود بايتًا بايت، من آلة لم تكن قط الأصلية.
ضع الاثنين جنباً إلى جنب. الخطوة 1، من المستودع الأصلي على الجهاز الأساسي:
order-1042 paid 2026-08-16
الخطوة 7، من مستودع لم يكن موجوداً قبل أمرين، على عتاد مختلف:
order-1042 paid 2026-08-16
هذا هو الدرس. ليس تقريراً يفيد بأن نسخة احتياطية نجحت، بل السطر نفسه، مقروءاً من جهاز آخر.
الخطوة 8: نسخ احتياطية يمكنك التراجع عبرها
rdc backup snapshot my-app النسخ إلى جهاز آخر يمنحك الـ repository كما هو الآن. أما للحصول على سجل يمكنك التراجع عبره، فتذهب اللقطات إلى التخزين المجزّأ: يرفع أول تشغيل الأجزاء المكتوبة، وكل تشغيل بعده يرفع فقط ما تغيّر، وتُستعاد أي لقطة بمفردها. هذا الأمر مكتوب هنا دون تنفيذ، لأن الرفع يحتاج إلى خادم حساب و repository مرخّص، ولا يتوفر أي منهما في التسجيل. على تثبيتك الخاص، ومعك حساب، هذا هو الأمر المطلوب.
على تثبيتك الخاص، بحساب فعلي، التسلسل الكامل هو:
rdc backup snapshot my-app
rdc backup manifests my-app
rdc backup restore my-app --as my-app-yesterday --at <snapshot-id> --up
يغطي دليل النسخ الاحتياطي والاستعادة اللقطات والاحتفاظ والتحقق بالكامل.
التالي: الشبكات والنطاقات.