ما الذي يستبدله النشر؟
كل نشر، سواء جاء من push أو من انشر من جديد أو من إصدار جديد ترفعه، يتعامل مع مجلد بوتك بقاعدة واحدة:
- كل ملف يحمله الكود يعود إلى حالته في الكود، حتى لو عدّلته من تبويب الملفات أو كتب فيه بوتك أثناء تشغيله.
- الملف الذي كان في الكود السابق ولم يعد في الكود الجديد يُحذف، إلا إذا تغيّر منذ آخر نشر، فيبقى.
- الملف الذي لم يكن في الكود أصلًا يبقى كما هو، مثل
.venvوملفات البيانات التي ينشئها بوتك.
والكود هنا هو الـ commit الذي ننشره، أو المجلد أو الـ zip الذي رفعته.
احفظ بياناتك خارج الكود
اجعل بوتك ينشئ ملفات بياناته بنفسه، مثل مجلد data أو ملف bot.sqlite، وأبقِها خارج الكود الذي تنشره:
- مع GitHub، أضفها إلى
.gitignore. وإذا كان الملف في الريبو من قبل، فلا يكفي.gitignoreوحده، بل أخرجه من الريبو بالأمرgit rm --cached. - مع الرفع، لا تضعها في المجلد أو الـ zip، لأن كل ملف ترفعه يستبدل الملف الذي يحمل الاسم نفسه في بوتك.
وعند تجهيز بوتك في «شغّل بوتك»، ننبّهك إذا وجدنا في الكود ملف قاعدة بيانات (.sqlite أو .sqlite3 أو .db).
استرجاع نشر سابق
استرجاع نشر سابق هو نشر جديد بكود ذلك النشر بالضبط، أي commit أقدم أو إصدار رفعته من قبل، فتنطبق عليه القاعدة نفسها: تعود ملفات الكود القديم، وتبقى ملفات البيانات التي أنشأها بوتك. أما المتغيرات فلا يغيّرها الاسترجاع، وتبقى كما هي.
ما الذي تحفظه النسخة الاحتياطية؟
تحفظ النسخة الاحتياطية كل ملفات مجلد بوتك، ما عدا:
.venvو__pycache__و.cache- مجلد
logsوكل ملف ينتهي بـ.log - الملفات المؤقتة والإصدارات المرفوعة التي نحفظها في
.serverk
ولا تدخل المتغيرات الحساسة أي نسخة احتياطية.
للحصول على نسخة مطابقة تمامًا من قاعدة بيانات SQLite، وقّف بوتك أولًا ثم اضغط خذ نسخة احتياطية الآن. أما والبوت شغّال، فقد تنقص النسخة آخر تغييرات كتبها.
استرجاع نسخة احتياطية
عند الضغط على رجّع النسخة، نأخذ أولًا نسخة احتياطية من الوضع الحالي، ثم نعيد مجلد بوتك إلى ما كان عليه في النسخة، ويُحذف كل ملف أُنشئ بعدها. أما الملفات التي لا تشملها النسخ الاحتياطية، مثل .venv، فتبقى كما هي.
بعد ذلك ننشر النشر الحالي من جديد، فتأتي ملفات الكود من النشر الحالي، وبقية الملفات من النسخة.
الريسيت
الريسيت من الإدارة ثم منطقة الخطر يحذف كل ملفات بوتك وبياناته. ونأخذ قبله نسخة احتياطية تجدها في تبويب النسخ الاحتياطية، لترجع إليها إذا احتجت.
ثم نبني بوتك من الصفر وننشر النشر الحالي من جديد، وتبقى متغيراتك وربط الريبو كما هي.
هل ساعدك هذا الشرح؟
ساهم في تحسين هذا الشرح
الشروحات مفتوحة المصدر، فإذا كان لديك تصحيح أو إضافة، افتح Pull Request على github.com/serverkgg/bot-python