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

بکاپ کامل و جزئی: دو تعریف دقیق

بکاپ کامل (Full Backup)، یک نسخه کامل از تمام اجزای سایت شماست: فایل‌ها، دیتابیس، پوشه‌های افزونه و قالب، تصاویر آپلودشده و فایل‌های پیکربندی. اگر روزی سایت به هر دلیلی از دست برود، با این بکاپ می‌توانید کل سایت را در یک مرحله بازگردانید، بدون اینکه به منبع دیگری نیاز داشته باشید.

بکاپ جزئی (Partial Backup)، فقط بخش مشخصی از سایت را ذخیره می‌کند: یا فقط دیتابیس، یا فقط پوشه wp-content، یا فقط یک بخش محدود مثل پوشه آپلودها. بکاپ جزئی، برای کاهش حجم و زمان بسیار مفید است، اما در لحظه بازیابی، نیازمند تکمیل با سایر بخش‌هاست. مفهوم پایه بکاپ و ضرورت آن در پشتیبان‌گیری از سایت چیست و چرا ضروری است آمده؛ در این نوشته، روی تفکیک کامل و جزئی متمرکز می‌شوم.

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

در هر بکاپ دقیقاً چه چیزی ذخیره می‌شود؟

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

جزء سایتدر بکاپ کاملدر بکاپ جزئی
هسته وردپرسدرج می‌شودمعمولاً حذف می‌شود (قابل بازنصب)
پوشه wp-content/themesدرج می‌شودممکن است درج شود
پوشه wp-content/pluginsدرج می‌شودممکن است درج شود
پوشه wp-content/uploadsدرج می‌شودمعمولاً حذف می‌شود (سنگین)
دیتابیس (محتوای متنی)درج می‌شوددر بکاپ دیتابیس، درج می‌شود
فایل‌های تنظیمات (wp-config.php)درج می‌شودمعمولاً حذف می‌شود
تنظیمات هاست (کرون، ایمیل، DNS)ممکن است درج شودحذف می‌شود
حجم تقریبیچند صد مگابایت تا چند گیگابایتچند مگابایت تا چند صد مگابایت
زمان اجراکندسریع
زمان بازیابییک‌مرحله‌ای، کاملچندمرحله‌ای، نیازمند تکمیل

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

مزایا و معایب بکاپ کامل

مزایای بکاپ کامل:

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

معایب بکاپ کامل:

  • حجم بالا: در سایت‌های با کتابخانه تصویر بزرگ، بکاپ کامل به‌سرعت به چند گیگابایت می‌رسد.
  • زمان اجرا و منابع: گرفتن بکاپ کامل روی هاست اشتراکی، مصرف CPU و I/O را بالا می‌برد و می‌تواند سایت را کند کند. راه‌های کاهش این فشار در کاهش مصرف منابع هاست آمده است.
  • پرهزینه برای نگهداری: نگه داشتن چند نسخه از بکاپ کامل، فضای ذخیره‌سازی زیادی می‌طلبد. مسئله نگهداری چند نسخه در چند نسخه بکاپ باید نگهداری کنیم بررسی شده است.
  • محدودیت هاست اشتراکی: برخی هاست‌های ارزان، سقف منابع روزانه دارند و گرفتن بکاپ کامل روزانه در آن‌ها عملاً ممکن نیست.

مزایا و معایب بکاپ جزئی

مزایای بکاپ جزئی:

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

معایب بکاپ جزئی:

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

چه زمانی بکاپ کامل انتخاب درست است؟

در تجربه من، بکاپ کامل در چهار سناریو انتخاب اول است:

  1. قبل از هر تغییر بزرگ: پیش از آپدیت وردپرس، پیش از آپدیت قالب، پیش از آپدیت افزونه‌ها، و پیش از هر تغییر ساختاری، بکاپ کامل بگیرید. حتی اگر روزانه بکاپ جزئی دارید، قبل از این تغییرات، یک بکاپ کامل بگیرید. این اصل در اشتباهات رایج در پشتیبان‌گیری از سایت هم تأکید شده است.
  2. پیش از مهاجرت هاست یا دامنه: هر جابه‌جایی سایت، نیازمند بکاپ کامل است. مراحل دقیق در چگونه از سایت وردپرسی بکاپ بگیریم آمده است.
  3. سایت‌های فروشگاهی و پُرمعامله: در فروشگاه، هر سفارش و هر داده مشتری ارزش واقعی دارد. اینجا بکاپ کامل حداقل الزامی است. نسخه اختصاصی فروشگاه در بکاپ‌گیری از فروشگاه ووکامرس آمده است.
  4. در بازه‌های هفتگی یا فصلی: حتی اگر روزانه بکاپ جزئی می‌گیرید، یک بکاپ کامل هفتگی یا فصلی داشته باشید. این بکاپ، مرجع امن برای سناریوهای پیچیده است.
در بکاپ، قاعده‌ای که هرگز شکسته نمی‌شود: در سناریوهای بزرگ، فقط بکاپ کامل نجات‌دهنده است. بکاپ جزئی، جایگزین کامل نیست؛ مکمل آن است.

چه زمانی بکاپ جزئی کافی است؟

در سه سناریو، بکاپ جزئی نه‌فقط کافی، بلکه انتخاب درست است:

  1. سایت‌های با محتوای متنی پُرتغییر: اگر سایت شما بیشتر وبلاگ است و تغییرات اصلی در دیتابیس رخ می‌دهد (نوشته جدید، دیدگاه، تنظیمات)، بکاپ دیتابیس روزانه کافی است. تصاویر و فایل‌های استاتیک، تغییرات کمتری دارند و می‌توانند در بکاپ هفتگی یا فصلی کامل باشند.
  2. هاست‌های با محدودیت منابع: در هاست اشتراکی با سقف منابع، بکاپ کامل روزانه می‌تواند سایت را کند کند یا حتی به تعلیق حساب منجر شود. در این حالت، بکاپ دیتابیس روزانه + بکاپ کامل هفتگی، تعادل منطقی است.
  3. سایت‌های با پوشه رسانه حجیم: اگر کتابخانه تصویر شما چند گیگابایت است، گرفتن بکاپ کامل روزانه از این حجم، عملاً بی‌فایده است چون تصاویر معمولاً تغییرات کمی دارند. بکاپ دیتابیس روزانه + بکاپ دوره‌ای تصاویر، انتخاب بهتری است.

راهکار ترکیبی: بهترین تعادل

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

  • روزانه: بکاپ دیتابیس + پوشه پلاگین‌ها و قالب‌ها (چون تغییرات ساختاری معمولاً در این پوشه‌ها رخ می‌دهد).
  • هفتگی: بکاپ کامل (شامل پوشه uploads و کل wp-content).
  • ماهانه: یک نسخه بکاپ کامل که در فضای بیرون از هاست نگهداری می‌شود.
  • پیش از هر تغییر بزرگ: بکاپ کامل فوری، مستقل از چرخه روزانه.

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

اشتباهات رایج در انتخاب نوع بکاپ

پنج اشتباه که در تجربه‌ام بیشترین هزینه را ساخته‌اند:

  1. فرض اینکه بکاپ جزئی، بکاپ کامل است: بعضی افزونه‌ها، بکاپ جزئی را به‌عنوان «بکاپ کامل» ارائه می‌کنند. پیش از اعتماد، در توضیحات افزونه بررسی کنید که چه چیزی در بکاپ گنجانده شده است. نشانه‌های قرمزی که در اشتباهات رایج پشتیبان‌گیری آمده است، همین را پوشش می‌دهد.
  2. نگرفتن بکاپ کامل قبل از تغییرات بزرگ: حتی اگر روزانه بکاپ جزئی دارید، قبل از آپدیت وردپرس یا تغییر قالب، بکاپ کامل بگیرید. پروتکل تغییر امن قالب در تغییر قالب بدون آسیب بر همین اصل بنا شده است.
  3. رها کردن بکاپ در همان هاست: بکاپی که روی همان هاست است، در صورت از دست رفتن هاست، از دست می‌رود. حداقل یک نسخه باید بیرون از هاست باشد. مسیر عملی در پشتیبان‌گیری از ایمیل و فایل‌های هاست آمده است.
  4. تست نکردن بازیابی: بکاپی که بازیابی‌اش تست نشده، بکاپ نیست. مسیر بازیابی در بازیابی سایت از بکاپ آمده؛ یک بار در محیط استجینگ تمرین کنید.
  5. ندیدن هزینه بلندمدت: بکاپ کامل روزانه روی هاست اشتراکی ضعیف، می‌تواند به تعلیق حساب منجر شود. بکاپ را متناسب با منابع هاست انتخاب کنید، نه فقط بر اساس توصیه‌های عمومی.

جدول مرجع

سناریونوع بکاپ پیشنهادیفراوانی
سایت وبلاگی با محتوای متنی پُرتغییردیتابیس (جزئی)روزانه
سایت شرکتی با فایل‌های متوسطکامل + جزئی دیتابیسهفتگی + روزانه
فروشگاه اینترنتیکامل (دیتابیس، فایل، افزونه)روزانه + فوری پیش از تغییر
هاست اشتراکی با سقف منابعدیتابیس روزانه + کامل هفتگیترکیبی
سایت با کتابخانه تصویر حجیمدیتابیس روزانه + کامل ماهانهترکیبی
پیش از آپدیت وردپرس یا قالبکاملفوری، قبل از تغییر
پیش از مهاجرت هاستکامل + بیرون از هاستفوری، قبل از مهاجرت

پرسش‌های کوتاه

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

هر چند وقت یک بار باید بکاپ کامل بگیرم؟ در تجربه من، برای سایت‌های معمولی هفتگی، برای فروشگاه‌ها روزانه. اگر هاست شما منابع کافی برای بکاپ کامل روزانه را ندارد، از راهکار ترکیبی (دیتابیس روزانه + کامل هفتگی) استفاده کنید.

آیا افزونه‌های بکاپ، تفاوت کامل و جزئی را به‌وضوح مشخص می‌کنند؟ بعضی‌ها بله، بعضی‌ها با نام‌های بازاریابی گمراه‌کننده. پیش از اعتماد به هر افزونه، در مستنداتش دنبال فهرست کامل اجزایی بگردید که در بکاپ درج می‌شود. فهرست افزونه‌های معتبر در بهترین افزونه‌های بکاپ وردپرس آمده است.

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

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

آیا بکاپ جزئی، برای مهاجرت کافی است؟ خیر. مهاجرت نیاز به بکاپ کامل دارد، چون بخش‌های مختلف سایت (فایل، دیتابیس، تنظیمات) باید با هم منتقل شوند. برای مهاجرت، مراحل بکاپ کامل وردپرس را دنبال کنید.

از منظر معماری پشتیبان‌گیری

برای توسعه‌دهندگان و مدیران فنی که با سایت‌های پرمعامله یا فروشگاهی کار می‌کنند، انتخاب بین بکاپ کامل و جزئی را باید در چارچوب «بودجه ریسک» دید، نه فقط در چارچوب فضای ذخیره‌سازی. سه اصل معماری که در پروژه‌های واقعی اثر مستقیم داشته‌اند. اول، تفکیک RPO و RTO: RPO (Recovery Point Objective) یعنی چه مقدار داده می‌توانید از دست بدهید، و RTO (Recovery Time Objective) یعنی چقدر زمان برای بازگرداندن سایت در اختیار دارید. اگر RPO شما یک ساعت است، بکاپ روزانه کافی نیست؛ اگر RTO شما کمتر از یک ساعت است، فقط بکاپ کامل با بازیابی یک‌مرحله‌ای جواب می‌دهد. تعیین این دو عدد پیش از انتخاب نوع بکاپ، تصمیم را از سلیقه به مهندسی تبدیل می‌کند. دوم، جداسازی لایه بکاپ از لایه هاست: بکاپ‌ها باید در فضایی مستقل از هاست سایت نگهداری شوند؛ چون در سناریوهای از دست دادن هاست، بکاپ داخلی هم از دست می‌رود. راهکارهای ابری در مزایای پشتیبان‌گیری ابری آمده است. سوم، چرخه بازیابی تمرینی: در پروژه‌های سازمانی، هر فصل یک بار بازیابی کامل از بکاپ را در محیط استجینگ تمرین کنید. تجربه‌ام می‌گوید این تمرین، بیشتر از هر ابزار بکاپ، اعتماد واقعی می‌سازد و مشکلات پنهان در مسیر بازیابی را پیش از بحران آشکار می‌کند. در مقابل، تیم‌هایی که این چرخه را نادیده می‌گیرند، در لحظه حادثه با موقعیت‌هایی مثل «بکاپ هست ولی پسورد رمزنگاری یادمان نیست» یا «افزونه بکاپ با نسخه جدید MySQL سازگار نیست» روبه‌رو می‌شوند — موقعیت‌هایی که با یک تمرین فصلی، به‌کل حذف می‌شوند.

حرف آخر

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