عامل پشتیبان‌گیر هاست پوشه (cPanel، DirectAdmin و هر هاست لینوکسی با PHP و Cron)
==========================================================================

این عامل از فایل‌ها و پایگاه‌های داده‌ی MySQL/MariaDB حساب هاست شما طبق زمان‌بندی‌ای که در پنل پوشه
تعیین می‌کنید پشتیبان می‌گیرد و آن را در پوشه‌ی «هاست — دامنه‌ی شما» در پوشه ذخیره می‌کند.

نیازمندی‌ها: PHP 7.4 یا بالاتر از خط فرمان (با افزونه‌های curl و zlib؛ mysqli برای پایگاه داده)،
امکان Cron Jobs در پنل هاست. mysqldump اگر باشد استفاده می‌شود؛ اگر نباشد، خود عامل جدول‌ها را خروجی می‌گیرد.

نصب
----
۱. فایل pooshe-agent.php را با File Manager پنل در پوشه‌ی خانه (کنار public_html، نه داخل آن) بارگذاری کنید.
۲. در پنل پوشه: «پشتیبان سایت و هاست» (در منوی پنل)، دامنه را وارد و «ساخت کلید هاست» را بزنید.
۳. در Terminal پنل (یا SSH):
       php ~/pooshe-agent.php connect          ← کلید را وقتی پرسید بچسبانید و Enter بزنید
       php ~/pooshe-agent.php db detect --add   ← پایگاه‌های داده‌ی وردپرس و لاراول را خودش پیدا می‌کند
       php ~/pooshe-agent.php db add NAME USER  ← یا دستی (رمز را وقتی پرسید وارد کنید)
       php ~/pooshe-agent.php cron              ← خط cron پیشنهادی را چاپ می‌کند
۴. در Cron Jobs پنل، همان خط را با زمان «هر ۱۵ دقیقه» اضافه کنید. عامل هر بار فقط از پوشه می‌پرسد
   «وقت پشتیبان رسیده؟» و اگر رسیده باشد پشتیبان می‌گیرد.

اگر Terminal ندارید: می‌توانید دستورهای مرحله‌ی ۳ را یک‌بار به‌صورت Cron اجرا کنید؛ برای connect کلید را
در فایلی با دسترسی ۶۰۰ بگذارید و  php ~/pooshe-agent.php connect --key-file=/home/USER/key.txt  را بزنید،
سپس فایل کلید را پاک کنید.

دستورها
-------
  status                  وضعیت اتصال، زمان‌بندی و آخرین پشتیبان
  backup                  همین حالا پشتیبان بگیر
  list                    فهرست پشتیبان‌ها
  restore ID --to=DIR     بازگردانی فایل‌ها در پوشه‌ای تازه (روی سایت فعلی نمی‌نویسد)
  restore ID --db=NAME --yes [--into=OTHER]   بازگردانی پایگاه داده
  restore ID --cpanel-full=DIR   ساخت دوباره‌ی فایل پشتیبان کامل cPanel (بازگردانی آن با WHM یا پشتیبانی هاست)
  exclude add PATH        مسیرهایی که نمی‌خواهید پشتیبان گرفته شوند (نسبت به پوشه‌ی خانه)
  disconnect              قطع اتصال

چه چیزهایی پشتیبان گرفته نمی‌شود
--------------------------------
کلیدهای خصوصی و گواهی‌ها (ssl، .ssh)، اطلاعات ورود (.my.cnf و .pgpass)، لاگ‌ها، کش‌ها، tmp، سطل زباله،
پشتیبان‌های قبلی خود cPanel و پوشه‌ی خود عامل (.pooshe). ایمیل‌ها (mail و etc) فقط وقتی در پنل پوشه
«ایمیل‌ها» را روشن کنید. پیوندهای نمادین (symlink) دنبال نمی‌شوند.

پشتیبان کامل cPanel
-------------------
اگر در پنل پوشه «پشتیبان کامل cPanel» را روشن کنید، عامل پشتیبان کامل خود cPanel (ایمیل، DNS، تنظیمات
حساب و…) را هم با uapi می‌سازد، منتظر می‌ماند تا کامل شود، آن را به پوشه می‌فرستد و از پوشه‌ی خانه پاک
می‌کند. بازگردانی این فایل با WHM یا پشتیبانی هاست انجام می‌شود.

بازگردانی بدون عامل
-------------------
هر پشتیبان از چند فایل gzip تشکیل شده که پشت سر هم یک فایل معمولی می‌شوند:
       cat files-*.tar.gz | tar xzf -
       cat db-NAME-*.sql.gz | gunzip | mysql NAME
       cat cpanel-full-*.gz | gunzip > backup.tar.gz   ← پشتیبان کامل cPanel

امنیت
-----
- کلید اتصال فقط به پوشه‌ی همین هاست در پوشه دسترسی دارد و در ‎~/.pooshe/config.json با دسترسی ۶۰۰ نگه
  داشته می‌شود. رمز پایگاه‌های داده هم همان‌جا می‌ماند و هرگز به پوشه فرستاده نمی‌شود.
- همه‌ی ارتباط‌ها با HTTPS و بررسی گواهی است. هر فایل پشتیبان در پوشه بررسی ویروس می‌شود و پشتیبان فقط
  وقتی «موفق» است که اثر انگشت SHA-256 همه‌ی فایل‌ها با نسخه‌ی هاست یکی باشد.
- با قطع اتصال در پنل پوشه، کلید همان لحظه باطل می‌شود.

مجوز: GPL-2.0-or-later
