دستور SCP یا “کپی ایمن” یک ابزار خط فرمان است که به شما امکان میدهد پرونده ها و دایرکتوری ها را بین 2 کامپیوتر به طور ایمن انتقال دهید.
اگر از علاقمندان به لینوکس هستید قطعا میدانید که برای کپی و انتقال فایلها روی شبکه، روشهای دیگری مانند FTP یا Rsync وجود دارند که هرکدام مزایا و معایب خاص خود را دارند.
اما دستور SCP به علت سادگی، امنیت و در دسترس بودن در بین سایر روشها محبوبیت بالایی دارد. در واقع این دستور به دلیل عدم نیاز به ورود به سرور، فرآیند انتقال دیتا بین سرورهای لینوکس را بسیار ساده میکند.
استفاده از SCP با توجه به روش انتقال فایلها و فولدرها با SSH مستلزم نصب OpenSSH و باز کردن پورتهای میزبان محلی و میزبان راه دور در فایروالهای آنها است.
نصب OpenSSH Server در لینوکس
برای اینکه بتوانید فایلی را به اشتراک بگذارید باید OpenSSH Serve روی سیستم شما نصب شده باشد. اگر قبلاً آن را در توزیعتان این پکیج را نصب نکردهاید، آن را نصب کنید. دستورات نصب این پکیج برای سیستم عامل های فدورا، دبیان و دیگر توزیعات بر پایه آنها را در قسمت پایین میتوانید ببینید:
- برای توزیع های لینوکس مبتنی بر دبیان یا اوبونتو
sudo apt-get install openssh-server
- برای توزیع های لینوکس مبتنی بر فدورا
sudo dnf install openssh-server
بیشتر بخوانید:
https://hostida.com/blog/how-to-change-ssh-port/
با خواندن این مقاله روش استفاده از دستورهای SCP را در هر سیستم از راه دوری مانند VPS فرا میگیرید. برای اینکه مراحل آموزش سادهتر شود بهتر است ابتدا دستور اصلی را تجزیه کنیم و با ذکر مثالهایی برای درک بهتر دستورات لینوکسی به شما کمک خواهیم کرد.
چند پارامتر اصلی SCP
SCP خوشبختانه پارامترهای زیادی را قبول میکند که به کمک آنها میتوانید به شما اطلاعات را به سرعت و کاملا امن کپی کنید.
برای کپی کردن یک دایرکتوری و محتوای آن باید از این آپشن استفاده کنید. با این پارامتر به جای اینکه مجبور باشید برای ارسال بیست فایل اسم تک تک آنها را بنویسید، میتوانید آنها را در یک دایرکتوری قرار داده و دایرکتوری را کپی کنید.
r: به عنوان مثال برای کپی کردن پوشههای موجود در وبلاگ در دستگاه راه دوری مانند VPS، از دستور زیر استفاده کنید:
scp -r /home/savan/blog savan.patel@192.168.1.102:/home/savan.patel/
P: این آپشن برای ارسال اطلاعات روی یک پورت مشخص استفاده می شود. SCP به صورت پیشفرض از پورت ۲۲ استفاده میکند، اما گاهی نیاز دارید تا اطلاعات را روی پورت دیگری منتقل کنید، برای مثال برای انتقال روی پورت ۸۰۸۰ دستور زیر به کار می رود:
scp -P8080 -r /home/savan/blog savan.patel@192.168.1.10:/home/savan.patel/
c: با استفاده از این آپشن میتوانید الگوریتم رمزگذاری خود را مشخص کنید.
scp -c blowfish movieList.txt savan.patel@192.168.1.102:/home/savan.patel/
C: این آپشن برای فشردهسازی اطلاعات قبل از فرستاده شدن به کار می رود.(اطلاعات در سمت دیگر به صورت اتوماتیک از حالت فشرده خارج خواهند شد)
scp -C movieList.txt savan.patel@192.168.1.102:/home/savan.patel/
کپی کردن فایل ها با استفاده از دستور SCP
SCP به شما اجازه میدهد فایلها را بین دو VPS یا یک سرور مجازی و یک سیستم لوکال انتقال دهید. در بخشهای زیر نحوه عملکرد دستورات SCP برای هر نوع انتقال توضیح داده شده است.
بیشتر بخوانید:
https://hostida.com/blog/what-is-vps/
کپی کردن فایل از یک سرور محلی به سرور مجازی
در این مثال، ما یک فایل محلی به نام scp.zip را در یک سرور راه دور (vps) به نام root کپی می کنیم. آدرس IP سرور بعد از نام کاربری آمده است:
scp /users/iranica/desktop/scp.zip root@191.162.0.2:/writing/article
اگر تأیید خودکار سرویس گیرنده SSH را تنظیم نکرده باشید، از شما خواسته می شود رمز عبور کاربر VPS را وارد کنید.
root@191.162.0.2’s password: novel3.zip 100% 0 0.0KB / s 00:00
فرض کنید سرور جوری تنظیم شده که به اتصالات SSH با پورتی غیر از پورت پیشفرض 22 SSH کار کند. در این حالت، باید آن پورت را با استفاده از گزینه -P مشخص کنید.
root@191.162.0.2’s password: novel3.zip 100% 0 0.0KB / s 00:00
اگر میخواهید نام فایل را نیز در حین عملیات انتقال تغییر دهید، دستور شما به این صورت خواهد بود:
scp /users/iranica/desktop/scp.zip root@191.162.0.2:/writing/article/howtoscp.zip
برای کپی کردن یک دایرکتوری با چندین فایل یا زیرشاخه از گزینه –r و به دنبال آن همان خط فرمان را استفاده کنید:
scp -r /users/Hostinger/desktop root@191.162.0.2:/writing/article
انتقال فایل از VPS به یک رایانه شخصی
اگر بخواهیم فایل scp.zip را از همان میزبان راه دور در رایانه محلی خود کپی می کنیم، دستور زیر را مینویسیم:
scp root@191.162.0.2:/writing/articles/SCP.zip Users/Hostinger/Desktop
با اجرای این دستور خروجی ورود به سیستم SSH که نیاز به رمز عبور دارد، را به شما نمایش میدهد.
انتقال یک فایل بین دو VPS به وسیله SCP
برای کپی کردن فایل ها از یک سرور به سرور دیگر، پس از اجرای دستور زیر در ترمینال خود، باید رمز عبور هر دو را به صورت زیر وارد کنید:
scp root@191.162.0.2:/writing/article/scp.zip iranica@11.10.0.1:/publishing
نکته: برای کپی پوشه ها از گزینه -r استفاده میکنیم.
در شرایط عادی، فایل مستقیماً از اولین سرور راه دور به سرور دوم می رود. با این حال، اگر می خواهید عملیات را از طریق دستگاه خود تغییر مسیر دهید، گزینه -3 را مانند دستور زیر اضافه کنید:
scp -3 root@191.162.0.2:/writing/article/scp.zip hostinger@11.10.0.1:/publishing
جمع بندی
استفاده از دستور SCP به شما اجازه میدهد که فایلها را بین چندسرور در یک شبکه به آسانی و با روشی امن انتقال دهید. در ضمن با استفاده از این دستور میتوانید بدون نیاز به ورود از طریق یک اتصال رمزگذاری شده، فایل ها را از یک سرور مجازی به سرور دیگر کپی کنید.
امیدواریم این مقاله به شما در درک نحوه استفاده صحیح از این پروتکل در سرورهای لینوکس کمک کرده باشد. سوالات خود را در قسمت نظرات همین پست با ما در میان بگذارید.
بیشتر بخوانید:
https://hostida.com/blog/linux-commands/