💾 آموزش کاربردی مدیریت هاست

آموزش بکاپ گرفتن در cPanel از طریق SSH؛ بکاپ کامل اکانت، فایل‌ها، دیتابیس و رفع خطاهای رایج

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

بکاپ گرفتن از cPanel با SSH یعنی چه؟

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

در cPanel دو نگاه مهم وجود دارد: بکاپ کامل سازگار با cPanel که معمولاً با pkgacct ساخته می‌شود، و بکاپ دستی که با ابزارهایی مثل tar برای فایل‌ها و mysqldump برای دیتابیس انجام می‌شود.

بکاپ کامل اکانت

برای انتقال یا بازیابی یک اکانت cPanel روی سرور دیگر مناسب است و معمولاً با فایل cpmove ساخته می‌شود.

بکاپ دستی فایل‌ها

برای ذخیره public_html، فایل‌های سایت، آپلودها یا یک مسیر خاص کاربرد دارد.

بکاپ دیتابیس

برای وردپرس، فروشگاه، انجمن یا هر برنامه PHP که به MySQL/MariaDB وابسته است ضروری است.

کدام روش بکاپ برای شما مناسب است؟

نیاز شما روش پیشنهادی توضیح
انتقال کامل اکانت cPanel pkgacct بهترین گزینه برای ساخت آرشیو کامل و قابل Restore در cPanel/WHM.
فقط بکاپ سایت وردپرسی tar + mysqldump فایل‌های سایت و دیتابیس را جداگانه ذخیره می‌کنید.
فضای دیسک کم است بکاپ به مسیر دیگر یا انتقال مستقیم نباید بکاپ بزرگ را روی همان پارتیشن پر بسازید.
پنل cPanel باز نمی‌شود SSH با root یا کاربر مجاز از طریق خط فرمان هنوز می‌توان فایل‌ها و دیتابیس را ذخیره کرد.
فقط دیتابیس لازم است mysqldump سریع‌تر از بکاپ کامل است و برای تغییرات دیتابیس مناسب است.

چک‌لیست مهم قبل از بکاپ گرفتن با SSH

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

سطح دسترسی را مشخص کنیدبرای pkgacct معمولاً نیاز به root دارید. اگر فقط دسترسی کاربر cPanel دارید، بهتر است از بکاپ دستی فایل و دیتابیس استفاده کنید.
حجم اکانت را بررسی کنیداگر اکانت ۳۰ گیگابایت است، انتظار نداشته باشید با ۵ گیگابایت فضای آزاد بکاپ کامل ساخته شود.
مسیر خروجی امن انتخاب کنیدبکاپ را داخل public_html نسازید. اگر مجبور شدید، بعد از دانلود سریعاً حذف کنید.
زمان مناسب انتخاب کنیدبرای سایت‌های پرترافیک، بکاپ سنگین را در ساعات خلوت اجرا کنید تا فشار روی CPU، Disk I/O و MySQL کمتر شود.
سلامت دیتابیس را در نظر بگیریداگر دیتابیس بزرگ یا حساس است، بکاپ دیتابیس را جداگانه هم بگیرید.

دستورهای بررسی وضعیت قبل از بکاپ

# بررسی فضای دیسک
df -h

# بررسی حجم یک اکانت cPanel
du -sh /home/USERNAME

# بررسی فایل‌های بزرگ داخل اکانت
find /home/USERNAME -type f -size +500M -exec ls -lh {} ; | sort -k5 -hr | head -n 30

# بررسی load سرور
uptime

# بررسی پردازش‌های سنگین
top

هشدار مهم درباره فضای دیسک

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

روش اول: بکاپ کامل اکانت cPanel با pkgacct

اگر به root سرور دسترسی دارید و می‌خواهید یک بکاپ کامل قابل انتقال از اکانت cPanel بسازید، روش استاندارد استفاده از اسکریپت pkgacct است. خروجی این روش معمولاً یک فایل cpmove یا آرشیو سازگار با WHM است که برای انتقال یا بازیابی اکانت استفاده می‌شود.

ساخت بکاپ کامل در مسیر دلخواه

# ساخت پوشه امن برای بکاپ
mkdir -p /backup/manual

# ساخت بکاپ کامل اکانت
/usr/local/cpanel/scripts/pkgacct USERNAME /backup/manual

# مشاهده خروجی
ls -lh /backup/manual/

در دستور بالا به‌جای USERNAME نام کاربری واقعی اکانت cPanel را قرار دهید. بهتر است مسیر خروجی جایی باشد که فضای کافی دارد و از وب عمومی قابل دانلود مستقیم نباشد.

بکاپ کامل با فشرده‌سازی کمتر یا فایل‌های split

برای اکانت‌های بسیار بزرگ، گاهی فشرده‌سازی زمان زیادی می‌گیرد یا انتقال یک فایل بزرگ سخت می‌شود. در این حالت می‌توانید از گزینه‌های cPanel مثل split یا nocompress استفاده کنید.

# ساخت بکاپ به بخش‌های کوچک‌تر
/usr/local/cpanel/scripts/pkgacct –split USERNAME /backup/manual

# بکاپ بدون فشرده‌سازی؛ سریع‌تر ولی حجیم‌تر
/usr/local/cpanel/scripts/pkgacct –nocompress USERNAME /backup/manual

بکاپ بدون بعضی بخش‌ها

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

# نمونه: ساخت بکاپ بدون لاگ‌ها
/usr/local/cpanel/scripts/pkgacct –skiplogs USERNAME /backup/manual

# نمونه: ساخت بکاپ بدون mail؛ فقط وقتی مطمئن هستید ایمیل‌ها لازم نیست
/usr/local/cpanel/scripts/pkgacct –skipmail USERNAME /backup/manual

چه زمانی pkgacct بهترین انتخاب است؟

  • وقتی می‌خواهید اکانت را به سرور cPanel دیگری منتقل کنید.
  • وقتی می‌خواهید بکاپی داشته باشید که WHM بتواند آن را Restore کند.
  • وقتی دیتابیس، ایمیل‌ها، دامنه‌ها و تنظیمات اکانت هم مهم هستند.
  • وقتی دسترسی root دارید و فضای کافی روی سرور موجود است.

روش دوم: بکاپ دستی فایل‌ها و دیتابیس از طریق SSH

اگر دسترسی root ندارید، یا فقط می‌خواهید سایت را جابه‌جا کنید، بکاپ دستی با tar و mysqldump روش ساده‌تری است. این روش برای وردپرس، لاراول، سایت‌های PHP و فروشگاه‌ها بسیار کاربردی است.

بکاپ گرفتن از فایل‌های public_html

cd /home/USERNAME
tar -czf backup-public_html-$(date +%F).tar.gz public_html
ls -lh backup-public_html-*.tar.gz

بکاپ گرفتن از کل Home کاربر

cd /home
tar -czf /backup/manual/USERNAME-home-$(date +%F).tar.gz USERNAME

بکاپ دیتابیس MySQL/MariaDB

برای سایت‌های وردپرسی یا فروشگاهی، فقط بکاپ فایل کافی نیست. باید دیتابیس را هم ذخیره کنید. نام دیتابیس، یوزر و رمز را معمولاً از فایل تنظیمات سایت مثل wp-config.php پیدا می‌کنید.

# پیدا کردن اطلاعات دیتابیس وردپرس
grep -E “DB_NAME|DB_USER|DB_PASSWORD|DB_HOST” /home/USERNAME/public_html/wp-config.php

# گرفتن خروجی SQL از دیتابیس
mysqldump -u DB_USER -p DB_NAME > /home/USERNAME/database-$(date +%F).sql

# فشرده‌سازی فایل SQL
gzip /home/USERNAME/database-$(date +%F).sql

بکاپ فایل و دیتابیس در یک پوشه مرتب

mkdir -p /home/USERNAME/backup-$(date +%F)
cd /home/USERNAME

tar -czf backup-$(date +%F)/files.tar.gz public_html
mysqldump -u DB_USER -p DB_NAME | gzip > backup-$(date +%F)/database.sql.gz

tar -czf site-backup-$(date +%F).tar.gz backup-$(date +%F)
ls -lh site-backup-$(date +%F).tar.gz

بکاپ دستی جایگزین کامل pkgacct نیست

بکاپ دستی معمولاً فایل‌ها و دیتابیس را نجات می‌دهد، اما ممکن است تنظیمات کامل cPanel، ایمیل‌ها، DNS Zone، SSL، Cron Jobها، FTP Userها و بعضی اطلاعات اکانت را شامل نشود. اگر هدف انتقال کامل اکانت cPanel است، pkgacct انتخاب حرفه‌ای‌تری است.

دانلود یا انتقال بکاپ بعد از ساخت

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

انتقال بکاپ به سرور دیگر با scp

scp /backup/manual/cpmove-USERNAME.tar.gz root@DESTINATION_SERVER_IP:/backup/

انتقال با rsync برای فایل‌های بزرگ

rsync -avh –progress /backup/manual/cpmove-USERNAME.tar.gz root@DESTINATION_SERVER_IP:/backup/

دانلود از سیستم شخصی با PowerShell یا Terminal

scp root@SERVER_IP:/backup/manual/cpmove-USERNAME.tar.gz “$env:USERPROFILEDownloads”

بررسی سلامت فایل بکاپ

# نمایش حجم فایل
ls -lh /backup/manual/cpmove-USERNAME.tar.gz

# تست لیست شدن محتویات آرشیو
tar -tzf /backup/manual/cpmove-USERNAME.tar.gz | head

# ساخت checksum برای اطمینان از انتقال سالم
sha256sum /backup/manual/cpmove-USERNAME.tar.gz

نکات مهم قبل از Restore بکاپ cPanel

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

Restore با restorepkg روی سرور مقصد

# انتقال فایل به /home یا /backup روی سرور مقصد
ls -lh /home/cpmove-USERNAME.tar.gz

# بازیابی اکانت از بکاپ
/usr/local/cpanel/scripts/restorepkg /home/cpmove-USERNAME.tar.gz

در بازیابی اکانت‌های حساس، قبل از Restore وضعیت دامنه، DNS، IP، نسخه PHP، MariaDB/MySQL، SSL و فضای دیسک را بررسی کنید. اگر نام کاربری روی سرور مقصد وجود دارد، نباید بدون بررسی Restore را اجرا کنید.

مشکلات رایج بکاپ cPanel از طریق SSH و راه‌حل

خطای ۱: No space left on device

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

df -h
du -sh /backup/* 2>/dev/null
du -sh /home/* | sort -h | tail -n 20

خطای ۲: Permission denied

برای pkgacct معمولاً باید root باشید. اگر با کاربر cPanel وارد شده‌اید، ممکن است فقط بتوانید از فایل‌های خودتان و دیتابیس خودتان بکاپ دستی بگیرید.

خطای ۳: بکاپ خیلی کند است یا سرور کند می‌شود

بکاپ گرفتن از اکانت بزرگ می‌تواند CPU، RAM، I/O و MySQL را درگیر کند. در ساعات خلوت بکاپ بگیرید، فایل‌های cache و backupهای قدیمی را حذف کنید و اگر اکانت خیلی بزرگ است از split یا nocompress استفاده کنید.

خطای ۴: دیتابیس در بکاپ دستی ناقص است

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

خطای ۵: فایل بکاپ داخل public_html ساخته شده و قابل دانلود است

این یک خطر امنیتی جدی است. بکاپ شامل فایل‌ها، دیتابیس، ایمیل یا اطلاعات حساس است. بکاپ را از public_html خارج کنید یا بعد از دانلود فوراً حذف کنید.

rm -f /home/USERNAME/public_html/*.tar.gz
rm -f /home/USERNAME/public_html/*.sql
rm -f /home/USERNAME/public_html/*.sql.gz

خطای ۶: restore انجام شد اما سایت خطای دیتابیس می‌دهد

نام دیتابیس، نام کاربر دیتابیس، رمز عبور، نسخه MySQL/MariaDB و دسترسی‌های دیتابیس را بررسی کنید. در وردپرس، فایل wp-config.php باید با دیتابیس Restore شده هماهنگ باشد.

خطای ۷: بعد از انتقال، ایمیل‌ها نیامده‌اند

اگر از بکاپ دستی فقط public_html و دیتابیس گرفته‌اید، ایمیل‌ها منتقل نمی‌شوند. برای انتقال ایمیل‌ها، باید mail directory و تنظیمات مربوطه را هم منتقل کنید یا از بکاپ کامل cPanel استفاده کنید.

چک‌لیست نهایی بکاپ امن cPanel با SSH

  • قبل از بکاپ، فضای دیسک را با df -h بررسی کنید.
  • برای انتقال کامل اکانت، تا حد امکان از pkgacct استفاده کنید.
  • برای سایت‌های وردپرسی، هم فایل‌ها و هم دیتابیس را بکاپ بگیرید.
  • بکاپ را داخل public_html نگه ندارید.
  • بعد از ساخت فایل، آن را با tar -tzf یا checksum بررسی کنید.
  • بکاپ را به یک مقصد خارجی یا سرور دیگر منتقل کنید.
  • فایل‌های بکاپ قدیمی را بدون برنامه روی سرور رها نکنید.
  • قبل از Restore روی سرور مقصد، نسخه PHP، دیتابیس، DNS و IP را بررسی کنید.

سوالات متداول درباره بکاپ گرفتن از cPanel با SSH

آیا برای بکاپ گرفتن از cPanel با SSH باید root داشته باشم؟

برای ساخت بکاپ کامل اکانت با pkgacct معمولاً دسترسی root لازم است. اما برای بکاپ دستی فایل‌ها و دیتابیس، در بسیاری از مواقع دسترسی SSH همان کاربر cPanel کافی است.

فایل cpmove چیست؟

فایل cpmove آرشیوی است که برای انتقال یا بازیابی اکانت cPanel روی سرورهای cPanel/WHM استفاده می‌شود. این فایل معمولاً با pkgacct ساخته می‌شود.

آیا بکاپ دستی tar و mysqldump برای مهاجرت کامل کافی است؟

برای مهاجرت ساده یک سایت ممکن است کافی باشد، اما برای مهاجرت کامل اکانت cPanel بهتر است از pkgacct استفاده شود چون تنظیمات بیشتری از اکانت را پوشش می‌دهد.

چرا بکاپ کامل cPanel حجم زیادی دارد؟

چون ممکن است شامل فایل‌های سایت، ایمیل‌ها، دیتابیس‌ها، لاگ‌ها، فایل‌های cache، backupهای قدیمی و تنظیمات اکانت باشد. قبل از بکاپ بهتر است فایل‌های غیرضروری را بررسی کنید.

آیا می‌توان بکاپ را مستقیم به سرور دیگر منتقل کرد؟

بله، بعد از ساخت فایل می‌توانید با scp یا rsync آن را به سرور دیگر منتقل کنید. برای فایل‌های بزرگ، rsync با progress و امکان ادامه انتقال معمولاً بهتر است.

جمع‌بندی

برای بکاپ گرفتن از cPanel از طریق SSH، ابتدا هدف را مشخص کنید. اگر انتقال کامل اکانت یا Restore در WHM می‌خواهید، pkgacct مسیر حرفه‌ای‌تری است. اگر فقط می‌خواهید فایل‌ها و دیتابیس یک سایت را ذخیره کنید، ترکیب tar و mysqldump ساده، سریع و کاربردی است. در هر دو حالت، فضای دیسک، محل ذخیره بکاپ، امنیت فایل خروجی، سلامت دیتابیس و امکان Restore را جدی بگیرید؛ بکاپی ارزشمند است که در زمان نیاز واقعاً قابل استفاده باشد.