بکاپینو

توضیحات

بکاپینو تمام سایت وردپرس شما، شامل فایل‌ها و پایگاه داده، را در یک بایگانی به‌همراه اسکریپت مستقل installer.php قرار می‌دهد. این اسکریپت سایت را روی سروری خالی، بدون نیاز به نصب قبلی وردپرس، بازسازی می‌کند.

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

ویژگی‌های اصلی

  • موتور بخش‌بندی‌شدهٔ قابل‌ازسرگیری: پشتیبان‌گیری در بخش‌های کوچک و قابل‌ادامه (اسکن، فایل‌ها، پایگاه داده و نهایی‌سازی) پردازش می‌شود. اگر مهلت اجرا به پایان برسد یا سرور دچار اختلال شود، فرایند به‌طور خودکار از آخرین نقطهٔ بررسی موفق ادامه پیدا می‌کند.
  • تهیهٔ نسخهٔ SQL خالص از پایگاه داده: جدول‌ها را با صفحه‌بندی مبتنی بر کلید و مستقیماً از طریق رابط‌های برنامه‌نویسی پایگاه دادهٔ وردپرس خروجی می‌گیرد. به mysqldump، exec() یا دسترسی به shell نیازی نیست.
  • نصب‌کنندهٔ مستقل (installer.php): نصب‌کننده‌ای بسیار کم‌حجم (حدود 72 کیلوبایت) که به‌صورت پویا ساخته می‌شود. این ابزار بایگانی‌ها را استخراج می‌کند، نسخهٔ پشتیبان SQL را به‌صورت جریانی پردازش می‌کند، نشانی‌ها را جایگزین می‌کند و فایل تازهٔ wp-config.php را با saltهای امنیتی منحصربه‌فرد می‌سازد.
  • جست‌وجو و جایگزینی عمیق نشانی‌ها: موتور هوشمند انتقال، ساختارهای PHP ــ از جمله آرایه‌ها و شیءهای تو‌در‌تو ــ را با دقت از حالت سریال‌شده خارج می‌کند و رشته‌های کدگذاری‌شده با JSON را بدون خراب‌شدن بازنویسی می‌کند.
  • پیوند دائمی جدیدترین نسخهٔ پشتیبان: نشانی اینترنتی امن و بدون تاریخ انقضا که مستقیماً به جدیدترین نسخهٔ پشتیبان اشاره می‌کند. دسترسی با احراز هویت مدیر وردپرس (manage_options) یا کلید محرمانهٔ اختصاصی (?backupino_key=...) محافظت می‌شود.
  • اعلان‌های تلگرام و بله: پس از پایان پشتیبان‌گیری، اعلان‌ها فوراً به ربات شخصی شما فرستاده می‌شوند. این اعلان‌ها محدودهٔ پشتیبان‌گیری، اندازهٔ قالب‌بندی‌شده، تاریخ پایان و پیوند مستقیم دانلود را در بر می‌گیرند. صف ارسال مجدد خودکار با 3 تلاش نیز در نظر گرفته شده است.
  • پشتیبان‌گیری خودکار ماهانه: زمان‌بندی داخلی در روز اول هر ماه اجرا می‌شود. محاسبهٔ تاریخ برای سایت‌های فارسی (fa_IR) به‌طور بومی بر اساس تقویم جلالی و برای زبان‌های دیگر بر اساس تقویم میلادی انجام می‌شود.
  • مدیریت خودکار نگه‌داری نسخه‌ها: جدیدترین بسته‌های پشتیبان‌گیری را نگه می‌دارد (به‌طور پیش‌فرض: 3 بسته) و برای صرفه‌جویی در فضای دیسک، بایگانی‌های قدیمی‌تر را به‌طور خودکار حذف می‌کند.
  • معماری کاملاً محلی‌محور: بدون اسکریپت خارجی، شبکهٔ توزیع محتوا (CDN) یا قلم شخص ثالث. همهٔ منابع به‌صورت محلی از سرور خودتان ارائه می‌شوند.
  • یکنواخت‌سازی رقم‌های لاتین: در همهٔ زبان‌ها، تمام اعدادِ زمان‌ها، اندازه‌ها و رابط کاربری با رقم‌های استاندارد لاتین (0-9) نمایش داده می‌شوند.
  • پشتیبانی از WP-CLI: رابط خط فرمان کامل برای مدیران سیستم (wp backupino create، wp backupino jobs، wp backupino status).

نسخهٔ رایگان و Pro

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

افزونهٔ تکمیلی Pro (که جداگانه عرضه می‌شود) امکانات پیشرفتهٔ سازمانی مانند مقصدهای ذخیره‌سازی ابری (S3، Google Drive، ابر آروان و غیره)، بازگردانی درجا به نسخهٔ پیشین، پشتیبانی از شبکهٔ چندسایته و پشتیبان‌گیری افزایشی را اضافه می‌کند.

سرویس‌های خارجی

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

  1. رابط برنامه‌نویسی ربات تلگرام

* سرویس: پیام‌رسان تلگرام (https://api.telegram.org)
* کاربرد: ارسال اعلان پایان پشتیبان‌گیری و پیوندهای دانلود به گفت‌وگو یا کانال شخصی شما در تلگرام.
* داده‌های ارسال‌شده: نام دامنهٔ سایت، محدودهٔ پشتیبان‌گیری (فایل‌ها/پایگاه داده)، اندازهٔ قالب‌بندی‌شدهٔ بایگانی، زمان پایان و پیوند دائمی دانلود. هنگام بازیابی برای انتقال سایت، نشانی سایت جدید و نشانی ورود به پیشخوان مدیریت نیز ارسال می‌شود.
* زمان ارسال: داده‌ها فقط زمانی ارسال می‌شوند که مدیر سایت اعلان‌ها را در تنظیمات بکاپینو صریحاً فعال کند، «تلگرام» را انتخاب کند و توکن ربات و شناسهٔ گفت‌وگوی شخصی خود را وارد کند (یا اعلان آزمایشی را اجرا کند یا بازیابی را در نصب‌کنندهٔ مستقل به پایان برساند). اگر سرویس اعلان روی «هیچ‌کدام» (حالت پیش‌فرض) باشد، درخواستی ارسال نمی‌شود.
* شرایط استفاده: شرایط استفادهٔ تلگرام
* سیاست حفظ حریم خصوصی: سیاست حفظ حریم خصوصی تلگرام

  1. رابط برنامه‌نویسی ربات بله

* سرویس: پیام‌رسان بله (https://tapi.bale.ai)
* کاربرد: ارسال اعلان پایان پشتیبان‌گیری و پیوندهای دانلود به گفت‌وگو یا کانال شخصی شما در بله.
* داده‌های ارسال‌شده: نام دامنهٔ سایت، محدودهٔ پشتیبان‌گیری (فایل‌ها/پایگاه داده)، اندازهٔ قالب‌بندی‌شدهٔ بایگانی، زمان پایان و پیوند دائمی دانلود. هنگام بازیابی برای انتقال سایت، نشانی سایت جدید و نشانی ورود به پیشخوان مدیریت نیز ارسال می‌شود.
* زمان ارسال: داده‌ها فقط زمانی ارسال می‌شوند که مدیر سایت اعلان‌ها را در تنظیمات بکاپینو صریحاً فعال کند، «بله» را انتخاب کند و توکن ربات و شناسهٔ گفت‌وگوی شخصی خود را وارد کند (یا اعلان آزمایشی را اجرا کند یا بازیابی را در نصب‌کنندهٔ مستقل به پایان برساند). اگر سرویس اعلان روی «هیچ‌کدام» (حالت پیش‌فرض) باشد، درخواستی ارسال نمی‌شود.
* شرایط استفاده: شرایط استفادهٔ بله
* سیاست حفظ حریم خصوصی: سیاست حفظ حریم خصوصی بله

نصب

از پیشخوان وردپرس

  1. در پیشخوان وردپرس به افزونه‌ها -> افزودن افزونه بروید.
  2. عبارت Backupino را جست‌وجو کنید.
  3. روی هم‌اکنون نصب کنید و سپس روی فعال‌سازی کلیک کنید.
  4. منوی بکاپینو را باز کنید و روی ایجاد پشتیبان‌گیری کلیک کنید.

نصب دستی

  1. بایگانی افزونه را دانلود و از حالت فشرده خارج کنید.
  2. پوشهٔ backupino/ را در مسیر /wp-content/plugins/ بارگذاری کنید.
  3. از صفحهٔ افزونه‌ها در وردپرس، بکاپینو را فعال کنید.

سوالات متداول

آیا برای بازیابی، لازم است وردپرس از قبل روی سرور مقصد نصب شده باشد؟

خیر. بایگانی پشتیبان‌گیری را همراه با installer.php در یک پوشهٔ خالی روی وب‌سرور بارگذاری کنید و installer.php را در مرورگر باز کنید. نصب‌کننده فایل‌ها را استخراج می‌کند، پایگاه داده را درون‌ریزی می‌کند و وردپرس را به‌درستی راه‌اندازی می‌کند.

بسته‌های پشتیبان‌گیری کجا ذخیره می‌شوند؟

بسته‌ها به‌صورت محلی در مسیر /wp-content/backupino/packages/ ذخیره می‌شوند؛ این مسیر برای امنیت و جداسازی بیشتر بیرون از پوشهٔ عمومی بارگذاری‌ها قرار دارد. فایل‌های محافظ .htaccess، web.config و index.php خالی، از مرور عمومی مستقیم فایل‌ها و اجرای آن‌ها جلوگیری می‌کنند.

آیا پیوند دائمی دانلود منقضی می‌شود؟

خیر. پیوند دائمی (?backupino_download=latest) منقضی نمی‌شود و همیشه به جدیدترین بایگانی پشتیبان‌گیری اشاره می‌کند. برای حفظ امنیت، دسترسی به این پیوند به احراز هویت مدیر وردپرس (با دسترسی manage_options) یا ارائهٔ کلید محرمانهٔ دانلود که در تنظیمات ساخته می‌شود (?backupino_key=...) نیاز دارد.

آیا نسخهٔ رایگان محدودیتی برای اندازهٔ فایل یا پایگاه داده دارد؟

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

اگر فرایند پشتیبان‌گیری متوقف شود چه اتفاقی می‌افتد؟

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

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

بله. اگر زبان سایت وردپرس شما فارسی (fa_IR) باشد، بکاپینو تاریخ‌ها را به‌طور خودکار بر اساس تقویم جلالی نمایش می‌دهد و پشتیبان‌گیری ماهانه را برای روز اول ماه خورشیدی زمان‌بندی می‌کند. همهٔ اعداد با رقم‌های لاتین (0-9) نمایش داده می‌شوند.

آیا می‌توانم پشتیبان‌گیری را از خط فرمان اجرا کنم؟

بله. بکاپینو فرمان‌های داخلی WP-CLI را در اختیار شما می‌گذارد:
* wp backupino create — آغاز یک کار پشتیبان‌گیری جدید.
* wp backupino jobs — مشاهدهٔ کارهای فعال و پیشین.
* wp backupino status — بررسی کارِ در حال اجرا.

آیا استفاده از اعلان‌های سرویس‌های شخص ثالث الزامی است؟

خیر. اعلان‌ها کاملاً اختیاری هستند و به‌صورت پیش‌فرض غیرفعال‌اند. اگر اطلاعات دسترسی تلگرام یا بله را تنظیم نکنید، بکاپینو کاملاً به‌صورت محلی کار می‌کند و هیچ درخواستی به سرویس‌های خارجی نمی‌فرستد.

نقد و بررسی‌ها

نقد و بررسی‌ای برای این افزونه یافت نشد.

توسعه دهندگان و همکاران

“بکاپینو” نرم افزار متن باز است. افراد زیر در این افزونه مشارکت کرده‌اند.

مشارکت کنندگان

“بکاپینو” به 1 زبان ترجمه شده است. با تشکر از مترجمین برای همکاری و کمک‌هایشان.

ترجمه “بکاپینو” به زبان شما.

علاقه‌ مند به توسعه هستید؟

کد را مرور کنید، مخزن SVN را بررسی کنید، یا از طریق RSS در گزارش توسعه مشترک شوید.

گزارش تغییرات

1.0.5

  • بومی‌سازی: ترجمه‌های کامل فارسی (fa_IR) در قالب فایل‌های .po و .mo همراه افزونه ارائه شده‌اند تا از همان ابتدا تجربه‌ای بومی و کاملاً فارسی فراهم شود.
  • منابع تصویری: تصاویر PNG ایستای جایگزین و واضح (icon-128×128.png و icon-256×256.png) اضافه شدند و انیمیشن‌های SVG مطابق دستورالعمل‌های WordPress.org حذف شدند.
  • بسته‌بندی: فایل .distignore اضافه و .gitattributes به‌روزرسانی شد تا بسته‌های انتشار در SVN وردپرس بدون فایل‌های اضافی و اطلاعات ناخواسته ساخته شوند.
  • خودکارسازی: فرایند انتشار در GitHub Actions با همگام‌سازی منابع SVN و قفل‌گذاری برای جلوگیری از اجرای هم‌زمان ایمن‌تر شد.

1.0.4

  • انطباق: برای رعایت دستورالعمل‌های WordPress.org، متن انتساب عمومی و پیوندهای معرفیِ بدون رضایت از صفحهٔ عمومی دانلود حذف شدند.
  • انطباق: فراخوانی‌های error_reporting و ini_set از کد اجرایی حذف شدند و در نصب‌کنندهٔ مستقل، پاک‌سازی بافر خروجی جایگزین آن‌ها شد.
  • انطباق: استفادهٔ مستقیم از cURL در نصب‌کنندهٔ مستقل حذف شد؛ اعلان‌های پس از بازیابی به‌صورت ایمن در صف قرار می‌گیرند و از طریق رابط HTTP بومی وردپرس (wp_remote_post) ارسال می‌شوند.
  • امنیت: همهٔ فراخوانی‌های رویه‌ای پایگاه داده با mysqli_* حذف شدند؛ نصب‌کنندهٔ مستقل اکنون فقط از PDO و عبارت‌های آمادهٔ پارامتری استفاده می‌کند.
  • پایداری: فایل‌های پیکربندی سرور (.htaccess، .user.ini و php.ini) هنگام استخراج به‌طور ایمن کنار گذاشته می‌شوند تا از بازنویسی پیکربندی موجود میزبان مقصد جلوگیری شود.
  • سازگاری: اصلاح پیشوند جدول بدون حساسیت به بزرگی و کوچکی حروف اضافه شد تا هنگام انتقال بین محیط‌های Windows و Linux، پیشوندهای ترکیبی جدول و نقش‌ها و دسترسی‌های کاربران به‌طور خودکار اصلاح شوند.

1.0.3

  • امنیت: ConfigWriter::redact_secrets() پیاده‌سازی شد تا هنگام ساخت بسته، اطلاعات ورود و saltها از wp-config.php حذف شوند. سپس الگوی پاک‌سازی‌شدهٔ backupino-wp-config.tpl درج و هنگام بازیابی saltهای رمزنگاری‌شدهٔ تازه تولید می‌شوند.
  • امنیت: فایل‌های فیزیکی و دائمی نصب‌کنندهٔ PHP در محل بارگذاری‌ها با دانلود جریانی و پویا از طریق Fs::stream_string_download() جایگزین شدند.
  • انطباق: گزینه‌های پیش‌فرض تنظیمات ساده‌سازی و زمان‌بندی به اجرای استاندارد ماهانه یکپارچه شد؛ همچنین فیلترهایی برای توسعهٔ درایورهای ذخیره‌سازی در نظر گرفته شد.
  • انطباق: همهٔ منابع CSS و JavaScript درون‌خطیِ صفحهٔ عمومی دانلود و نصب‌کنندهٔ مستقل به فایل‌های ایستای جداگانه و قابل‌ذخیره در حافظهٔ نهان منتقل شدند.
  • انطباق: فایل‌های ترجمهٔ همراه افزونه (.po/.mo) حذف شدند تا افزونه فقط به بسته‌های زبان رسمی WordPress.org از طریق translate.wordpress.org متکی باشد.
  • تقویت امنیت: مقایسهٔ رمزنگاری‌شدهٔ توکن دانلود با hash_equals()، اعتبارسنجی سخت‌گیرانهٔ پیشوند جدول با عبارت منظم (/^[a-zA-Z0-9_]+$/) و اعتبارسنجی نشانی‌ها اضافه شد و افشای مسیرهای داخلی برطرف شد.
  • تقویت پایداری: با استفاده از .gitattributes پایان‌خط همهٔ فایل‌های متنی به پایان‌خط یونیکس (LF) یکسان‌سازی شد تا هشدارهای Internal.LineEndings.Mixed برطرف شوند.
  • رفع اشکال: متغیر تعریف‌نشدهٔ $backupino_settings در templates/settings.php که در صفحهٔ تنظیمات خطای مهلک ایجاد می‌کرد، اصلاح شد.
  • رفع اشکال: از ارسال GET بومی فرم در مرحلهٔ 2 نصب‌کنندهٔ مستقل جلوگیری شد و ناهماهنگی شناسهٔ دکمه (back-to-step1) برطرف شد تا فرایند بدون وقفه به مرحلهٔ استخراج برسد.

1.0.2

  • ویژگی: قلاب‌های توسعهٔ backupino_design_tokens و backupino_download_page_styles برای سفارشی‌سازی صفحهٔ عمومی دانلود اضافه شدند.
  • یکپارچگی: زبان جایگزین نصب‌کنندهٔ مستقل در تمام مراحل استخراج و اعلان به en_US یکسان‌سازی شد.
  • تقویت پایداری: پایان‌خط همهٔ فایل‌های افزونه به‌طور کامل به LF یکسان‌سازی شد تا از هشدارهای پایان‌خط ترکیبی جلوگیری شود.

1.0.1

  • امنیت: نصب‌کنندهٔ مستقل اکنون برای محافظت از سرورهای Nginx در برابر درخواست‌های غیرمجاز، اجرای مستقیم درون wp-content/ را با پاسخ HTTP 403 Forbidden رد می‌کند.
  • امنیت: نام فایل بسته‌ها اکنون پسوند تصادفی رمزنگاری‌شدهٔ 12 نویسه‌ای دارد تا در پیکربندی‌های Nginx از فهرست‌کردن یا حدس‌زدن نشانی‌ها جلوگیری شود.
  • امنیت: از ذخیرهٔ دائمی فایل ایستای installer.php در محل نگه‌داری بسته‌ها جلوگیری شد؛ نصب‌کننده اکنون به‌صورت پویا و با سرآیندهای صحیح دانلود ارائه می‌شود.
  • رفع اشکال: فراخوانی نامعتبر Fs::mkdir() در JobRunner با Fs::ensure_dir() جایگزین شد تا خطای مهلک در نصب‌های تازهٔ وردپرس برطرف شود.
  • رفع اشکال: در صورت بروز خطای پیش‌بینی‌نشده در یکی از مراحل یا شکست کار، قفل به‌درستی آزاد و فایل آن پاک‌سازی می‌شود.
  • رفع اشکال: زمان‌بند کرون پس‌زمینه اکنون کارهای دستی را با استفاده از $job->option('type') به‌طور مطمئن تشخیص می‌دهد و از تداخل اجراکننده‌های هم‌زمان جلوگیری می‌کند.
  • کیفیت: افزونه همهٔ 5 دستهٔ بررسی رسمی WordPress Plugin Check (PCP) را با موفقیت پشت سر گذاشت.

1.0.0

  • نخستین انتشار عمومی.
  • موتور پشتیبان‌گیری قابل‌ازسرگیری، با پشتیبانی از فایل‌ها و نسخه‌های SQL خالص پایگاه داده.
  • نصب‌کنندهٔ مستقل (installer.php) با قابلیت جست‌وجو و جایگزینی عمیق در JSON و داده‌های سریال‌شده.
  • پیوند دائمی دانلود جدیدترین نسخهٔ پشتیبان، محافظت‌شده با احراز هویت مدیر.
  • کانال‌های اعلان از طریق رابط برنامه‌نویسی ربات تلگرام و بله، همراه با صف ارسال مجدد خودکار.
  • زمان‌بندی خودکار پشتیبان‌گیری ماهانه (تقویم جلالی برای fa_IR و تقویم میلادی برای زبان‌های دیگر).
  • سامانهٔ مدیریت نگه‌داری نسخه‌ها با سقف پیش‌فرض 3 بسته.
  • بین‌المللی‌سازی کامل (با backupino.pot و فهرست ترجمهٔ فارسی fa_IR) همراه با CSS منطقی برای چیدمان راست‌به‌چپ و چپ‌به‌راست.
  • یکنواخت‌سازی رقم‌های لاتین (0-9) در همهٔ رابط‌ها و تاریخ‌ها.
  • تقویت سخت‌گیرانهٔ امنیت: بدون تابع خطرناک، پیشگیری از حملهٔ Zip Slip و بررسی سطح دسترسی در نقاط پایانی REST API.
  • معماری کاملاً محلی‌محور، بدون وابستگی به شبکه‌های توزیع محتوای خارجی (CDN).
  • یکپارچه‌سازی فرمان‌های WP-CLI.