سامانه فعالآپتایم 99.9%دیتاسنتر: ایران / مبین‌وانتحویل آنی و خودکار
← بلاگ

انتقال فایل به سرور مجازی با SCP، SFTP و rsync

2 مرداد 1405

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

روش ۱: SCP — سریع‌ترین راه برای کارهای کوچک

SCP روی همان بستر SSH کار می‌کند، پس اگر SSH دارید نیازی به نصب چیزی نیست.

ارسال فایل از کامپیوتر به سرور:

scp index.html root@SERVER_IP:/var/www/html/

ارسال یک پوشه کامل:

scp -r ./mysite root@SERVER_IP:/var/www/

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

scp root@SERVER_IP:/var/backups/db.sql.gz ./

اگر پورت SSH را تغییر داده‌اید، با حرف بزرگ -P مشخص کنید:

scp -P 2222 file.zip root@SERVER_IP:/root/

روش ۲: SFTP گرافیکی با FileZilla

اگر ترجیح می‌دهید فایل‌ها را با ماوس جابه‌جا کنید، FileZilla بهترین گزینه است:

  1. FileZilla را نصب و باز کنید.
  2. از منوی File گزینه Site Manager را بزنید.
  3. Protocol را روی SFTP - SSH File Transfer Protocol بگذارید (نه FTP معمولی).
  4. Host را IP سرور، Port را ۲۲، User را root و رمز یا فایل کلید را وارد کنید.
  5. Connect را بزنید.

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

نکته امنیتی: هرگز از FTP ساده استفاده نکنید؛ رمز شما بدون رمزنگاری روی شبکه منتقل می‌شود. SFTP از همان کانال امن SSH استفاده می‌کند.

روش ۳: rsync — بهترین گزینه برای بکاپ و به‌روزرسانی

مزیت بزرگ rsync این است که فقط تفاوت‌ها را منتقل می‌کند؛ اگر از ۱۰ گیگابایت فایل فقط ۵ مگابایت تغییر کرده، همان ۵ مگابایت ارسال می‌شود.

rsync -avz --progress ./mysite/ root@SERVER_IP:/var/www/mysite/

معنی سوییچ‌ها:

  • -a: حفظ دسترسی‌ها، تاریخ و ساختار
  • -v: نمایش جزئیات
  • -z: فشرده‌سازی حین انتقال (برای اینترنت کند مفید)
  • --progress: نمایش درصد پیشرفت

برای اینکه فایل‌های حذف‌شده در مبدأ، در مقصد هم حذف شوند:

rsync -avz --delete ./mysite/ root@SERVER_IP:/var/www/mysite/

هشدار: --delete خطرناک است؛ اول با --dry-run تست کنید تا ببینید چه چیزی حذف می‌شود.

نادیده گرفتن پوشه‌های غیرضروری:

rsync -avz --exclude 'node_modules' --exclude '.git' ./app/ root@IP:/var/www/app/

گرفتن بکاپ از سرور به کامپیوتر

یک الگوی کاربردی برای بکاپ کامل سایت و دیتابیس:

# روی سرور: ساخت آرشیو
tar -czf /root/site-backup.tar.gz /var/www/mysite
mysqldump -u root -p mydb | gzip > /root/db-backup.sql.gz

# روی کامپیوتر: دریافت
scp root@SERVER_IP:/root/site-backup.tar.gz ./
scp root@SERVER_IP:/root/db-backup.sql.gz ./

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

اگر می‌خواهید سایت را از سرور قدیمی به سرور جدید منتقل کنید، بهترین راه انتقال مستقیم است (بدون واسطه شدن کامپیوتر شما):

# روی سرور جدید اجرا کنید
rsync -avz -e ssh root@OLD_SERVER_IP:/var/www/ /var/www/

این کار بسیار سریع‌تر است چون سرورها معمولاً پهنای باند بالاتری نسبت به اینترنت خانگی دارند. برای راهنمای کامل انتقال، مقاله انتقال سایت به سرور جدید را ببینید.

مشکلات رایج

  • Permission denied هنگام نوشتن: کاربر شما به مسیر مقصد دسترسی نوشتن ندارد. یا با کاربر root منتقل کنید یا مالکیت مسیر را تغییر دهید.
  • انتقال خیلی کند است: از -z برای فشرده‌سازی استفاده کنید و اگر فایل‌های کوچک زیادی دارید، اول آن‌ها را در یک آرشیو tar بگذارید.
  • انتقال وسط کار قطع می‌شود: از rsync استفاده کنید؛ با اجرای دوباره، از همان‌جا ادامه می‌دهد و کار انجام‌شده تکرار نمی‌شود.
  • فایل‌ها منتقل شدند ولی سایت خطا می‌دهد: معمولاً مالکیت فایل‌ها اشتباه است: chown -R www-data:www-data /var/www/mysite

جمع‌بندی

برای یک فایل سریع SCP، برای کار روزمره و گرافیکی FileZilla با SFTP، و برای بکاپ و انتقال حجیم rsync. یادگیری rsync بیشترین ارزش را دارد چون هم سریع‌تر است و هم در انتقال‌های ناتمام قابل ادامه دادن.

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

انتقال فایلSSHآموزشلینوکس

سرور مجازی ایران با تحویل آنی می‌خواهید؟

تحویل خودکار در کمتر از یک دقیقه، دیتاسنتر داخل ایران، دسترسی کامل root و پشتیبانی 24 ساعته.

مشاهده پلن‌ها و قیمت‌ها