برای استفاده از پروتکل FTP به منظور نقل و انتقال فایل بین سیستم لینوکسی و سرور در شبکهی محلی یا سروری در خارج از شبکهی لوکال و در فضای اینترنت، دو دستور جامع ftp و sftp طراحی شده است. دستور ftp امن نیست و رمزگذاری ندارد لذا برای شبکهی شخصی و محلی مفید است. برای ارتباط با سرورهای FTP از طریق اینترنت که شبکهی عظیم خارجی محسوب میشود، میبایست از sftp استفاده کنید.
در این مقاله به روش دانلود و آپلود فایل با فرمان ftp و همینطور تغییر فولدر کاری و تغییر نام فایلها و نحوهی دیلیت کردن فایلها با این دستور در محیط Terminal لینوکس میپردازیم.
هشدار: از فرمان FTP روی اینترنت استفاده نکنید
پیدایش پروتکل FTP یا File Transfer Protocol به اوایل دهه ۱۹۷۰ برمیگردد. این پروتکل با توجه به نام آن، برای انتقال فایل طراحی شده و در طراحی آن ملاحظات امنیتی در نظر گرفته نشده است! حین کار با FTP از رمزگذاری یا Encryption خبری نیست. نام کاربری و رمز عبور و دیتایی که دانلود یا آپلود میشود، همگی بدون رمزگذاری است. لذا راه برای سوء استفادهی هکرها و کاربران سودجو باز است.
اگر بخواهید در شبکهی خانگی و شخصی از دستور FTP برای نقل و انتقال فایل استفاده کنید، مشکلی وجود ندارد اما در یک سازمان و شرکت کوچک، حتی در شبکهی لوکال هم ممکن است شخصی بخواهد از اطلاعات سوء استفاده کند. لذا استفاده از FTP حتی در شبکهی لوکال خطرناک است. استفاده از فرمان FTP لینوکس برای تبادل داده با شبکهی خارجی و در واقع شبکهی جهانگستر اینترنت، به هیچ عنوان توصیه نمیشود! حتی برای فایلهای عمومی که اهمیت و حساسیت خاصی ندارند هم بهتر است از این دستور استفاده نکنید.
برای نقل و انتقال داده با روشی شبیه به FTP میتوانید از پروتکل دیگری به اسم SSH File Transfer Protocol که به اختصار sftp گفته میشود، استفاده کنید. این پروتکل از رمزگذاری پشتیبانی میکند و پروتکل خوبی برای نقل و انتقال فایل از طریق اینترنت یا در شبکههای محلی است.
اما مثالی از ناامن بودن FTP: همانطور که در اسکرینشات زیر مشاهده میکنید، هر کاربری در شبکه میتواند پسوردی که استفاده کردهاید را به صورت متن ساده و واضح مشاهده کند. به عبارت روبروی PASS توجه کنید:
استفاده از دستور ftp در لینوکس
برای اتصال به سایتها از طریق پروتکل FTP، میتوانید فرمان ftp و سپس آدرس آیپی سرور سایت موردنظر را تایپ کنید:
البته همانطور که اشاره کردیم استفاده از ftp بر بستر اینترنت بسیار خطرناک است. لذا اگر سرور در شبکهی محلی قرار نگرفته، از این روش برای اتصال به سرور استفاده نکنید.
در ادامه سرور پیام خوشامدگویی را نمایش میدهد که بسته به طراحی نرمافزار متفاوت است و سپس نام کاربری و پسورد سوال میشود. اگر نام اکانت شما در سرور FTP با نام کاربری شما در کامپیوتر لینوکسی یکسان است، Enter را فشار دهید و سپس رمز عبور را تایپ کنید اما اگر نام کاربری متفاوت است، نام کاربری را تایپ کنید و سپس Enter را فشار دهید.
لاگین یا ورود به اکانت در FTP Server
پس از تایپ کردن رمز عبور کلید Enter را فشار دهید. خوشبختانه پسوردی که تایپ کردهاید، در ترمینال لینوکس نمایش داده نمیشود. اگر پسورد صحیح باشد، ورود به حساب کاربری انجام میشود و در خط بعدی عبارت ftp> را مشاهده خواهید کرد.
پیدا کردن فایلها و انتقال فایل با دستور ftp
پس از ورود احتمالاً به دنبال لیستی از فایلهای موجود روی سرور FTP هستید. همانطور که در لینوکس از دستور ls برای لیست کردن فایل و فولدرها استفاده میکنید، حین کار با سرور FTP نیز میتوانید از این فرمان استفاده کنید.
برای دانلود و در واقع کپی کردن فایل از سرور، میتوانید از دستور get استفاده کنید و پس از این دستور، نام و آدرس فایل موردنظر را وارد کنید. به عنوان مثال برای دریافت فایل gc.c میبایست از فرمان get gc.c استفاده کرد.
همانطور که در تصویر زیر مشاهده میکنید، پس از تکمیل فرآیند انتقال فایل، سرور FTP پیام تکمیل فرآیند و همینطور حجم فایل منتقل شده و مدت زمان انتقال فایل و همینطور سرعت متوسط انتقال فایل را نمایش میدهد:
برای دانلود چند فایل در یک مرحله، میتوانید به جای get از دستور mget که در واقع مخفف Multiple Get است، استفاده کنید. این دستور قبل از شروع کپی کردن فایلها سوال میکند که آیا میخواهید هر یک از فایلها را به ترتیب دریافت کنید یا خیر. برای تأیید کلید Y و برای رد کردن، کلید N را فشار دهید.
دقت کنید که معمولاً در سرورهای FTP فایلهای مرتبط که میبایست با هم دانلود شود، به صورت یک فایل آرشیو و فشرده ذخیره میشود. معمولاً فرمت Gzip برای این کار انتخاب میشود چرا که پشتیبانی بسیار خوبی دارد. لذا پسوند فایلها tar.gz یا tar.bz2 است.
دستور mget از Wildcards پشتیبانی میکند. به عنوان مثال برای دانلود کردن تمام فایلهایی که پسوندشان c است، میتوانید دستور زیر را اجرا کنید. در واقع حرف * به معنی هر نام و عبارتی است.
برای اطلاعات بیشتر در مورد Wildcards و Regex یا عبارتهای منظم که در برنامهنویسی و بسیاری امور، کاربرد گسترده دارد، به مقالهی زیر مراجعه فرمایید و مثالها را بررسی کنید:
آپلود فایل روی سرور FTP با دستور ftp لینوکس
و اما حالت برعکس یعنی آپلود فایل از سیستم لینوکسی روی سرور از طریق ترمینال لینوکس: برای این مهم میبایست از دستور put استفاده کنید و پس از آن نام فایل را بنویسید.
دقت کنید که سطح دسترسی حساب کاربری شما در سرور FTP، محدود به خواندن داده نباشد و در واقع دسترسی نوشتن یا Write نیز داشته باشید.
به دستور زیر توجه کنید که فایلی به اسم Songs.tar.gz را روی سرور FTP آپلود میکند:
پس از تکمیل فرآیند، گزارشی از حجم فایل و زمان انتقال فایل و سرعت متوسط آپلود نمایش داده میشود.
برای آپلود کردن تعدادی فایل در یک مرحله نیز میتوانید از دستور mput استفاده کنید که مشابه mget است. این دستور هم قبل از آپلود کردن هر فایل، پیام تأیید نمایش میدهد و میبایست Y یا N را فشار دهید.
در مورد mput هم استفاده از Wildcards بسیار مفید است. به عنوان مثال با دستور زیر میتوانید تمام فایلهایی که پسوند odt دارند را آپلود کنید:
ایجاد فولدر و تغییر فولدر با فرمان fpt
اگر دسترسی حساب کاربری شما در سرور FTP اجازه بدهد، میتوانید فولدر ایجاد کنید و فولدرها را تغییر بدهید. برای این مهم میبایست از دستور mkdir استفاده کنید، درست مثل کار با فولدرها در کامپیوتر لینوکسی که در مقالهی زیر به آن پرداختیم:
برای تغییر دادن فولدر کاری، طبق معمول از فرمان cd استفاده کنید. البته حین کار با این فرمان، عبارت ftp> در ترمینال درج نمیشود و برای چک کردن اینکه در حال حاضر در کدام فولدر هستید، میتوانید از دستور pwd استفاده کنید.
و اما مثالی ساده: ابتدا با فرمان زیر فولدری به اسم music در سرور FTP ساخته میشود:
و با دستور cd فولدر کاری به فولدری که ساخته شده تغییر میکند:
برای چک کردن صحیح بودن فولدر کاری، از دستور pwd استفاده کنید:
و در نهایت برای آپلود فایل، از دستور put استفاده میشود:
نتیجه را در تصویر زیر مشاهده میکنید:
برای بازگشت به فولدر بالادست فولدر فعلی میتوانید به جای cd از فرمان cdup استفاده کنید که طبعاً روش سریعتری است:
دسترسی به فایلهای لوکال با فرمان ftp لینوکس
حین کار با فایل و فولدرها به کمک دستور ftp برای تغییر دادن فولدر کاری در کامپیوتر فعلی میتوانید از دستور lcd استفاده کنید. البته ممکن است با این دستور کمی وضعیت پیچیده و گیجکننده به نظر برسد و شاید بهتر باشد از فرمان ! استفاده کنید.
فرمان ! یک پنجرهی Shell برای چک کردن کامپیوتر لوکال باز میکند. در این پنجره میتوانید هر کاری که در پنجرهی ترمینال معمولی انجام میدهید را پیادهسازی کنید و به عنوان مثال با فرمان ls، لیست فایل و فولدرها را بررسی کنید یا از دستور cd برای تغییر فولدر استفاده کنید. با وارد کردن فرمان exit نیز میتوانید این پنجره را ببندید و به پرامپ ftp> برگردید و کار را دنبال کنید.
تغییر نام فایلها با فرمان ftp
برای تغییر نام فایلها در صورت داشتن دسترسی لازم، از فرمان rename استفاده کنید و نام فایل موردنظر و سپس نام جدید را وارد کنید. میتوانید پس از تغییر نام، فرمان ls را اجرا کنید و بررسی کنید که نام فایل به درستی تغییر کرده باشد:
دیلیت کردن فایلهای سرور FTP از طریق ترمینال لینوکس
برای حذف کردن یک فایل میتوانید از دستور delete استفاده کنید. فرمان mdelete نیز برای حذف تعدادی فایل کاربرد دارد و پیام تأیید نمایش میدهد. لذا میبایست از کلید Y برای تأیید و کلید N برای کنسل کردن استفاده کنید. به مثال زیر توجه کنید که فایل gc.o و سپس تمام فایلهایی که پسوند o دارند، حذف میشود:
آموزش کار با فرمان sftp در ترمینال لینوکس
در مثالهای قبلی از آدرس آیپی 192.168 استفاده شد که در واقع آدرس آیپی سرور موجود در شبکهی شخصی و محلی است. برای ارتباط با سرورها در فضای اینترنت و در واقع ارتباط با شبکهی خارجی، نباید از فرمان ftp و پروتکل ناامن FTP استفاده کرد. برای این موارد از sftp استفاده کنید.
در مثال زیر تلاش میشود که با پروتکل امن sftp ارتباط با سروری به آدرس test.trebex.net برقرار شود. با توجه به اینکه اعتبار هاست در اولین کانکشن تأیید نشده، کلید Y برای تأیید ارتباط فشار داده میشود. اگر نام کاربری که در این مثال demo است، قبلاً به واسط خط دستور ارسال شده باشد، در مورد نام کاربری سوال نمیشود و صرفاً پسورد سوال میشود.
استفاده از sftp درست شبیه به ftp است اما تفاوتهای زیر مطرح است که باید به آن دقت کنید:
- برای حذف کردن فایلهای به جای دستور delete از دستور rm استفاده کنید.
- برای حذف چندین فایل به جای mdelete از فرمان rm استفاده کنید.
- برای رفتن به فولدر بالادست به جای cdup از دستور cd .. استفاده کنید.
howtogeekسیارهی آیتی