انتقال فایل به سرور مجازی با SCP، SFTP و rsync
بعد از تهیه سرور، خیلی زود به این نیاز میرسید که فایلهای سایت یا بکاپ را بین کامپیوتر خود و سرور جابهجا کنید. سه روش استاندارد وجود دارد که هر کدام جای خودش را دارد.
روش ۱: 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 بهترین گزینه است:
- FileZilla را نصب و باز کنید.
- از منوی File گزینه Site Manager را بزنید.
- Protocol را روی SFTP - SSH File Transfer Protocol بگذارید (نه FTP معمولی).
- Host را IP سرور، Port را ۲۲، User را root و رمز یا فایل کلید را وارد کنید.
- 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 بیشترین ارزش را دارد چون هم سریعتر است و هم در انتقالهای ناتمام قابل ادامه دادن.
اگر هنوز سرور ندارید، میتوانید از صفحه پلنهای سرور مجازی ایران یک سرور با تحویل آنی تهیه کنید؛ سرور بلافاصله پس از پرداخت و در کمتر از یک دقیقه تحویل داده میشود.
سرور مجازی ایران با تحویل آنی میخواهید؟
تحویل خودکار در کمتر از یک دقیقه، دیتاسنتر داخل ایران، دسترسی کامل root و پشتیبانی 24 ساعته.
مشاهده پلنها و قیمتها