گاهی به دلایل مختلف لازم است اطلاعات یک سرور مجازی لینوکس را به سرور دیگری منتقل کنید؛ برای مثال ممکن است بخواهید سایت یا سرویس خود را از سرور مجازی ایران به سرور مجازی خارج یا برعکس منتقل کنید، منابع بیشتری در اختیار داشته باشید یا دیتاسنتر سرور خود را تغییر دهید. در چنین شرایطی، انتقال مستقیم اطلاعات بین دو سرور میتواند بسیار سادهتر از دانلود فایلها روی کامپیوتر و سپس آپلود دوباره آنها باشد.
برای انتقال اطلاعات بین دو سرور لینوکس ابزارهای مختلفی وجود دارد که از میان آنها SCP و Rsync کاربرد زیادی دارند. SCP برای انتقال ساده فایلها و پوشهها گزینه مناسبی است، در حالی که Rsync امکانات بیشتری برای انتقال حجم زیادی از اطلاعات و همگامسازی دو سرور در اختیار شما قرار میدهد. در این مقاله روشهای مختلف انتقال اطلاعات بین دو سرور مجازی لینوکس را بررسی میکنیم و نحوه استفاده از این ابزارها را با مثالهای عملی توضیح میدهیم. (انتقال اطلاعات بین دو سرور مجازی ویندوز)


انتقال اطلاعات بین دو سرور مجازی لینوکس چگونه انجام میشود؟
در انتقال مستقیم اطلاعات، دو سرور از طریق شبکه با یکدیگر ارتباط برقرار میکنند و فایلها از سرور مبدا به سرور مقصد فرستاده میشوند.
برای برقراری این ارتباط معمولاً از SSH (Secure Shell) استفاده میشود. SSH یک پروتکل امن برای برقراری ارتباط با سرور لینوکس است و امکان اجرای دستورات و انتقال اطلاعات را فراهم میکند.
بهعنوان مثال، فرض کنید دو سرور داریم:
سرور | نقش | آدرس نمونه |
|---|---|---|
سرور مبدا | دارای فایلهای مورد نظر | 192.168.1.10 |
سرور مقصد | دریافت کننده فایلها | 192.168.1.20 |
در این مثال، اطلاعات از سرور مبدا به سرور مقصد منتقل میشوند.
نکته مهم این است که آدرسهای بالا فقط نمونه هستند و هنگام اجرای دستورات باید IP واقعی سرورهای خود را جایگزین کنید.
پیشنیازهای انتقال اطلاعات بین دو سرور
قبل از شروع انتقال، بهتر است موارد زیر را بررسی کنید:
- هر دو سرور باید به شبکه دسترسی داشته باشند.
- روی سرور مقصد سرویس SSH باید فعال باشد.
- باید اطلاعات ورود به سرور مقصد، مانند نام کاربری و رمز عبور یا کلید SSH، در اختیار شما باشد.
- IP یا نام دامنه سرور مقصد را داشته باشید.
- کاربری که با آن وارد سرور میشوید باید به فایلها و پوشههای موردنظر دسترسی داشته باشد.
- فضای خالی کافی در سرور مقصد وجود داشته باشد.
اگر از کاربر root استفاده نمیکنید، ممکن است برای انتقال بعضی فایلها به دسترسی بیشتری نیاز داشته باشید.
هشدار قبل از انتقال اطلاعات
اگر قرار است اطلاعات مهم یک سایت یا سرویس را جابهجا کنید، قبل از شروع کار از فایلها و دیتابیسهای مهم نسخه پشتیبان تهیه کنید. همچنین بهتر است ابتدا انتقال را روی چند فایل آزمایشی انجام دهید تا از درست بودن مسیرها و دسترسیها مطمئن شوید.
انتقال فایل با دستور SCP
یکی از سادهترین روشها برای انتقال اطلاعات بین دو سرور لینوکس استفاده از دستور scp است.
SCP مخفف Secure Copy است و برای کپی کردن فایلها بین سیستمهای مختلف از طریق SSH استفاده میشود.
انتقال یک فایل از سرور مبدا به سرور مقصد
فرض کنید در سرور مبدا فایلی با نام backup.zip در مسیر /home/user/ قرار دارد و میخواهیم آن را به پوشه /home/user/ در سرور مقصد منتقل کنیم.
دستور زیر را در سرور مبدا اجرا کنید:
scp /home/user/backup.zip username@192.168.1.20:/home/user/
در این دستور:
- /home/user/backup.zip مسیر فایل در سرور مبدا است.
- username نام کاربری در سرور مقصد است.
- 192.168.1.20 آدرس IP سرور مقصد است.
- /home/user/ مسیر ذخیره فایل در سرور مقصد است.
پس از اجرای دستور، در صورت استفاده از رمز عبور، رمز عبور کاربر سرور مقصد از شما درخواست میشود.
انتقال چند فایل
برای انتقال چند فایل میتوانید نام فایلها را پشت سر هم قرار دهید:
scp file1.zip file2.zip file3.zip username@192.168.1.20:/home/user/
تمام فایلهای مشخصشده در این دستور به مسیر تعیینشده در سرور مقصد منتقل میشوند.
انتقال یک پوشه کامل
اگر میخواهید یک پوشه به همراه محتویات آن را منتقل کنید، باید از گزینه -r استفاده کنید.
برای مثال:
scp -r /home/user/website username@192.168.1.20:/home/user/
در این مثال، پوشه website و فایلها و زیرپوشههای داخل آن به سرور مقصد منتقل میشوند.
گزینه r- مخفف recursive است و باعث میشود دستور بتواند پوشهها و محتویات آنها را بهصورت بازگشتی کپی کند.
انتقال اطلاعات از سرور مقصد به سرور مبدا
SCP فقط برای انتقال اطلاعات از سرور مبدا به مقصد نیست. میتوانید اطلاعات را در جهت مخالف نیز منتقل کنید.
برای مثال، اگر بخواهید فایل backup.zip را از سرور مقصد دریافت کنید، میتوانید دستور زیر را اجرا کنید:
scp username@192.168.1.20:/home/user/backup.zip /home/user/
در این حالت فایل از سرور 192.168.1.20 دریافت شده و در مسیر /home/user/ روی سروری که دستور را اجرا کردهاید قرار میگیرد.
به همین ترتیب، برای دریافت یک پوشه میتوانید از -r استفاده کنید:
scp -r username@192.168.1.20:/home/user/website /home/user/
انتقال اطلاعات با Rsync
اگر حجم اطلاعات زیاد باشد یا بخواهید اطلاعات بین دو سرور را بهصورت منظم همگامسازی کنید، rsync میتواند گزینه مناسبتری باشد.
Rsync علاوه بر انتقال فایل، میتواند تفاوت بین فایلهای مبدا و مقصد را بررسی کند و در انتقالهای بعدی فقط بخشهایی را که تغییر کردهاند منتقل کند. به همین دلیل برای انتقال و همگامسازی حجم زیادی از اطلاعات بسیار کاربردی است.
انتقال یک فایل با Rsync
برای انتقال یک فایل میتوانید از دستور زیر استفاده کنید:
rsync -avz /home/user/backup.zip username@192.168.1.20:/home/user/
گزینههای استفادهشده در این دستور عبارتاند از:
- a-برای حفظ ساختار، مجوزها و اطلاعات فایل تا حد امکان
- v-برای نمایش جزئیات عملیات
- z-برای فشردهسازی دادهها هنگام انتقال
انتقال یک پوشه با Rsync
برای انتقال یک پوشه کامل میتوانید از دستور زیر استفاده کنید:
rsync -avz /home/user/website/ username@192.168.1.20:/home/user/website/
در اینجا محتویات پوشه website به مسیر تعیینشده در سرور مقصد منتقل میشود.
تفاوت اسلش انتهای مسیر در Rsync
یکی از نکات مهم هنگام استفاده از Rsync، وجود یا نبود / در انتهای مسیر است.
برای مثال:
rsync -avz /home/user/website username@192.168.1.20:/home/user/
در این حالت خود پوشه website به مقصد منتقل میشود.
اما در دستور زیر:
rsync -avz /home/user/website/ username@192.168.1.20:/home/user/
محتویات داخل website در مسیر مقصد قرار میگیرند.
بنابراین هنگام انتقال پوشهها باید به اسلش انتهای مسیر توجه کنید.
چرا Rsync برای انتقال اطلاعات حجیم مناسب است؟
فرض کنید یک سایت یا مجموعهای از فایلها را با حجم زیادی از اطلاعات به سرور جدید منتقل کردهاید، اما پس از آن چند فایل تغییر کردهاند.
اگر دوباره با SCP کل پوشه را منتقل کنید، ممکن است فایلهایی که قبلاً منتقل شدهاند نیز دوباره کپی شوند. اما Rsync میتواند فایلها را مقایسه کرده و فقط اطلاعات موردنیاز را منتقل کند.
برای همین، Rsync در مواردی مانند موارد زیر کاربرد زیادی دارد:
- انتقال وبسایت به سرور جدید
- همگامسازی دو سرور
- انتقال فایلهای حجیم
- تهیه نسخهای از فایلها روی سرور دیگر
- انتقال چندباره اطلاعات در زمان مهاجرت سرور
انتقال اطلاعات با Rsync از طریق پورت SSH متفاوت
اگر SSH سرور مقصد روی پورت دیگری قرار دارد، میتوانید پورت را با گزینه e- مشخص کنید.
برای مثال:
rsync -avz -e "ssh -p 2222" /home/user/website/ username@192.168.1.20:/home/user/website/
در این دستور، ارتباط SSH روی پورت 2222 برقرار میشود.
انتقال اطلاعات با استفاده از کلید SSH
برای انتقالهای متعدد، وارد کردن رمز عبور در هر بار اجرا میتواند زمانبر باشد. در چنین شرایطی میتوان از SSH Key استفاده کرد.
در این روش، یک جفت کلید شامل کلید خصوصی و کلید عمومی ایجاد میشود. کلید عمومی روی سرور مقصد قرار میگیرد و کلید خصوصی نزد شما باقی میماند.
پس از تنظیم صحیح کلید SSH، میتوانید بدون وارد کردن رمز عبور در هر بار اتصال، ارتباط SSH را برقرار کنید.
اگر کلید SSH از قبل روی سرور تنظیم شده باشد، برای مثال میتوانید دستور زیر را اجرا کنید:
scp /home/user/backup.zip username@192.168.1.20:/home/user/
در صورتی که تنظیمات احراز هویت کلید بهدرستی انجام شده باشد، انتقال فایل بدون درخواست رمز عبور انجام میشود.
برای انتقال با Rsync نیز همین سازوکار قابل استفاده است:
rsync -avz /home/user/website/ username@192.168.1.20:/home/user/website/
تفاوت SCP و Rsync
هر دو ابزار برای انتقال اطلاعات از طریق SSH کاربرد دارند، اما برای همه شرایط انتخاب یکسانی نیستند.
ویژگی | SCP | Rsync |
|---|---|---|
انتقال فایل | دارد | دارد |
انتقال پوشه | دارد | دارد |
استفاده از SSH | دارد | دارد |
همگامسازی اطلاعات | محدود | بسیار مناسب |
انتقال مجدد اطلاعات تغییر کرده | معمولا کل فایل | فقط بخشهای مورد نیاز |
سادگی استفاده | سادهتر | کمی پیچیدهتر |
مناسب برای انتقالهای مکرر | کمتر | بیشتر |
مناسب برای اطلاعات حجیم | مناسب | بسیار مناسب |
اگر فقط میخواهید چند فایل را یکبار از یک سرور به سرور دیگر منتقل کنید، SCP معمولاً سادهتر است.
اگر قصد دارید حجم زیادی از اطلاعات را منتقل کنید یا چند بار اطلاعات دو سرور را با یکدیگر همگام کنید، Rsync انتخاب کاربردیتری خواهد بود.




























بدون دیدگاه