انتقال اطلاعات از هاست به هاست دیگر با کد PHP | آموزش انتقال فایل بدون FTP

0
انتقال اطلاعات از هاست به هاست دیگر

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

البته من یه اسکریپت خیلی حرفه ای با استفاده از gpt اماده کردم که خیلی جوابه اگه میخوایش اینجا کلیک کن

معمولاً برای انتقال فایل‌ها از روش‌هایی مانند FTP، File Manager هاست، کنترل پنل سی‌پنل یا دایرکت ادمین استفاده می‌شود. اما در بعضی شرایط ممکن است دسترسی FTP نداشته باشید، سرعت انتقال از طریق مرورگر پایین باشد یا حجم فایل‌ها زیاد باشد. در چنین مواقعی استفاده از یک اسکریپت ساده PHP می‌تواند فرآیند انتقال فایل را بسیار راحت‌تر کند.

یکی از ساده‌ترین روش‌ها برای انتقال فایل از یک هاست به هاست دیگر، استفاده از تابع copy در PHP است. با کمک این تابع می‌توان یک فایل را از یک آدرس اینترنتی دریافت کرده و روی هاست مقصد ذخیره کرد.

کدی که برای این کار استفاده می‌شود:

<?php 
copy("url","name.zip");
?>

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

 

انتقال اطلاعات از هاست به هاست دیگر چیست؟

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

برای مثال فرض کنید سایت شما روی هاست قدیمی قرار دارد و تصمیم گرفته‌اید آن را به یک شرکت هاستینگ جدید منتقل کنید. در این حالت باید اطلاعات سایت شامل موارد زیر را منتقل کنید:

  • فایل‌های وردپرس یا سیستم مدیریت محتوا
  • تصاویر و فایل‌های آپلود شده
  • قالب سایت
  • افزونه‌ها
  • فایل‌های تنظیمات
  • دیتابیس
  • ایمیل‌های ساخته شده روی دامنه (در صورت نیاز)

فرآیند انتقال باید به شکلی انجام شود که سایت بدون مشکل روی سرور جدید اجرا شود و کاربران با خطا مواجه نشوند.

 

چرا از کد PHP برای انتقال فایل استفاده کنیم؟

روش‌های معمول انتقال فایل مانند FTP بسیار کاربردی هستند، اما همیشه بهترین گزینه نیستند.

گاهی ممکن است:

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

در چنین شرایطی می‌توانید از PHP کمک بگیرید.

تابع copy() در PHP به شما اجازه می‌دهد یک فایل را از یک مسیر به مسیر دیگر منتقل کنید.

به عنوان مثال:

<?php
copy("https://example.com/backup.zip","backup.zip");
?>

این کد فایل موجود در آدرس:

https://example.com/backup.zip

را دریافت کرده و با نام:

backup.zip

در هاست مقصد ذخیره می‌کند.

 

آموزش انتقال فایل از هاستی به هاست دیگر با PHP

برای انجام این کار مراحل زیر را دنبال کنید.

مرحله اول: ساخت فایل PHP

ابتدا وارد هاست مقصد شوید.

در مسیر اصلی سایت (معمولاً public_html) یک فایل ایجاد کنید.

برای مثال:

transfer.php

سپس کد زیر را داخل آن قرار دهید:

<?php
copy("URL-FILE","NEW-NAME.zip");
?>
 

مرحله دوم: قرار دادن لینک فایل مبدا

در قسمت اول کد باید آدرس فایل موجود روی هاست قبلی را وارد کنید.

مثلاً:

<?php
copy("https://oldhost.com/backup.zip","backup.zip");
?>

در این مثال:

فایل:

backup.zip

از هاست قدیمی دریافت شده و در هاست جدید ذخیره می‌شود.

 

مرحله سوم: اجرای فایل PHP

حالا مرورگر را باز کنید و آدرس فایل را وارد کنید:

yourdomain.com/transfer.php

با اجرای این فایل، PHP شروع به دریافت فایل از سرور مبدا می‌کند.

اگر فایل با موفقیت منتقل شود، فایل ZIP در هاست جدید ایجاد خواهد شد.

 

بررسی عملکرد تابع copy در PHP

تابع:

copy()

یکی از توابع داخلی PHP برای کپی کردن فایل‌ها است.

ساختار کلی آن:

copy(source, destination);

دو مقدار دریافت می‌کند:

source

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

مثال:

https://domain.com/file.zip

destination

نام یا مسیر ذخیره فایل جدید.

مثال:

new-file.zip
 

انتقال کل سایت با کد PHP امکان‌پذیر است؟

بله، اما باید به یک نکته مهم توجه کنید.

کدی مانند:

copy("url","name.zip");

فقط یک فایل را منتقل می‌کند.

اگر قصد انتقال کامل سایت را دارید، ابتدا باید فایل‌های سایت را به صورت یک فایل فشرده ZIP آماده کنید.

مثلاً:

website-backup.zip

سپس همان فایل را با PHP منتقل کنید.

برای انتقال کامل سایت معمولاً این موارد انجام می‌شود:

  1. گرفتن بکاپ از فایل‌ها
  2. گرفتن خروجی دیتابیس
  3. انتقال فایل ZIP
  4. استخراج فایل‌ها در هاست جدید
  5. انتقال دیتابیس
  6. تنظیم فایل کانفیگ سایت
 

انتقال دیتابیس سایت هنگام مهاجرت هاست

یکی از مهم‌ترین بخش‌های انتقال سایت، دیتابیس است.

فایل‌های سایت به تنهایی کافی نیستند.

در سایت‌های وردپرسی اطلاعاتی مانند:

  • نوشته‌ها
  • کاربران
  • تنظیمات قالب
  • تنظیمات افزونه‌ها
  • محصولات ووکامرس
  • سفارش‌ها

داخل دیتابیس ذخیره می‌شوند.

برای انتقال دیتابیس معمولاً باید:

  1. وارد phpMyAdmin هاست قدیمی شوید.
  2. دیتابیس را Export کنید.
  3. فایل SQL را دانلود کنید.
  4. در هاست جدید دیتابیس ایجاد کنید.
  5. فایل SQL را Import کنید.

بعد از آن باید اطلاعات اتصال دیتابیس را در فایل تنظیمات تغییر دهید.

در وردپرس این اطلاعات داخل فایل:

wp-config.php

قرار دارد.

 

مشکلات احتمالی هنگام استفاده از copy در PHP

اگرچه روش انتقال با PHP ساده است، اما همیشه بدون مشکل نیست.

محدودیت حجم فایل

بعضی هاست‌ها محدودیت‌هایی برای دریافت فایل دارند.

برای مثال:

  • محدودیت Memory Limit
  • محدودیت زمان اجرای PHP
  • محدودیت حجم Upload

ممکن است باعث توقف انتقال شود.

 

بسته بودن Allow URL fopen

تابع copy برای دریافت فایل از URL نیاز دارد که گزینه زیر فعال باشد:

allow_url_fopen

اگر این گزینه غیرفعال باشد، انتقال انجام نمی‌شود.

برای بررسی آن می‌توانید از:

<?php
phpinfo();
?>

استفاده کنید.

 

قطع شدن ارتباط سرور

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

برای فایل‌های چند گیگابایتی بهتر است از روش‌های حرفه‌ای‌تر استفاده کنید.

 

افزایش امنیت هنگام انتقال فایل با PHP

یکی از اشتباهات رایج این است که فایل انتقال PHP را بعد از پایان کار حذف نمی‌کنند.

فرض کنید فایل زیر روی سایت باقی بماند:

transfer.php

افراد دیگر ممکن است بتوانند آن را اجرا کنند.

بعد از پایان انتقال:

حتماً فایل PHP را حذف کنید.

همچنین:

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

انتقال سایت وردپرسی با PHP

برای سایت‌های وردپرسی معمولاً مراحل زیر انجام می‌شود:

۱. فشرده‌سازی فایل‌های وردپرس

تمام فایل‌های داخل:

public_html

را ZIP کنید.

 

۲. انتقال فایل ZIP

با کد:

<?php
copy("https://oldsite.com/wp-backup.zip","wp-backup.zip");
?>

فایل را منتقل کنید.

 

۳. استخراج فایل‌ها

پس از انتقال:

فایل ZIP را Extract کنید.

 

۴. انتقال دیتابیس

دیتابیس قدیمی را وارد دیتابیس جدید کنید.

 

۵. تغییر اطلاعات اتصال

در فایل:

wp-config.php

اطلاعات زیر را تغییر دهید:

define('DB_NAME','database_name');

define('DB_USER','database_user');

define('DB_PASSWORD','password');

define('DB_HOST','localhost');
 

مقایسه انتقال با PHP و FTP

روش سرعت نیاز به دسترسی FTP مناسب برای
PHP Copy بالا خیر انتقال فایل مستقیم
FTP متوسط بله انتقال معمول سایت
File Manager متوسط خیر فایل‌های کم حجم
SSH بسیار بالا نیاز به دسترسی سرور سایت‌های بزرگ
 

بهترین روش برای انتقال هاست چیست؟

انتخاب روش مناسب به شرایط سایت بستگی دارد.

برای سایت‌های کوچک:

  • استفاده از File Manager
  • FTP
  • افزونه‌های مهاجرت وردپرس

کافی است.

برای سایت‌های بزرگ:

  • انتقال مستقیم سرور به سرور
  • استفاده از SSH
  • انتقال با PHP
  • ابزارهای Migration حرفه‌ای

گزینه‌های بهتری هستند.

 

آیا انتقال فایل با PHP امن است؟

اگر درست استفاده شود، بله.

اما باید چند نکته رعایت شود:

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

خطاهای رایج هنگام انتقال فایل با PHP

خطای Permission denied

این خطا یعنی PHP اجازه نوشتن فایل را ندارد.

راه حل:

بررسی سطح دسترسی پوشه مقصد.

 

خطای Failed to open stream

معمولاً به دلیل:

  • اشتباه بودن URL
  • حذف شدن فایل مبدا
  • بسته بودن allow_url_fopen

رخ می‌دهد.

 

انتقال ناقص فایل

دلایل:

  • قطع ارتباط
  • محدودیت زمان اجرا
  • حجم زیاد فایل

است.

 

جایگزین حرفه‌ای‌تر برای copy در PHP

برای فایل‌های بزرگ‌تر می‌توان از روش‌های دیگری استفاده کرد.

مانند:

  • CURL
  • SSH
  • Rsync
  • انتقال مستقیم سرور

مثلاً با CURL کنترل بیشتری روی انتقال دارید:

  • نمایش درصد پیشرفت
  • مدیریت خطا
  • ادامه دانلود

اما برای انتقال‌های ساده، تابع copy کاملاً کاربردی است.

 

اسکریپت حرفه ای انتقال فایل بین هاست ها

جمع‌بندی

انتقال اطلاعات از هاستی به هاست دیگر با کد PHP یکی از روش‌های ساده و سریع برای جابه‌جایی فایل‌ها بین دو سرور است. تابع copy() در PHP این امکان را فراهم می‌کند که بدون استفاده از FTP، یک فایل را از یک آدرس اینترنتی دریافت کرده و روی هاست مقصد ذخیره کنید.

کدی مانند:

<?php 
copy("url","name.zip"); 
?>

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

البته برای انتقال کامل یک سایت باید علاوه بر فایل‌ها، دیتابیس، تنظیمات و ساختار سایت نیز منتقل شود.

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *