آموزش انتقال فایل بین دو سرور لینوکس
در این مقاله میخوانید
لینوکس تعدادی ابزار کمکی برای انتقال فایل ارائه میدهد. اما در حال حاظر بسیاری از اسکریپتهای خودکار از دو سرویس زیر برای جابهجایی فایلها استفاده میکنند:
- روش اول برپایه FTP خواهد بود که آسان است. سرعت رضایتبخشی دارد و برای کارهای ساده میتواند گزینه مناسبی باشد؛ البته درحالحاضر نسخه پیشرفتهتر و ایمنتر آن نیز دردسترس قرار دارد. گفتنی است شما میتوانید از FTPS نیز استفاده کنید.
- روش دوم که از هرنظر میتواند ایمنی بیشتری ارائه دهد، SCP نام دارد و به هکرها اجازه نمیدهد که دادههای شما را در مسیر انتقال شنود یا از آنها سوءاستفاده کنند. درنتیجه، اگر ایمنی برای شما مهم است، پروتکل SCP از این نظر گزینه ایدئالتری خواهد بود.
در ادامه بررسی کاملی از هر دو روش خواهیم داشت و روش استفاده از آنها را آموزش میدهیم، با ما همراه باشید.
خرید سرور لینوکس با وب سرور FTP از پارس پک
از این مقاله میتوانید برای مدیریت سرویسهای لینوکسی خود استفاده کنید و اگر قصد خرید سرور لینوکس پارس پک را دارید، میتوانید با کارشناسان فروش ما در ارتباط باشید. همچنین، میتوانید جهت کسب اطلاعات در مورد هزینهها و تعرفهها به لینکهای زیر مراجعه کنید.
FTP چیست؟
File Transfer Protocol (بهاختصار FTP) یکی از پروتکلهای انتقال داده است که از آن میتوانید در تمامی سیستمعاملها استفاده کنید. بسیاری از کاربران ممکن است چنین سروری نداشته باشند؛ اما میتوانند از سرویسهای رایگان برای این کار استفاده کنند. بسیاری از توسعهدهندگان وب با استفاده از سرور FTP، بهراحتی دادههای خود را در کامپیوتر شخصی و هاست و سرور مدیریت میکنند. این سیستم برای تبادل فایلها از شبکه استفاده میکند و ازطریق پورت ۲۱ به شما اجازه میدهد تا از راه دور تبادل فایلها را انجام دهید.
برای انتخاب صحیح پروتکل انتقال فایل و آگاهی از تفاوتهای آنها مقاله زیر را از دست ندهید.
آشنایی با پروتکل انتقال فایل (FTP)
1. سینتکسهای FTP در لینوکس
منظور از «سینتکس» کدهای دستوریای است که هر زبان برنامهنویسی یا محیط نرمافزاری به شما اجازه میدهد با استفاده از آن بهراحتی و با سرعت بیشتری دادهها را تغییر دهید. در سیستمعامل لینوکس نیز، بهجای نصب ابزارهای گرافیکی میتوانید با کمک دستورهای ترمینال، تمامی کارهای لازم را انجام دهید.
پیش از ورود به آموزش انتقال فایل بین دو سرور لینوکس، باید درباره سینتکسها و کدهای دستوری آن بدانید یا حداقل تعدادی از این کدهای لازم را حفظ کنید. ازجمله این کدها مهم میتوان به بازگشایی سرور و دریافت و خروجی گرفتن از آن اشاره کرد.
ftp host
معمولاً ساختار کلی دستورهای FTP مانند چیزی است که در بالا میبینید.
2. دستورهای FTP در لینوکس
کاربردها | دستور |
اتصال راه دور را با کامپیوتر دیگری برقرار میکند (ریموتزدن به کامپیوتر دیگر). | open |
یک فایل را از سیستم راه دور به سیستم محلی کپی میکند. | get |
یک فایل را از سیستم محلی به دایرکتوری در سیستم راه دور کپی میکند. | put |
چندین فایل را از سیستم راه دور به دایرکتوری فعلی سیستم محلی منتقل میکند. | mget |
چندین فایل را از سیستم محلی به دایرکتوری در سیستم راه دور منتقل میکند. | mput |
برای خروج از محیط FTP آماده میشود. | bye/quit |
اتصال FTP را قطع میکند | close |
حالت انتقال فایل به ASCII را فعال میکند. | ascii |
حالت انتقال فایل را به باینری فعال میکند. | binary |
3. نحوه انتقال فایلها ازطریق FTP در لینوکس
FTP میتواند در دو حالت داده را انتقال دهد:
- اسکی
- باینری.
ASCII مخفف American Standard Code for Information Interchange است و برای انتقال فایلهای ساده و اطلاعاتی مانند فایلهای متنی و فرمتهای txt بهترین گزینه بهحساب میآید. در حالت باینری (دودویی)، برای انتقال فایلهای غیرمتنی مانند تصویر و ویدئو میتوان از امکانات سرور استفاده کرد. درواقع، اگر قصد دارید فایلهای کد را نیز انتقال دهید، حالت انتقال افتیپی اسکی ممکن است برایتان بهتر باشد.
در سرورهای لینوکسی، حالت انتقال پیشفرض ASCII است.
چگونه فایلها را در لینوکس انتقال دهیم؟
برای آشنایی با دستورات کامل FTP و عملکرد آنها در لینوکس مقالهی زیر را بخوانید.
قدم اول: اتصال به FTP سرور
در مثال زیر، برای آموزش انتقال فایل بین دو سرور لینوکسی به روش افتیپی، hostA میزبان راه دور است. برای شروع، از شما نام کاربری و رمزعبور برای اتصال درخواست میشود:
$ ftp hostA Connected to hostA. 220 hostA FTP server ready. Name (hostA:user): user 331 Password required for user. Password: password 230 User user logged in. Remote system type is LINUX.
هنگامی که اتصال با موفقیت انجام شد، ابتدا متوجه نماد ftp> خواهید شد. اکنون میتوانید دستورهای FTP را اجرا کنید.
قدم دوم: انتخاب حالت انتقال فایل
همانطورکه گفتیم، دو روش کلی برای انتقال دادهها میتوانید انتخاب کنید: یکی اسکی و دیگری باینری (دودویی).
ftp> ascii 200 Type set to A.
در مثال بالا، حالت اسکی را انتخاب کردیم.
قدم سوم: انتقال فایلها
همانطورکه میبینید، از دستور get که احتمالاً با آن در کادر بالا آشنا شدید، برای انتقال فایل sample.txt از سرور FTP راه دور به سرور محلی استفاده میکنیم:
ftp> get sample.txt 200 PORT command successful. 150 Opening ASCII mode data connection for sample.txt (22 bytes). 226 Transfer complete. local: sample.txt remote: sample.txt 22 bytes received in 0.012 seconds (1.54 Kbytes/s)
میبینید که خط اول در کادر بالا دستور است و پسازآن، چیزهایی را مشاهده میکنید که سرور لینوکس به شما اطلاع میدهد. در خطوط بعد، منظور سرعت انتقال، نحوه انتقال، محل انتقال، سرعت تبادل داده (دریافت فایل) و فرمت فایل ماست.
قدم چهارم: پایان جلسه (Session)
درادامه، میبینید که با ورود این دستور، میتوانید به جلسه کاری پایان دهید. درواقع، از سرور میخواهید که اتصال برقرارشده را لغو کند. سپس، پیغام خداحافظی منتقل میشود که پیشفرضی در سرورهای لینوکسی است:
ftp> bye 221-You have transferred 22 bytes in 1 files. 221-Total traffic for this session was 126 bytes in 2 transfers. 221-Thank you for using the FTP service on hostA. 221 Goodbye.
4. نحوه انتقال چندین فایل ازطریق FTP
حالا نوبت آن است که درباره نحوه جابهجایی دو یا چند فایل صحبت میکنیم. حتماً برای شما هم اتفاق خواهد افتاد که قصد داشته باشید فایلهای FTP را بهصورت چندگانه انتقال دهید.
برای انتقال فایلها بهصورت انبوه، دو دستور mget و mput وجود دارد. از mget برای دانلود فایلها و از mput برای آپلود فایلها استفاده میشود.
برای انتقال فایلها از میزبان راه دور به میزبان محلی (لوکال) میتوانید از این کد استفاده کنید:
ftp> mget sample_file.1 sample_file.2
برای انتقال فایلها از میزبان محلی به میزبان راه دور نیز، میتوانید از این کد استفاده کنید:
ftp> mput sample_file.1 sample_file.2
همانطورکه میبینید، تفاوت این دو کد در دستوردهی است.
برای آموزش کامل استفاده از SFTP برای انتقال فایل مقالهی زیر را از دست ندهید.
راهنمای گامبهگام ارسال فایل ازطریق FTP در لینوکس
پروتکل انتقال SCP چیست؟
سیستم تبادل داده در لینوکس SCP مخفف Secure Copy است که از SSH و پورت ۲۲ استفاده میکند و اتصال آن تقریباً ایمن است؛ مگر اینکه خود فرد در تبادل دادهها سهلانگاری کند. دادههای منتقلشده ازطریق SCP رمزگذاریشده است و اسنیفرها و هکرها نمیتوانند به آن دسترسی داشته باشند. این امر SCP را بسیار امن میکند و سبب میشود که در سرورها و هاستها و فضاهای ابری تحت سرورهای لینوکس بسیار استفاده شود.
همانطورکه گفتیم، در آموزش انتقال فایل بین دو سرور لینوکس، قصد داریم درباره دو روش مهم صحبت کنیم: روش اول FTP بود که با آن آشنا شدیم و روش دوم همان SCP است که درادامه دربارهاش صحبت خواهیم کرد.
از این نوع اتصال میتوان برای انتقال فایلها از سرور محلی به میزبان راه دور و انتقال از میزبان راه دور به سرور محلی بهره برد؛ یعنی فایل را از کامپیوتر شخصی به سرور یا برعکس منتقل کرد.
انتقال ایمن فایلها در لینوکس با SCP
1. سینتکسهای SCP
scp [FLAG] [user@]SOURCE_HOST:]/path/to/file1 [user@]DESTINATION_HOST:]/path/to/file2
در بالا، نمونه سینتکس مختص به این سیستم را مشاهده میکنید. درادامه با دستورهای آن نیز آشنا میشوید و درمییابید که در سرورها هر دستور چه کاری میتواند درزمینه انتقال فایل انجام دهد.
[FLAG] گزینههایی را مشخص میکند که میتوان به SCP داد. در اینجا، برخی از جزئیات درباره این دستورها آمده است:
کاربردها | دستور |
برای کپی بازگشتی دایرکتوریها | -r |
برای مخفیکردن نوار پیشرفت و هر اطلاعات دیگر | -q |
برای فشردهسازی دادههای در حال انتقال و جلوگیری از نمایش آنها با فرمت اصلی | -C |
مشخصکردن پورت SSH مقصد | -P |
حفظ زمان دسترسی به فایل | -p |
[user@]SOURCE_HOST دستگاه منبع است.
[user@]DESTINATION_HOST:] دستگاه مقصد است.
توجه کنید که برای انتقال فایلهای خود ازطریق پروتکل SCP، اعتبار باید شناختهشده و کاربر مجوز نوشتن داده را داشته باشد؛ وگرنه هیچ کاری انجام نمیشود.
2. نحوه انتقال فایلها از لوکال هاست به سرویس میزبانی ازطریق SCP
تصور کنید که قصد دارید این انتقال را بین کامپیوتر محلی و حافظه میزبان راه دور انجام دهید. برای انتقال فایلها به هاست راه دور، میتوانید از دستور زیر استفاده کنید:
scp source_file.txt [email protected]:/path/to/remote/directory
در دستور بالا، source_file.txt فایلی خواهد بود که قرار است کپی شود. remote_username نیز نام کاربری میزبان در حافظه راه دور است. پسازآن، مسیر مقصد مشخص شده است که میبینید شبیه به پَچ و همان چیزی است که در سرورها و سیستمعاملها قبلاً مشاهده کردهاید.
آنچه در کادر پیش رو میبینید، احتمالاً همان کدی است که پس از اطمینان از صحت انتقال دادهها در سرور، میتوانید مشاهده کنید.
[email protected]'s password: source_file.txt 100% 0 0.0KB/s 00:00
هنگام انتقال فایلها بین دو سرور در لینوکس، برای کپیکردن دایرکتوریها، از -r استفاده کنید. همانطورکه میبینید، بهراحتی فایل مدنظر شما کپی میشود.
3. نحوه انتقال فایلها از سرویس میزبانی به لوکال هاست ازطریق SCP
تصور کنید که قصد دارید اطلاعاتی را از سرور به کامپیوتر خودتان فراخوانی یا به بیان بهتر دانلود کنید. برای انتقال فایلها از کامپیوتر راه دور به کامپیوتر خودتان، میتوانید از دستور زیر استفاده کنید:
scp [email protected]:/remote/source_file.txt /path/to/local/directory
هنگام انتقال فایل با این روش، باید بدانید که SCP دادههای شما را بازنویسی خواهد کرد؛ البته اگر سرور شما ایمن باشد، هیچ مشکلی رخ نمیدهد و دادههایتان بهسرقت نمیرود.
در این مطلب آموزشی، درباره نحوه انتقال فایلها از دایرکتوریها با استفاده از دو سیستم FTP و SCP در سرورهای لینوکسی صحبت کردیم. تمامی این کدها با استفاده از خط فرمان وارد میشوند و بهراحتی میتوانید بدون دستور اضافه و باتوجهبه مطالب گفتهشده در این مقاله، در سرورها و کامپیوترهای لینوکسی خود فایلها را انتقال دهید.
استفاده از دستور SCP برای انتقال ایمن فایلها
نتیجهگیری
در این مقاله آموزش لینوکس از سری مقالات آموزش سیستم عامل وبلاگ پارسپک، نحوه انتقال فایل بین دو سرور لینوکس و انتقال از سرور به کامپیوتر و از کامپیوتر به سرور را به شما آموزش دادیم. در حالت FTP، معمولاً دادهها را به دو روش میتوان انتقال داد: یکی مختص دادههای متنی و فرمتیهای ساده و دیگری مختص دادههای غیرمتنی و فایلیهای چندرسانهای.
در هر دو روش، امکان هک دادهها وجود ندارد؛ مگر اینکه کسی اطلاعات سرورتان را داشته باشد یا حتی سرور را خود او مدیریت کند. سیستمعامل لینوکس با شخصیسازی بسیارش میتواند یکی از گزینههای برتر برای تبادل دادهها باشد.
سؤالات متداول
1. آیا FTP روی اینترنت ایمن است؟
بهطورکلی، گفته میشود که برای انتقال دادهها از اینترنت، FTP نمیتواند سیستم ایمنی باشد. شبکه لوکال نیز معمولاً با استفاده از این سیستم ممکن است غیرایمن باشد. علاوهبراین، سیستمی با عنوان FTPS راهاندازی شده است که جایگزین مناسبی برای FTP است. نکته دیگر اینکه تمامی دادهها و نام کاربری و رمزعبور استفادهشده برای FTP بدون رمزنگاری است؛ درنتیجه، احتمال دارد کمی مشکلساز و غیرایمن باشد.
2. تفاوت انتقال ASCII و Binary چیست؟
درصورتیکه روش را FTP را انتخاب کرده باشید، شاید این پرسش برایتان مطرح میشود که تفاوت میان دو حالت انتقال اسکی و باینری چیست؟ روش باینری همانطورکه از نامش مشخص است، به شما اجازه میدهد دادهها را بهشکل دودویی انتقال دهید. اگر قصد دارید فایلهای چندرسانهای مانند تصاویر و فایلهای غیرمتنی را تبادل کنید، روش باینری گزینه مناسبی است. درمقابل، روش اسکی برای انتقال فایلهای متنی مناسب است و اگر قصد دارید فایلی با فرمت txt را انتقال دهید، میتوانید از آن استفاده کنید.
3. روش انتقال با SSH چیست؟
درصورتیکه میخواهید دادهها را برپایه SSH انتقال دهید، باید بدانید که سیستمهای لینوکسی به شما اجازه میدهند این کار را با روش SCP انجام دهید. در این روش، دادهها رمزنگاری میشوند و اسنیفرها و هکرها نمیتوانند به آنها دسترسی داشته باشند. چنین مزیتی سبب میشود که ازنظر ایمنی، SCP بالاتر از FTP قرار بگیرد و این مسئله برای کسانی بسیار اهمیت دارد که دادههای مهمی در سرور انتقال میدهند.
4. آیا میتوان هر حجم و فرمتی را به سرور لینوکسی انتقال داد؟
در این مطلب، بهطور مفصل درباره روشهای جابهجایی دادهها صحبت کردیم؛ اما لازم میدانیم به این نکته نیز اشاره کنیم که با بهرهگیری از هر دو پروتکل تبادل داده (FTP و SCP)، بدون محدودیت حجم و سرعت و حتی فرمت، فایلهایتان را میتوانید بهراحتی در سرورهای لینوکسی انتقال دهید.
شایان ذکر است درصورتی با محدودیت حجمی روبهرو میشوید که سرور شما ظرفیت مدنظر را نداشته باشد. در این حالت، میتوانید حافظه و دیسک سرور لینوکسی یا کامپیوتر محلی لینوکسی خود را بررسی و درنهایت، دادههای خود را برپایه دو روش گفتهشده در این مطلب، یعنی FTP و SCP، منتقل کنید.
خیلی ممنونم از راهنمایی خوبتان