برای استفاده از پروتکل 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 و sftp برای انتقال فایل در لینوکس

استفاده از دستور ftp در لینوکس

برای اتصال به سایت‌ها از طریق پروتکل FTP، می‌توانید فرمان ftp و سپس آدرس آی‌پی سرور سایت موردنظر را تایپ کنید:

البته همان‌طور که اشاره کردیم استفاده از ftp بر بستر اینترنت بسیار خطرناک است. لذا اگر سرور در شبکه‌ی محلی قرار نگرفته، از این روش برای اتصال به سرور استفاده نکنید.

آموزش استفاده از دستور ftp و sftp برای انتقال فایل در لینوکس

در ادامه سرور پیام خوشامدگویی را نمایش می‌دهد که بسته به طراحی نرم‌افزار متفاوت است و سپس نام کاربری و پسورد سوال می‌شود. اگر نام اکانت شما در سرور FTP با نام کاربری شما در کامپیوتر لینوکسی یکسان است، Enter را فشار دهید و سپس رمز عبور را تایپ کنید اما اگر نام کاربری متفاوت است، نام کاربری را تایپ کنید و سپس Enter را فشار دهید.

لاگین یا ورود به اکانت در FTP Server

پس از تایپ کردن رمز عبور کلید Enter را فشار دهید. خوشبختانه پسوردی که تایپ کرده‌اید، در ترمینال لینوکس نمایش داده نمی‌شود. اگر پسورد صحیح باشد، ورود به حساب کاربری انجام می‌شود و در خط بعدی عبارت ftp> را مشاهده خواهید کرد.

آموزش استفاده از دستور ftp و sftp برای انتقال فایل در لینوکس

پیدا کردن فایل‌ها و انتقال فایل با دستور ftp

پس از ورود احتمالاً به دنبال لیستی از فایل‌های موجود روی سرور FTP‌ هستید. همان‌طور که در لینوکس از دستور ls برای لیست کردن فایل و فولدرها استفاده می‌کنید، حین کار با سرور FTP نیز می‌توانید از این فرمان استفاده کنید.

برای دانلود و در واقع کپی کردن فایل از سرور، می‌توانید از دستور get استفاده کنید و پس از این دستور، نام و آدرس فایل موردنظر را وارد کنید. به عنوان مثال برای دریافت فایل gc.c می‌بایست از فرمان get gc.c استفاده کرد.

همان‌طور که در تصویر زیر مشاهده می‌کنید، پس از تکمیل فرآیند انتقال فایل، سرور FTP پیام تکمیل فرآیند و همین‌طور حجم فایل منتقل شده و مدت زمان انتقال فایل و همین‌طور سرعت متوسط انتقال فایل را نمایش می‌دهد:

آموزش استفاده از دستور ftp و sftp برای انتقال فایل در لینوکس

برای دانلود چند فایل در یک مرحله، می‌توانید به جای get از دستور mget که در واقع مخفف Multiple Get است، استفاده کنید. این دستور قبل از شروع کپی کردن فایل‌ها سوال می‌کند که آیا می‌خواهید هر یک از فایل‌ها را به ترتیب دریافت کنید یا خیر. برای تأیید کلید Y و برای رد کردن، کلید N را فشار دهید.

دقت کنید که معمولاً در سرورهای FTP‌ فایل‌های مرتبط که می‌بایست با هم دانلود شود، به صورت یک فایل آرشیو و فشرده ذخیره می‌شود. معمولاً فرمت Gzip برای این کار انتخاب می‌شود چرا که پشتیبانی بسیار خوبی دارد. لذا پسوند فایل‌ها tar.gz یا tar.bz2 است.

دستور mget از Wildcards پشتیبانی می‌کند. به عنوان مثال برای دانلود کردن تمام فایل‌هایی که پسوندشان c است، می‌توانید دستور زیر را اجرا کنید. در واقع حرف * به معنی هر نام و عبارتی است.

آموزش استفاده از دستور ftp و sftp برای انتقال فایل در لینوکس

برای اطلاعات بیشتر در مورد Wildcards و Regex یا عبارت‌های منظم که در برنامه‌نویسی و بسیاری امور، کاربرد گسترده دارد، به مقاله‌ی زیر مراجعه فرمایید و مثال‌ها را بررسی کنید:

آپلود فایل روی سرور FTP با دستور ftp لینوکس

و اما حالت برعکس یعنی آپلود فایل از سیستم لینوکسی روی سرور از طریق ترمینال لینوکس: برای این مهم می‌بایست از دستور put استفاده کنید و پس از آن نام فایل را بنویسید.

دقت کنید که سطح دسترسی حساب کاربری شما در سرور FTP، محدود به خواندن داده نباشد و در واقع دسترسی نوشتن یا Write نیز داشته باشید.

به دستور زیر توجه کنید که فایلی به اسم Songs.tar.gz را روی سرور FTP آپلود می‌کند:

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

آموزش استفاده از دستور ftp و sftp برای انتقال فایل در لینوکس

برای آپلود کردن تعدادی فایل در یک مرحله نیز می‌توانید از دستور mput استفاده کنید که مشابه mget است. این دستور هم قبل از آپلود کردن هر فایل، پیام تأیید نمایش می‌دهد و می‌بایست Y یا N را فشار دهید.

در مورد mput هم استفاده از Wildcards بسیار مفید است. به عنوان مثال با دستور زیر می‌توانید تمام فایل‌هایی که پسوند odt دارند را آپلود کنید:

آموزش استفاده از دستور ftp و sftp برای انتقال فایل در لینوکس

ایجاد فولدر و تغییر فولدر با فرمان fpt

اگر دسترسی حساب کاربری شما در سرور FTP اجازه بدهد، می‌توانید فولدر ایجاد کنید و فولدرها را تغییر بدهید. برای این مهم می‌بایست از دستور mkdir استفاده کنید، درست مثل کار با فولدرها در کامپیوتر لینوکسی که در مقاله‌ی زیر به آن پرداختیم:

برای تغییر دادن فولدر کاری، طبق معمول از فرمان cd استفاده کنید. البته حین کار با این فرمان، عبارت ftp> در ترمینال درج نمی‌شود و برای چک کردن اینکه در حال حاضر در کدام فولدر هستید، می‌توانید از دستور pwd استفاده کنید.

و اما مثالی ساده: ابتدا با فرمان زیر فولدری به اسم music در سرور FTP ساخته می‌شود:

و با دستور cd فولدر کاری به فولدری که ساخته شده تغییر می‌کند:

برای چک کردن صحیح بودن فولدر کاری، از دستور pwd استفاده کنید:

و در نهایت برای آپلود فایل، از دستور put استفاده می‌شود:

نتیجه را در تصویر زیر مشاهده می‌کنید:

آموزش استفاده از دستور ftp و sftp برای انتقال فایل در لینوکس

برای بازگشت به فولدر بالادست فولدر فعلی می‌توانید به جای cd از فرمان cdup استفاده کنید که طبعاً روش سریع‌تری است:

آموزش استفاده از دستور ftp و sftp برای انتقال فایل در لینوکس

دسترسی به فایل‌های لوکال با فرمان ftp لینوکس

حین کار با فایل و فولدرها به کمک دستور ftp برای تغییر دادن فولدر کاری در کامپیوتر فعلی می‌توانید از دستور lcd استفاده کنید. البته ممکن است با این دستور کمی وضعیت پیچیده و گیج‌کننده به نظر برسد و شاید بهتر باشد از فرمان ! استفاده کنید.

فرمان ! یک پنجره‌ی Shell برای چک کردن کامپیوتر لوکال باز می‌کند. در این پنجره می‌توانید هر کاری که در پنجره‌ی ترمینال معمولی انجام می‌دهید را پیاده‌سازی کنید و به عنوان مثال با فرمان ls، لیست فایل و فولدرها را بررسی کنید یا از دستور cd برای تغییر فولدر استفاده کنید. با وارد کردن فرمان exit نیز می‌توانید این پنجره را ببندید و به پرامپ ftp> برگردید و کار را دنبال کنید.

آموزش استفاده از دستور ftp و sftp برای انتقال فایل در لینوکس

تغییر نام فایل‌ها با فرمان ftp

برای تغییر نام فایل‌ها در صورت داشتن دسترسی لازم، از فرمان rename استفاده کنید و نام فایل موردنظر و سپس نام جدید را وارد کنید. می‌توانید پس از تغییر نام، فرمان ls را اجرا کنید و بررسی کنید که نام فایل به درستی تغییر کرده باشد:

آموزش استفاده از دستور ftp و sftp برای انتقال فایل در لینوکس

دیلیت کردن فایل‌های سرور FTP از طریق ترمینال لینوکس

برای حذف کردن یک فایل می‌توانید از دستور delete استفاده کنید. فرمان mdelete نیز برای حذف تعدادی فایل کاربرد دارد و پیام تأیید نمایش می‌دهد. لذا می‌بایست از کلید Y برای تأیید و کلید N برای کنسل کردن استفاده کنید. به مثال زیر توجه کنید که فایل gc.o و سپس تمام فایل‌هایی که پسوند o دارند، حذف می‌شود:

آموزش استفاده از دستور ftp و sftp برای انتقال فایل در لینوکس

آموزش کار با فرمان sftp در ترمینال لینوکس

در مثال‌های قبلی از آدرس آی‌پی 192.168 استفاده شد که در واقع آدرس آی‌پی سرور موجود در شبکه‌ی شخصی و محلی است. برای ارتباط با سرورها در فضای اینترنت و در واقع ارتباط با شبکه‌ی خارجی، نباید از فرمان ftp و پروتکل ناامن FTP استفاده کرد. برای این موارد از sftp استفاده کنید.

در مثال زیر تلاش می‌شود که با پروتکل امن sftp ارتباط با سروری به آدرس test.trebex.net برقرار شود. با توجه به اینکه اعتبار هاست در اولین کانکشن تأیید نشده، کلید Y برای تأیید ارتباط فشار داده می‌شود. اگر نام کاربری که در این مثال demo است، قبلاً به واسط خط دستور ارسال شده باشد، در مورد نام کاربری سوال نمی‌شود و صرفاً پسورد سوال می‌شود.

آموزش استفاده از دستور ftp و sftp برای انتقال فایل در لینوکس

استفاده از sftp درست شبیه به ftp است اما تفاوت‌های زیر مطرح است که باید به آن دقت کنید:

  • برای حذف کردن فایل‌های به جای دستور delete از دستور rm استفاده کنید.
  • برای حذف چندین فایل به جای mdelete از فرمان rm استفاده کنید.
  • برای رفتن به فولدر بالادست به جای cdup از دستور cd .. استفاده کنید.

آموزش استفاده از دستور ftp و sftp برای انتقال فایل در لینوکس