══════════ بکاپ کامل و بازیابی (دستی + خودکار) ══════════

چه چیزی بکاپ می‌شود
  • همهٔ داده‌ها: دیتابیس گفتگوها و درخواست‌ها، فایل‌های مشتری، تنظیمات، ربات، درخت، فرم‌ها، ساعت کاری، لیبل‌ها، لوگو و …
  • در صورت روشن بودن «فایل‌های برنامه هم در بکاپ باشند»: اسکن کامل کل پوشهٔ سایت (php/html/js/css/json/آیکون‌ها و …)
    → اگر بعداً فایل یا آیتم جدیدی اضافه کنید، بکاپ بعدی خودش آن را هم می‌گیرد (نیازی به تنظیم دستی لیست فایل نیست).

بکاپ دستی
  پنل مدیریت ← تب «💾 بکاپ» ← دکمهٔ «ساخت بکاپ الان»
  بعد از ساخت، در فهرست ظاهر می‌شود و با «⬇ دانلود» می‌توانید روی گوشی/کامپیوتر ذخیره کنید.

بکاپ خودکار (نسخهٔ جدید: ساعتی + اسکن تغییرات)
  • «هر چند وقت بررسی شود؟» را روی «هر ۱ ساعت» (یا ۳۰ دقیقه، ۲، ۶، ۱۲ ساعت) بگذارید.
  • اگر «اول اسکن کن؛ فقط اگر چیزی تغییر کرده…» روشن باشد، در هر نوبت اول کل سایت اسکن می‌شود
    (فایل برنامهٔ جدید، فایل تغییرکرده/حذف‌شده، دیتابیس و فایل‌های مشتری). فقط اگر تفاوتی با بکاپ قبلی بود بکاپ ساخته می‌شود.
    نتیجهٔ آخرین اسکن (چند فایل جدید/تغییرکرده) زیر دکمهٔ ذخیره نوشته می‌شود.
  • بررسی‌ها فقط وقتی انجام می‌شود که پنل مدیریت باز باشد (یا درخواستی با نشست مدیر به سرور برسد)؛
    پنل هر ۴۵ ثانیه سرور را صدا می‌زند و سرور طبق بازهٔ تنظیم‌شده تصمیم می‌گیرد. بدون cron کار می‌کند.
  • «نگهداری آخرین» فقط برای بکاپ‌های خودکار است (تا ۲۰۰)؛ بکاپ‌های دستی جدا شمرده می‌شوند.
  • حالت «روزانه» همان رفتار قبلی است (روزی یک‌بار بعد از ساعت تنظیم‌شده).

روش قدیمی (روزانه)
  در همان تب:
    • تیک «بکاپ خودکار فعال باشد»
    • ساعت و دقیقه به وقت تهران (مثلاً ۰۳:۰۰ نیمه‌شب)
    • تعداد نگه‌داری (مثلاً ۷ تا آخری؛ قدیمی‌ترها خودکار پاک می‌شوند)
  هر بار که مدیر وارد پنل شود، سیستم چک می‌کند؛ اگر از ساعت تنظیم‌شده گذشته و امروز هنوز بکاپ خودکار نگرفته باشد، یکی می‌سازد.
  (روی هاست‌های بدون cron هم کار می‌کند؛ کافی است روزی یک‌بار پنل را باز کنید.)

دانلود
  هر ردیف در فهرست دکمهٔ «⬇ دانلود» دارد؛ فایل ZIP است و همهٔ محتوا داخلش است.

بازیابی
  دکمهٔ «↩ بازیابی» روی همان بکاپ:
    • Cancel = فقط داده‌ها برگردند (گفتگو، درخواست، تنظیمات، فایل‌ها)
    • OK = داده + فایل‌های برنامه (کد) هم برگردند
  قبل از بازیابی حتماً یک بکاپ تازه بگیرید. بعد از بازیابی صفحه را یک‌بار رفرش کنید.

مسیر فایل‌ها روی سرور
  data/backups/backup-YYYY-MM-DD_HH-MM-SS-manual.zip
  data/backups/backup-YYYY-MM-DD_HH-MM-SS-auto.zip
  تنظیمات: data/c3-backup.json

API (برای مدیر واردشده)
  GET  api/admin/backup          فهرست + تنظیمات
  POST api/admin/backup/settings بدنه: {enabled, hour, minute, keep, include_code}
  POST api/admin/backup/create
  GET  api/admin/backup/download?name=...
  POST api/admin/backup/delete   بدنه: {name}
  POST api/admin/backup/restore  بدنه: {name, restore_code}

نکته
  برای بازیابی به افزونهٔ PHP ZipArchive نیاز است (روی اکثر هاست‌ها فعال است).
  ساخت بکاپ بدون ZipArchive هم ممکن است (ZIP سبک ساخته می‌شود).

فایل‌های تغییرکرده: api.php ، panel-aaf2d6f1b2e7.html
