نرم افزار گنو/لینوکس

انتقال فایل با SCP

نوشته شده توسط اروند طباطبایی

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

SCP چیست؟

SCP یک پروتکل شبکه بر پایه ی BSD,RSP است، که از انتقال فایل روی شبکه با استفاده از SSH پشتیبانی می کند. با استفاده از SCP یک کلاینت می‌تواند به یک کلاینت دیگر یا سرور در یک شبکه فایل بفرستند یا حتی از آن‌ها فایلی دانلود کند.

اگر کسی بخواهد با SPC چند فایل را روی شبکه به اشتراک بگذارد، دو راه در پیش رو خواهد داشت: اول اینکه نام تک تک فایل‌ها را در دستور انتقال بیاورد و دوم اینکه فایل‌ها را در یک دایرکتوری گذاشته و دایرکتوری را انتقال دهد(SCP از انتقال دایرکتوری پشتیبانی می کند) هر دوی این روش‌ها در پایین توضیح داده شده‌اند و می‌توانید هر کدام را به دلخواه انتخاب و استفاده کنید.

 

نصب OpenSSH Server در لینوکس

برای اینکه بتوانید فایلی را به اشتراک بگذارید باید OpenSSH Server روی سیستم تان نصب شده باشد. اگر قبلاً آن را در توزیعتان این پکیج را نصب نکرده‌اید، آن را نصب کنید. دستورات نصب این پکیج برای سیستم عامل های فدورا، دبیان و دیگر توزیعات بر پایه آن‌ها را در قسمت پایین می‌توانید ببینید:

For Debian or Ubuntu based Linux distributions -
sudo apt-get install openssh-server

For Fedora Based Linux distributions
sudo dnf install openssh-server

 

چگونه فایل‌ها را انتقال دهیم؟

نگارش کلی این دستور بدین شکل است:

scp [optionalParameters] source destination

مثال: اگر می‌خواهید فایلی به نام ”myMovieList.txt” را به سیستم دیگری با آدرس آی پی ۱۹۲٫۱۶۸٫۱٫۱۰۲ انتقال دهید باید دستور زیر را اجرا کنید:

scp myMovieList.txt savan.patel@192.168.1.102:/home/savan.patel/

اما برای انتقال همان فایل به سیستم خودتان(دانلود) باید از این دستور استفاده کنید:

scp savan.patel@192.168.1.102:/home/savan/ myMovieList.txt

برای انتقال چند فایل می‌توانید نام آن‌ها را با یک خط فاصله بینشان بنویسید:

scp file1 file2 file3 savan.patel@192.168.1.102:/home/savan.patel/

 

آشنایی با چند پارامتر SCP:

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

r: برای کپی کردن یک دایرکتوری و محتوای آن باید از این آپشن استفاده کنید. با این پارامتر به جای اینکه مجبور باشید برای ارسال بیست فایل اسم تک تک آن‌ها را بنویسید، می‌توانید آن‌ها را در یک دایرکتوری قرار داده و دایرکتوری را کپی کنید.

For example to copy blogs folder to remote machine, you would use command,
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: با استفاده از این آپشن می‌توانید الگوریتم رمزگذاری خود را مشخص کنید. به صورت پیشفرض الگوریتم Triple-DES cipher برای رمزگذاری استفاده می‌شود اما می‌توانید آن را به الگوریتم های دیگر مانند blowfish تغییر دهید:

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/

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

اروند طباطبایی

بنیانگذار دیجی اسپارک: اولین مرجع تخصصی امبدد سیستم به زبان فارسی / کارشناس سئو و تولید محتوا

هرچه می آموزم میبینم که خیلی کم آموختم. علاقه به رباتیک و تکنولوژی دارم. امیدوارم بتونم دانشی را که آموخته‌ام، به روش‌های مختلفی به کاربران علاقمند منتقل کنم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۵ دیدگاه

  • با سلام
    ایا با این تکنیک میتوان فایل را بین کامپیوتر و رزبری منتقل کرد؟سمت کامپیوتر از چه اپلیکیشنی باید استفاده کرد؟ممنون

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

  • سلام و خسته نباشید خدمت استاد طباطبایی.
    بنده دانشجوی ترم ۷ مهندسی مخابرات هستم و برای پروژه ی کارشناسی نیاز به انتقال realtime یکسری متغییر هایی که در ثانیه در حال تغییرات هستن به صورت wireless دارم .
    از سیستم عامل لینوکس و با کدهای پایتون استفاده میکنم .
    طبق سرچ هایی که انجام دادم به چهار مورد زیر رسیدم .
    ۱-استفاده از flask : که آنچنان که باید به دردم نخورد و خیلی گنگ بود.
    ۲-استفاده از socket: که باز هم نتونستم کاری از پیش ببرم .
    ۳-استفاده از mysql:که یک مبحث عظیمی هست و با توجه به زمان کم بنده از ان صرفنظر کردم.
    ۴-استفاده از webbase
    لطفا اگر راهکاری مد نظر شماست که بتونم خروجی برنامه رو روی بستر مناسب انتقال بدم به یک کلاینت لینوکسی دیگه که شرایطی که گفتم رو تامین کنه . در این قسمت و یا ایمیل بنده مطرح بفرمایید .
    با تشکر فراوان

    • با سلام
      ضمن تشکر از توجه جنابعالی، در این خصوص نیاز به دانش شبکه می‌باشد. متاسفانه از زمنیه تخصص بنده خارج می‌باشد. از دیگر کاربران که دراین خصوص تجربه کافی دارند، تقاضا دارم تا در این بحث شرکت کنند.

  • سلام
    برای انتقال فایل بین رزبری پای و کامپیوتر از راه دور و نه فقط در شبکه محلی چکار باید کرد ؟ (گرافیک هم مهم نیست. فقط از طریق SSH هم باشد کافیست.) با تشکر