یکی از کارهای همیشگی مدیران server، جابجایی اطلاعات، بک آپ ها و فایل های حجیم بین دو server مختلف است. اگر شما دو سرور مجازی لینوکس دارید و می خواهید فایل های خود را بدون نیاز به دانلود روی کامپیوتر شخصی و آپلود مجدد، مستقیما بین دو سرور جابجا کنید، این آموزش مخصوص شماست.
در لینوکس روش های زیادی برای این کار وجود دارد، اما ما در اینجا امن ترین و سریع ترین روش ها یعنی استفاده از دستورات SCP و Rsync را بررسی می کنیم.
پیش نیازها
قبل از شروع کار مطمئن شوید که اطلاعات زیر را دارید: ۱. آدرس آی پی (IP) سرور مقصد. ۲. نام کاربری سرور مقصد (معمولا root است). ۳. رمز عبور سرور مقصد. ۴. دسترسی به ترمینال (SSH) در سرور مبدا.
روش اول: استفاده از دستور SCP (ساده و سریع)
دستور SCP (مخفف Secure Copy) ساده ترین راه برای کپی کردن فایل بین دو سیستم لینوکسی است. این دستور به صورت پیش فرض روی اکثر سرورها نصب است و نیازی به نصب برنامه اضافی ندارد.
1. انتقال یک فایل از سرور فعلی به سرور دیگر (آپلود)
فرض کنید شما در سرور A هستید و می خواهید فایلی به نام backup.zip را به سرور B ارسال کنید.
ساختار دستور: scp /path/to/file user@remote_ip:/path/to/destination
مثال عملی: می خواهیم فایل backup.zip را به پوشه /home در سروری با آی پی 192.168.1.50 ارسال کنیم:
scp backup.zip root@192.168.1.50:/home
بعد از زدن این دستور، سیستم از شما رمز عبور سرور مقصد را می پرسد. پس از وارد کردن رمز، انتقال شروع می شود.
2. دریافت فایل از server دیگر به server فعلی (دانلود)
حالا فرض کنید در server خودتان هستید و می خواهید یک فایل را از server دیگری دانلود کنید و پیش خودتان بیاورید.
ساختار دستور: scp user@remote_ip:/path/to/file /local/destination
مثال عملی: می خواهیم فایل database.sql را از server دیگر برداریم و در پوشه فعلی خودمان (.) ذخیره کنیم:
scp root@192.168.1.50:/var/www/database.sql .
3. انتقال یک پوشه کامل
برای انتقال پوشه ها باید از سوئیچ -r استفاده کنید تا محتویات پوشه هم منتقل شود.
مثال:
scp -r /home/myfolder root@192.168.1.50:/home
روش دوم: استفاده از دستور Rsync (پیشرفته و مطمئن)
اگر حجم فایل های شما زیاد است یا اینترنت server قطع و وصل می شود، Rsync بهترین گزینه است. ویژگی عالی Rsync این است که اگر انتقال قطع شود، می توانید ادامه آن را انجام دهید و نیازی نیست از صفر شروع کنید. همچنین این دستور فقط فایل هایی را منتقل می کند که تغییر کرده اند.
اگر Rsync نصب نبود، با دستور yum install rsync (در سنت او اس) یا apt install rsync (در اوبونتو) آن را نصب کنید.
دستور انتقال فایل با قابلیت نمایش پیشرفت
برای اینکه سرعت انتقال و درصد پیشرفت را ببینید، از سوئیچ های -avzP استفاده می کنیم.
ساختار دستور: rsync -avzP /source/path user@remote_ip:/destination/path
توضیح سوئیچ ها:
a- : حالت آرشیو (حفظ دسترسی ها و مالکیت فایل ها).
v- : نمایش جزئیات کار.
z- : فشرده سازی اطلاعات هنگام انتقال (برای مصرف کمتر اینترنت).
P- : نمایش نوار پیشرفت (Progress bar).
مثال عملی: انتقال پوشه public_html به server مقصد:
rsync -avzP /home/user/public_html root@192.168.1.50:/home/user/
نکته مهم: اگر پورت SSH تغییر کرده است
در بسیاری از سرورها برای امنیت بیشتر، پورت پیش فرض SSH را از 22 به عدد دیگری تغییر می دهند. در این صورت باید پورت را در دستورات مشخص کنید.
در دستور SCP: باید از سوئیچ -P (پی بزرگ) استفاده کنید:
scp -P 2244 backup.zip root@192.168.1.50:/home
در دستور Rsync: باید از دستور -e استفاده کنید تا پورت را به SSH معرفی کنید:
rsync -avzP -e "ssh -p 2244" /home/file.zip root@192.168.1.50:/home
جمع بندی: کدام روش را انتخاب کنیم؟
۱. برای انتقال سریع یک یا دو فایل کوچک: از SCP استفاده کنید چون دستور آن کوتاه تر و ساده تر است. ۲. برای انتقال فایل های حجیم (چند گیگابایت): حتما از Rsync استفاده کنید تا در صورت قطعی شبکه، بتوانید ادامه دانلود را انجام دهید. ۳. برای همگام سازی دو server: اگر می خواهید فقط فایل های جدید منتقل شوند، Rsync تنها انتخاب شماست.
با استفاده از این روش ها، شما می توانید با سرعت پورت دیتاسنتر (که معمولا بسیار بالا است) فایل های خود را بین سرورها جابجا کنید.






