هیچچیز بهاندازه از دست رفتن نمرات و تکالیف یک ترم، اعتماد مدرسه به سامانه آنلاین را از بین نمیبرد. خبر خوب این است که پشتیبانگیری مودل ساده و کاملاً قابلاتکاست، به شرطی که بدانید دقیقاً چه چیزی را باید نگه دارید.
مودل از سه بخش تشکیل شده است
یک نسخه پشتیبان کامل فقط وقتی معنی دارد که هر سه جزء با هم و از یک لحظه گرفته شوند:
- پایگاهداده (MySQL/MariaDB یا PostgreSQL): کاربران، نمرات، متن تکالیف، تنظیمات و ساختار دورهها.
- پوشه
moodledata: فایلهای بارگذاریشده، فایلهای جلسه، کش و نسخههای بکاپ دورهها. این پوشه بیرون از ریشه وب قرار دارد. - کدهای مودل: هسته بهعلاوه افزونهها و قالب سفارشی. فایل
config.phpاینجاست و حیاتی است.
اگر فقط پایگاهداده را بگیرید، فایلها را از دست میدهید؛ اگر فقط فایلها را بگیرید، نمرات از بین میرود.
گرفتن بکاپ کامل دستی
روی سرور، در یک بازه کمترافیک:
- سایت را به حالت تعمیر ببرید:
php admin/cli/maintenance.php --enable - دامپ پایگاهداده:
mysqldump --single-transaction -u USER -p DBNAME | gzip > db-$(date +%F).sql.gz - آرشیو moodledata:
tar czf moodledata-$(date +%F).tar.gz /path/to/moodledata - آرشیو کدها:
tar czf code-$(date +%F).tar.gz /path/to/moodle - خروج از حالت تعمیر:
php admin/cli/maintenance.php --disable - هر سه فایل را به یک مقصد خارج از سرور (فضای ابری یا سرور دوم) منتقل کنید.
حالت تعمیر تضمین میکند بین دامپ پایگاهداده و آرشیو فایلها، داده تغییر نکند. برای سایتهای کوچک چند دقیقه بیشتر طول نمیکشد.
زمانبندی خودکار بکاپ
بکاپ دستی فراموش میشود؛ بکاپ خودکار نه. یک اسکریپت شل بنویسید که سه مرحله بالا را انجام دهد و آن را با cron زمانبندی کنید:
- روزانه: دامپ پایگاهداده (کمحجم و سریع)، نگهداری ۱۴ نسخه آخر.
- هفتگی: آرشیو کامل
moodledata، نگهداری ۴ تا ۸ نسخه. - قاعده ۳-۲-۱: سه نسخه، روی دو رسانه مختلف، که یکی خارج از محل اصلی باشد.
- پایش: خروجی cron را به ایمیل یا سامانه اعلان بفرستید تا از شکست بکاپ باخبر شوید.
بکاپ داخلی «دورهها» در خود مودل (Automated backups) جایگزین این کار نیست؛ آن فقط برای بازیابی یک درس بهدرد میخورد، نه کل سامانه، و خودش moodledata را پر میکند.
مهاجرت گامبهگام به سرور جدید
- روی سرور جدید همان نسخه دقیق PHP و پایگاهداده و مودل را آماده کنید.
- کدها و
moodledataرا منتقل و مسیرها و دسترسیها (owner و permission) را تنظیم کنید. - پایگاهداده را وارد کنید و یک کاربر پایگاهداده با دسترسی کامل بسازید.
config.phpرا ویرایش کنید:$CFG->dbhost،$CFG->dbname،$CFG->dbuser،$CFG->dbpass،$CFG->wwwrootو$CFG->dataroot.- روی سرور جدید تست کنید (با فایل hosts یا یک دامنه موقت) و سپس
php admin/cli/purge_caches.phpبزنید. - وقتی همهچیز درست بود، DNS دامنه را به سرور جدید منتقل کنید و در فاصله انتشار، سرور قدیم را در حالت تعمیر بگذارید تا داده جدید ثبت نشود.
- اگر
wwwrootعوض شده، دستورphp admin/tool/replace/cli/replace.phpبرای اصلاح لینکهای داخل محتوا کمک میکند (با احتیاط و بکاپ قبلی).
کارهای پس از انتقال
- ارسال ایمیل آزمایشی و بررسی صف پیامها.
- اجرای دستی کرون:
php admin/cli/cron.phpو سپس تنظیم cron سیستمی. - بررسی گواهی SSL و ریدایرکت http به https.
- بررسی
Site administration → Reports → Performance overview. - نگهداشتن سرور قدیمی بهمدت چند هفته بهعنوان پشتیبان.
آزمون بازیابی را جدی بگیرید
بکاپی که هرگز بازیابی نشده، تا روز حادثه یک فرض است نه یک واقعیت. هر چند ماه یکبار، بکاپ را روی یک سرور آزمایشی بازگردانی کنید و ورود، نمرات و فایلها را بررسی کنید. همین یک تمرین ساده، تفاوت بین «چند ساعت قطعی» و «یک فاجعه» است.
برای طراحی سیاست پشتیبانگیری خودکار یا اجرای مهاجرت بیقطعی مودل مدرسهتان، درخواست مشاوره ثبت کنید. برای آمادهسازی سرور پرترافیک هم این راهنما را ببینید.