آموزش انتقال اطلاعات بین دو سرور مجازی لینوکس

زمان مطالعه: 7 دقیقه

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

برای انتقال اطلاعات بین دو سرور لینوکس ابزارهای مختلفی وجود دارد که از میان آن‌ها 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 انتخاب کاربردی‌تری خواهد بود.

نکات مهم هنگام انتقال اطلاعات بین دو سرور

فضای دیسک سرور مقصد را بررسی کنید

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

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

				
					df -h
				
			

این دستور میزان فضای استفاده‌شده و فضای آزاد فایل‌سیستم‌ها را نمایش می‌دهد.

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

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

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

				
					ls -lah /home/user/website
				
			

اطلاعات مهم را بدون بررسی منتقل نکنید

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

همچنین اطلاعات حساس را در اختیار افراد یا سرویس‌های غیرضروری قرار ندهید.

انتقال دیتابیس با انتقال فایل‌ها متفاوت است

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

برای مثال، اگر سایت از MySQL یا MariaDB استفاده می‌کند، باید از دیتابیس نسخه پشتیبان تهیه کرده، آن را به سرور مقصد منتقل و سپس Restore کنید.

بنابراین مهاجرت کامل یک سایت معمولاً شامل دو بخش اصلی است:

  • انتقال فایل‌های سایت
  • انتقال دیتابیس

در کنار این موارد، تنظیمات سرویس‌هایی مانند وب‌سرور، PHP، DNS و گواهی SSL نیز ممکن است نیاز به بررسی داشته باشند.

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

خطای Permission denied

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

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

خطای Connection refused

اگر هنگام اجرای SCP یا Rsync با خطای Connection refused مواجه شدید، ممکن است سرویس SSH روی سرور مقصد فعال نباشد یا پورت اشتباهی را مشخص کرده باشید.

پورت و وضعیت سرویس SSH را بررسی کنید.

خطای No such file or directory

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

همچنین اطلاعات حساس را در اختیار افراد یا سرویس‌های غیرضروری قرار ندهید.

				
					ls -lah /home/user/
				
			

اگر فایل یا پوشه موردنظر در مسیر نمایش داده نشد، مسیر دستور را اصلاح کنید.

انتقال بسیار کند است

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

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

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

بدون دیدگاه

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

هاستvpsسرور اختصاصی