چرا بازگردانی بکاپ معمولاً سختتر از گرفتن بکاپ است؟
بیشتر مدیران سایت، گرفتن بکاپ را جدی میگیرند؛ اما وقتی پای بازگردانی بکاپ به میان میآید، تازه مشکلات شروع میشود. فایلها را آپلود میکنید، دیتابیس را import میکنید، اما سایت ارور میدهد. این مقاله دقیقاً برای همین لحظه نوشته شده است: وقتی باید یک سایت را از روی بکاپ برگردانید و نمیخواهید وسط راه گیر کنید.
در این راهنما، فرض میکنیم با سیپنل یا دایرکتادمین کار میکنید و بکاپ شما شامل دو بخش اصلی است: فایلهای سایت (شامل کدهای PHP، تصاویر، قالب و افزونهها) و خروجی دیتابیس (فایل SQL). ترتیب کار مهم است: اول فایلها، بعد دیتابیس، و در نهایت بررسی سلامت. اگر این ترتیب را رعایت نکنید، ممکن است سایت شما نیمهکاره بماند.
مرحله اول: آمادهسازی قبل از بازگردانی بکاپ
قبل از هر کاری، یک بررسی سریع انجام دهید تا از فاجعه جلوگیری کنید:
- فضای هاست را چک کنید: در سیپنل، بخش
Disk Usageرا باز کنید و مطمئن شوید حداقل دو برابر حجم بکاپ، فضای خالی دارید. اگر بکاپ ۲ گیگابایت است، حداقل ۴ گیگابایت فضا نیاز دارید. - نسخه PHP را یادداشت کنید: اگر بکاپ قدیمی است و سایت شما با PHP 7.4 کار میکرد، حالا که PHP 8.2 روی سرور فعال است، ممکن است کدهای قدیمی خطا بدهند. در سیپنل، بخش
Select PHP Versionرا چک کنید. - یک بکاپ تازه از وضعیت فعلی بگیرید: اگر سایت شما الان خراب است، باز هم قبل از بازگردانی، از فایلها و دیتابیس فعلی یک کپی بگیرید. شاید بعداً به یک فایل خاص نیاز پیدا کنید.
ابزارهای لازم
برای بازگردانی بکاپ به این ابزارها نیاز دارید:
- یک کلاینت FTP/SFTP مثل FileZilla برای آپلود فایلها
- دسترسی به phpMyAdmin (در سیپنل) یا ابزار مشابه
- دسترسی SSH (اختیاری، اما برای سایتهای بزرگ توصیه میشود)
مرحله دوم: بازگردانی فایلهای سایت
این مرحله سادهترین بخش است، اما اشتباهات رایجی دارد. اگر بکاپ شما یک فایل فشرده مثل site-backup.zip است، دو راه دارید:
روش اول: آپلود و استخراج در هاست
- فایل فشرده را از طریق FileZilla به پوشه
public_html(یاwwwدر دایرکتادمین) آپلود کنید. - در سیپنل، وارد
File Managerشوید و فایل را انتخاب کنید. - روی فایل راستکلیک کرده و گزینه
Extractرا بزنید. - مسیر استخراج را
/public_htmlقرار دهید و Extract را بزنید.
اگر حجم بکاپ بالای ۵۰۰ مگابایت است، استخراج از طریق File Manager ممکن است timeout بدهد. در این حالت، از SSH استفاده کنید:
cd /home/username/public_html
unzip site-backup.zip
اگر فایل شما .tar.gz است:
tar -xzvf site-backup.tar.gz
روش دوم: بازگردانی کامل از بکاپ سیپنل
اگر بکاپ شما از طریق خود سیپنل گرفته شده (فایلهایی با پسوند .tar.gz در پوشه backup)، میتوانید از بخش Backup در سیپنل، گزینه Restore a Home Directory Backup را انتخاب کنید. این روش تمام فایلها را به جای اصلی برمیگرداند.
public_html/site-backup/ قرار میگیرند نه خود public_html. نتیجه: سایت شما با آدرس example.com/site-backup بالا میآید. بعد از استخراج، حتماً بررسی کنید که فایل index.php یا wp-config.php مستقیماً در public_html باشد.مرحله سوم: بازگردانی دیتابیس
بعد از فایلها، نوبت دیتابیس است. این مرحله حساسترین بخش بازگردانی بکاپ است، چون یک خطای کوچک میتواند کل دادهها را از بین ببرد.
ساخت دیتابیس جدید
اگر دیتابیس قبلی حذف شده یا نام آن تغییر کرده، اول یک دیتابیس جدید بسازید:
- در سیپنل، وارد
MySQL Databasesشوید. - یک دیتابیس جدید با نام دلخواه بسازید (مثلاً
mydb_backup). - یک کاربر جدید بسازید و تمام دسترسیها (ALL PRIVILEGES) را به آن بدهید.
- نام دیتابیس، کاربر و رمز را یادداشت کنید؛ بعداً در فایل کانفیگ سایت نیاز خواهید داشت.
Import فایل SQL
حالا فایل .sql را import کنید:
- وارد phpMyAdmin شوید.
- دیتابیس جدید را از منوی سمت چپ انتخاب کنید.
- روی تب
Importکلیک کنید. - فایل SQL را انتخاب کنید و دکمه
Goرا بزنید.
اگر فایل SQL بزرگ است (بیش از ۵۰ مگابایت)، phpMyAdmin معمولاً خطای timeout میدهد. راهحل: فایل را با SSH import کنید:
mysql -u username -p mydb_backup < /home/username/backup.sql
اگر فایل فشرده است، اول از حالت فشرده خارج کنید:
gunzip backup.sql.gz
mysql -u username -p mydb_backup < backup.sql
بهروزرسانی فایل کانفیگ
بعد از import، باید اطلاعات اتصال دیتابیس را در فایل کانفیگ سایت اصلاح کنید:
- وردپرس: فایل
wp-config.phpرا ویرایش کنید و مقادیرDB_NAME،DB_USERوDB_PASSWORDرا با اطلاعات جدید جایگزین کنید. - لاراول: فایل
.envرا ویرایش کنید و مقادیرDB_DATABASE،DB_USERNAMEوDB_PASSWORDرا تغییر دهید. - جوملا: فایل
configuration.phpرا ویرایش کنید.
Table already exists بگیرید. راهحل: قبل از import، تمام جداول قبلی را Drop کنید. در phpMyAdmin، دیتابیس را انتخاب کنید، تب Operations را بزنید و گزینه Drop all tables را انتخاب کنید. یا در SSH:
mysql -u username -p -e "DROP DATABASE mydb_backup; CREATE DATABASE mydb_backup;"
مرحله چهارم: بررسی سلامت پس از بازگردانی
بعد از بازگردانی بکاپ، سایت را باز کنید. اگر ارور دیدید، نترسید. اینها رایجترین مشکلات و راهحلهایشان است:
بررسی فایلها و پرمیشنها
اولین کاری که میکنید، بررسی پرمیشن فایلهاست. پرمیشن صحیح برای پوشهها 755 و برای فایلها 644 است. اگر سایت ارور Permission denied داد، از SSH این دستور را اجرا کنید:
find /home/username/public_html -type d -exec chmod 755 {} \;
find /home/username/public_html -type f -exec chmod 644 {} \;
بررسی اتصال دیتابیس
اگر ارور Error establishing a database connection دیدید، یعنی اطلاعات دیتابیس در فایل کانفیگ اشتباه است. سه مورد را چک کنید:
- نام دیتابیس دقیقاً همانی است که در سیپنل ساختهاید؟ (معمولاً با پیشوند username_ شروع میشود)
- نام کاربری و رمز درست است؟
- هاست دیتابیس
localhostاست یا آدرس دیگری؟
بررسی لینکها و آدرس سایت
اگر سایت بالا آمد اما تصاویر و لینکها خراب هستند، مشکل از آدرس سایت است. در وردپرس، این کار را از طریق phpMyAdmin انجام دهید:
UPDATE wp_options SET option_value = 'https://example.com' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'https://example.com' WHERE option_name = 'home';
اگر سایت شما از وردپرس استفاده نمیکند، ممکن است لازم باشد فایل .htaccess را بازنویسی کنید. در سیپنل، وارد File Manager شوید، فایل .htaccess را باز کنید و مطمئن شوید محتوای آن با نسخه بکاپ مطابقت دارد.
بررسی خطاهای PHP
اگر صفحه سفید (White Screen of Death) دیدید، خطاهای PHP را فعال کنید. در فایل wp-config.php (برای وردپرس) این خط را اضافه کنید:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
سپس فایل wp-content/debug.log را بررسی کنید. رایجترین خطا بعد از بازگردانی بکاپ، ناسازگاری نسخه PHP است. اگر خطای مربوط به توابع قدیمی میبینید، نسخه PHP را در سیپنل به نسخهای که سایت با آن کار میکرد برگردانید.
نکات تکمیلی برای بازگردانی موفق
بازگردانی سایتهای بزرگ
اگر سایت شما بیش از ۵ گیگابایت حجم دارد، بازگردانی از طریق FTP زمانبر است. بهترین راه، استفاده از SSH و ابزار rsync است:
rsync -avz --progress /home/backup/site/ /home/username/public_html/
این روش سریعتر است و اگر ارتباط قطع شود، میتوانید همان دستور را دوباره اجرا کنید تا از جایی که مانده ادامه دهد.
بازگردانی دیتابیس با ابزارهای تخصصی
برای دیتابیسهای خیلی بزرگ (بیش از ۱ گیگابایت)، از ابزار BigDump استفاده کنید. این اسکریپت PHP را در پوشه سایت آپلود کنید و فایل SQL را از طریق مرورگر import کنید. این روش برای هاستهای اشتراکی که SSH ندارند، بهترین گزینه است.
جمعبندی
بازگردانی بکاپ اگر با ترتیب درست انجام شود، کار پیچیدهای نیست. خلاصه مراحل:
- فضا و نسخه PHP را بررسی کنید.
- فایلها را در
public_htmlبازگردانی کنید. - دیتابیس جدید بسازید و فایل SQL را import کنید.
- فایل کانفیگ را با اطلاعات دیتابیس جدید بهروزرسانی کنید.
- پرمیشنها، لینکها و خطاهای PHP را بررسی کنید.
اگر این مراحل را بهترتیب انجام دهید، در ۹۰ درصد موارد سایت شما بدون مشکل بالا میآید. برای ۱۰ درصد باقیمانده، لاگهای خطا را بررسی کنید و مطمئن شوید نسخه PHP و افزونهها با بکاپ شما سازگار هستند. اگر هاست شما از ابزار مدیریت بکاپ خودکار پشتیبانی میکند (بسیاری از سرویسهای هاستینگ ایران چنین امکانی دارند)، حتماً از آن استفاده کنید تا در مواقع اضطراری، بازگردانی بکاپ در چند کلیک انجام شود.
دیدگاهها ۰
هنوز دیدگاهی ثبت نشده؛ اولین نفر باشید!