دموی رایگان

چرا ریستور بکاپ وردپرس نتیجه نمی‌دهد؟ هفت علت پنهان

دلوین خیری مقدم خواندن ~۹ دقیقه امنیت و پشتیبان‌گیری
چرا ریستور بکاپ وردپرس نتیجه نمی‌دهد؟ هفت علت پنهان
ریستور بکاپ وردپرس زمانی نتیجه نمی‌دهد که خودِ بازیابی موفق شود اما ریشهٔ مشکل باز بماند؛ به تجربهٔ ما هفت علت پنهان پشت این شکاف است — بکاپ ناقص از دیتابیس یا فایل‌ها، محیط ناسازگار از نظر نسخهٔ PHP و افزونه‌ها، آلودگی بازگشتی از افزونهٔ کرک‌شده، ریستور بدون تعمیر ریشهٔ هک، کش و DNS قدیمی و بکاپ آزمون‌نشده. پروتکل هفت‌قدمیِ پایان همین مقاله، بازیابی را از یک شانس به روندی قابل تکرار تبدیل می‌کند.

مسیر اجرای بازیابی را در آموزش گام‌به‌گام ریستور بکاپ وردپرس باز کرده‌ایم: سه مسیر پنل هاست، افزونهٔ پشتیبان و بازیابی دستی، همراه با چک‌لیست پیش و پس از کار. این مقاله یک قدم بعدی می‌نشیند؛ برای تیم‌هایی که مراحل را درست طی کرده‌اند اما نتیجه نگرفته‌اند — سایت بالا آمده ولی سفارش ثبت نمی‌شود، دو هفته بعد دوباره آلوده شده، یا مرورگر هنوز نسخهٔ کهنه را نشان می‌دهد.

فراوانی وردپرس این شکاف را حساس‌تر می‌کند؛ طبق دادهٔ W3Techs حدود ۴۳٪ از همهٔ سایت‌های جهان با وردپرس ساخته شده‌اند (تاریخ گردآوری: آبان ۱۴۰۵) و همین شناخته‌شده بودن، الگوهای خطا را هم پرتکرار کرده است. به تجربهٔ ما شکست ریستور معمولاً از خود فایل بکاپ شروع نمی‌شود؛ از چیزهایی شروع می‌شود که دور آن رخ داده — محیطی که به آن برگردانده‌اید، حادثه‌ای که پیش از بازیابی رخ داده و فرایندی که برای آزمون نسخه‌ها نداشته‌اید. اگر هنوز در مرحلهٔ طراحی روند پشتیبان‌گیری هستید، هاب امنیت و پشتیبان‌گیری نقشهٔ کامل خوشه را نشان می‌دهد.

چرا ریستور بکاپ وردپرس به نتیجه نمی‌رسد؛ نقشهٔ هفت علت

سه پرسش که حکم ریستور را می‌سازند
هر سه پرسش «بله» نشود، ریستور فقط صفحهٔ نمایش را عوض می‌کند.

هر ریستور سه پرسش را باید هم‌زمان جواب بدهد: آیا نسخهٔ بازیابی‌شده کامل است؟ آیا محیط مقصد با نسخهٔ اصلی سازگار است؟ و آیا ریشهٔ مشکل بسته شده است؟ به تجربهٔ ما تیم‌ها فقط روی پرسش اول تمرکز می‌کنند، چون تنها همان را فایل بکاپ نمایندگی می‌کند؛ دو پرسش بعدی در پنل هاست، لاگ خطا و تاریخچهٔ حادثه زندگی می‌کنند و اگر جواب نگیرند، ریستورِ «موفق» چند روز بعد دوباره نافرجام به نظر می‌رسد.

هفت علت این مقاله دقیقاً روی همین شکاف کار می‌کنند: یکی به خود بکاپ برمی‌گردد، یکی به محیط، دو علت به حادثهٔ امنیتی، دو علت به لایهٔ نمایش و آخری به فرایند. برای هر علت، نشانهٔ تشخیص و راه بستن را آورده‌ایم تا در لحظهٔ بحران، حدس جای پروتکل را نگیرد و تیم بداند اول کجا را بگردد. در سنجش ما همین نقشه، ترتیب بررسی در بحران هم هست: از ارزان‌ترین تشخیص شروع کنید، نه از نزدیک‌ترین.

علت یک؛ بکاپ ناقص از دیتابیس یا فایل‌ها

رایج‌ترین نسخهٔ این علت، بکاپی است که فقط یک نیمه دارد: دیتابیس بدون فایل‌ها یا فایل‌ها بدون دیتابیس. افزونه‌های پشتیبان برای صرفه‌جویی، بخش سنگین یعنی پوشهٔ آپلودز را حذف می‌کنند یا بکاپ روی «تنظیمات سریع» می‌ماند؛ مدیر هم فهرست نسخه‌ها را می‌بیند و کامل بودن را از وجود فایل ZIP حدس می‌زند. در بحران، نتیجه این است که مطالب برمی‌گردند ولی رسانه‌ها ۴۰۴ می‌دهند، یا برعکس، پوسته هست و هیچ محصولی در فروشگاه نیست.

نشانهٔ تشخیص گویاست: خطای «جدول وجود ندارد» یعنی نیمهٔ دیتابیس ناقص است و انبوه خطای تصویر یعنی آپلودز جا مانده. راه‌حل، تعریف مکتوب «بکاپ کامل» است: فایل‌های هسته، قالب و افزونه‌ها به‌علاوهٔ پوشهٔ آپلودز به‌همراه دیتابیسِ هم‌تاریخ؛ پیش از بستن کار، حجم فایل و شمار جدول‌ها را با نسخهٔ قبلی مقایسه کنید و این تعریف را در همان فایل متنی کنار بکاپ ثبت کنید تا از حافظهٔ افراد مستقل بماند. به تجربهٔ ما بکاپ سبک‌شده برای صرفه‌جویی فضا، در لحظهٔ بحران گران‌ترین نسخهٔ موجود است.

علت دو؛ محیط ناسازگار از PHP تا افزونه‌ها

بکاپ، محیط را هم با خودش نمی‌آورد. وقتی نسخهٔ پشتیبان از هاستی با PHP قدیمی گرفته شده و روی هاستی با PHP 8 بازگردانده می‌شود، افزونه یا قالبی که سال‌ها آپدیت نشده ممکن است با خطای مرگ‌بار متوقف شود؛ سایت «برگشته» اما بالا نمی‌آید. همین ماجرا با نسخهٔ هستهٔ وردپرس، افزونه‌های تجاری بدون فایل نصب و قالب سفارشی‌ای که فقط روی همان سرور کار می‌کرد تکرار می‌شود.

مؤلفهخطر ناسازگاریچک پیش از ریستور
نسخهٔ PHPافزونه یا قالب قدیمی با خطای مرگ‌بار متوقف می‌شودنسخهٔ هاست مقصد را با ثبت بکاپ مقایسه کنید
هستهٔ وردپرساسکیمای دیتابیس متفاوت، ارتقای نیمه‌کاره می‌سازدهمان نسخهٔ بکاپ را نصب کنید؛ ارتقا بعد از تثبیت
قالب و افزونهٔ تجاریفایل یا لایسنس گم‌شده، چیدمان را می‌شکندبستهٔ نصب و کلید لایسنس کنار بکاپ نگه دارید

این سه مؤلفه را در یک فایل متنی کنار هر بکاپ ثبت کنید؛ همان یک فایل، ساعت‌های بحران را کوتاه می‌کند.

راه‌حل این شکاف، ثبت محیط کنار نسخه است: شمارهٔ نسخهٔ PHP، هستهٔ وردپرس و فهرست افزونه‌ها را در یک فایل متنی کنار هر بکاپ نگه دارید. ریستور را روی نسخهٔ هم‌خوان انجام دهید و ارتقای PHP یا افزونه‌ها را به بعد از تثبیت سایت موکول کنید؛ به تجربهٔ ما ادغام دو تغییر پرریسک در یک پنجره، عامل بیشتر صفحات سفیدِ بعد از بازیابی است.

علت سه؛ آلودگی بازگشتی از افزونهٔ کرک‌شده

گاهی بکاپ از همان اول آلوده است؛ افزونهٔ کرک‌شده یا قالب نال‌شده‌ای که ماه‌ها پیش نصب شده، درب پشتی خود را داخل نسخه‌های پشتیبان هم کپی می‌کند. ریستور یعنی بازگرداندن دقیق همان پاکت آلوده به جای خودش؛ سایت دو هفته سالم می‌ماند و بعد صفحه‌های اسپم، کاربران ناشناس یا تغییرات عجیب در نتایج جستجو برمی‌گردند.

تشخیص پیش از بازیابی، ارزان‌ترین گام کل این فهرست است: فایل‌های قالب و افزونه‌ها را با نسخهٔ رسمی مخزن مقایسه کنید، افزونه‌های کرک‌شده را کلاً حذف کنید و فایل‌های PHP ناشناس داخل آپلودز را بررسی کنید؛ تمرکز را روی افزونه‌ها و قالب‌های بدون منبع رسمی بگذارید، چون مسیر ورود همیشگی‌اند. اگر حادثه از نوع هک کامل بوده، مسیر قرنطینه تا بازگشت امن در آموزش گام‌به‌گام بازیابی سایت هک‌شده آمده است؛ قاعدهٔ این بخش یک جمله است: نسخه‌ای که خودش آلوده است، با ریستور سالم نمی‌شود.

علت چهار؛ ریستور کامل بدون تعمیر ریشهٔ هک

فرض کنید بکاپ واقعاً سالم است و سایت بالا می‌آید؛ اگر مهاجم هنوز حساب مدیریتی ساخته‌شده، کلید API لو رفته یا کار زمان‌بندی‌شدهٔ مخرب را روی سرویس‌های بیرونی داشته باشد، راه ورودش باز مانده است. ریستور، درِ خانه را تعمیر می‌کند اما کلیدهای کپی‌شده را عوض نمی‌کند؛ نتیجه، هک مجددی است که «شکست ریستور» قلم می‌خورد. به تجربهٔ ما برخی مهاجمان اعلان‌های کنسول جستجو را به ایمیل خودشان هدایت می‌کنند تا بازگشت آلودگی دیرتر کشف شود؛ هدایت اعلان‌ها را هم در فهرست بررسی بگذارید.

پاک‌سازی ریشه فهرست کوتاهی دارد: مرور فهرست کاربران و حذف حساب‌های ناشناس، چرخش همهٔ گذرواژه‌ها و نمک‌های امنیتی، چرخش کلیدهای اتصال به سرویس‌های بیرونی — ایمیل، پیامک، درگاه — که اغلب فراموش می‌شوند، و بازبینی فایل htaccess. برای ریدایرکت‌های مخرب و بررسی صفحات اسپم ثبت‌شده در کنسول جستجو، درخواست بازبینی مجدد بدهید. به تجربهٔ ما همین چک‌لیست کوتاه، تفاوت میان ریستورِ یک‌باره و چرخهٔ بی‌پایان هک، ریستور و دوباره هک است.

علت پنج و شش؛ کش و DNS قدیمی بعد از ریستور

دو علت بعدی اصلاً خرابی نیستند؛ نمایشِ کهنهٔ یک سایت سالم‌اند. کش افزونه، کش CDN و کش مرورگر می‌توانند ساعت‌ها — و در DNS حتی تا پایان TTL — نسخهٔ قبلی را نشان بدهند. تیم فنی سایت را چند بار دوباره ریستور می‌کند، تغییرات را خراب‌تر می‌کند و گزارش می‌دهد «بازیابی جواب نمی‌دهد»، در حالی که نسخهٔ سالم از یک شبکهٔ دیگر در دسترس است.

تشخیص ساده است: همان آدرس را در حالت ناشناس یا با شبکهٔ موبایل باز کنید و کش CDN را دستی خالی کنید. برای ریستورهای بزرگ، TTL دامنه را از قبل کوتاه کنید و پس از بازگشت، پاک‌سازی کش را لایه‌به‌لایه — افزونه، CDN، مرورگر — انجام دهید و فهرست این قدم‌ها را یک‌بار مکتوب کنید تا در بحران چیزی از قلم نیفتد. اگر بعد از پاک‌سازی هنوز نسخهٔ کهنه دیده می‌شود، مشکل از DNS محلی شبکهٔ شماست و آزمون با DNS عمومی حکم را می‌گوید؛ به تجربهٔ ما نیم‌ساعت پاک‌سازی منظم، کم‌هزینه‌تر و کم‌ریسک‌تر از یک ریستور اضافهٔ تمام‌عیار است.

علت هفت؛ بکاپ آزمون‌نشده و ناهم‌تاریخ

آخرین علت به فرایند برمی‌گردد: نسخه‌ای که هرگز بازیابی نشده، پشتیبان نیست؛ یک فرضیهٔ خوش‌بینانه است. خرابی فایل ZIP نیمه‌کاره، دیتابیس ناقص یا افزونهٔ گم‌شده معمولاً در همان لحظهٔ بحران کشف می‌شود، وقتی که دیگر زمان رفعش نیست. اختلاف حتی چند ساعت میان برش دیتابیس و فایل‌ها هم سفارش‌های نیمه‌ثبت‌شده می‌سازد، چون تراکنش‌ها و رسانه‌ها از دو زمان مختلف می‌آیند.

ریسک دوم، ترکیب نسخه‌های ناهم‌تاریخ است: دیتابیس دیروز با فایل‌های هفتهٔ پیش، سایتی نیمه‌سالم می‌سازد که خطاهایش در چند صفحه ظاهر می‌شود و در چند صفحه نه. قاعدهٔ سادهٔ ما «فایل و دیتابیس از یک تاریخ» است، بدون استثنا؛ اگر دیتابیس تازه‌تری دارید، تفکیک جدول‌های محتوایی را با یک متخصص بسنجید، نه با حدس. تمرین فصلی بازیابی روی محیط آزمایشی — با ثبت تاریخ و ایرادهای هر تمرین — این علت را برای همیشه از فهرست حادثه‌های شما حذف می‌کند. چک‌لیست تمرین را همان چک‌لیست بحران کنید تا تمرین، عین واقعیت باشد و خروجی هر تمرین، فهرست اصلاح چرخهٔ بعدی شود.

پروتکل ریستور سالم؛ هفت قدم از قرنطینه تا تحویل

پروتکل هفت‌قدمی ریستور سالم
قدم دوم و پنجم همان‌هایی هستند که در بیشتر ریستورهای نافرجام حذف می‌شوند.

هفت علت بالا در یک پروتکل جمع می‌شوند؛ ترتیب قدم‌ها اهمیت دارد، چون بیشتر شکست‌ها از جابه‌جایی ترتیب می‌آیند — مثل ریستور پیش از تشخیص علت. پروتکل ما از قرنطینه شروع می‌شود، پیش از بازیابی نوع خرابی را جدا می‌کند، بکاپ کامل هم‌تاریخ را انتخاب می‌کند، محیط مقصد را هم‌نسخه می‌کند و تا پایش چهل‌وهشت ساعته بعد از بازگشت ادامه دارد.

سه قاعده کوتاه برای ماندگاری: اول، فایل و دیتابیس همیشه هم‌تاریخ؛ دوم، ریشه را ببندید نه نشانه را؛ سوم، بازیابی را تمرین کنید نه امیدوار باشید. هر حادثه را با گزارش یک‌صفحه‌ای ببندید — چه علت، چه مدت توقف، چه ایرادی در نسخه‌ها پیدا شد — تا تمرین بعدی دقیق‌تر از قبلی باشد.

اگر می‌خواهید این چرخه بدون وابستگی به حافظهٔ اپراتور اجرا شود، پشتیبان‌گیری و انتشار خودکار سوئیت با رمزنگاری AES-256 و امضای HMAC-SHA256 و ۹۰۰+ تست خودکار روی خط انتشار کار می‌کند؛ جزئیات در امنیت و پشتیبان‌گیری در سوئیت و قابلیت‌های پلتفرم آمده است. پیش از هر تصمیم خرید، ممیزی رایگان دامنه وضعیت فعلی بازیابی‌پذیری سایت شما را نشان می‌دهد.

دموی رایگان پلتفرم

پلن پیشرو — ۷٫۹ میلیون تومان/ماه (انتشار خودکار + اپراتور)

دموی رایگان پلتفرم

رصد ما، رشد شما.

سؤالات پرتکرار

فایل بکاپ دارم ولی سایت بعد از ریستور بالا نمی‌آید؛ از کجا شروع کنم؟

دو حالت را جدا کنید: خطای PHP یا صفحهٔ سفید یعنی محیط ناسازگار است و لاگ خطای هاست حکم را می‌گوید؛ دامنهٔ بازنشده یا نسخهٔ کهنه یعنی کش و DNS. به تجربهٔ ما لاگ خطا، اولین سند برای تشخیص است.

چرا دو هفته بعد از ریستور، سایت دوباره آلوده شد؟

چون ریستور نشانه را پاک کرده نه ریشه را؛ درب پشتی داخل افزونهٔ کرک‌شده، حساب مدیریتی ناشناس یا کار زمان‌بندی‌شده باقی مانده است. بخش آلودگی بازگشتی همین مقاله، چک‌لیست پاک‌سازی ریشه را دارد.

بعد از ریستور، محتوای هفتهٔ آخر برگشت؛ راهی دارد؟

نسخهٔ هم‌تاریخ یعنی از دست رفتن تغییرات بعد از آن تاریخ. ترکیب دیتابیس تازه‌تر با فایل‌های قدیمی فقط وقتی امن است که ساختار جدول‌ها هم‌خوان باشد؛ به تجربهٔ ما بازسازی دستی محتوای چند روزه کم‌ریسک‌تر است.

چند وقت یک بار باید بازیابی را تمرین کنیم؟

یک تمرین کامل در فصل روی محیط آزمایشی کافی است؛ تمرین یعنی ریستور واقعی، نه بازکردن فایل ZIP. هر تمرین را با تاریخ و فهرست ایرادهای پیداشده ببندید تا نسخهٔ بعدی دقیق‌تر باشد.

پلتفرم سوئیت در بازیابی چه چیزی اضافه می‌کند؟

ذخیرهٔ رمزنگاری‌شده با AES-256 و امضای HMAC-SHA256 به‌همراه ۹۰۰+ تست خودکار روی خط انتشار؛ در پلن پیشرو، انتشار خودکار و اپراتور هم اضافه می‌شود. دمو رایگان برای دیدن مسیر بازیابی کافی است.