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

استفاده از دستور SCP برای انتقال ایمن فایل ها در لینوکس

آموزش انتقال فایل از طریق FTP

در این آموزش می‌خواهیم به بررسی نحوه انتقال فایل از طریق SFTP بپردازیم؛ SFTP (پروتکل انتقال فایل SSH) یک پروتکل فایل ایمن است که برای دسترسی، مدیریت و انتقال فایل‌ها از طریق یک انتقال SSH رمزگذاری شده، مورد استفاده قرار می‌گیرد.
در مقایسه با پروتکل FTP سنتی، SFTP تمام عملکردهای FTP را ارائه می‌دهد و پیکربندی ساده تری دارد.
بر خلاف دستور scp، که فقط فایل‌ها را انتقال می‌دهد، دستور sftp به شما امکان می‌دهد تا طیف وسیعی از عملیات را روی فایل‌های سیستم‌های دیگر بصورت ریموت انجام داده و انتقال فایل‌ها را بهبود دهید.
در این آموزش، نحوه استفاده از دستور sftp لینوکس را به شما نشان خواهیم داد.
 

 

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

ایجاد یک اتصال SFTP

SFTP بر روی یک مدل سرور-کلاینت کار می‌کند و سیستمی متکی بر SSH است که از کلیه مکانیزم‌های تأیید هویت SSH پشتیبانی می‌کند.
اگرچه احراز هویت سنتی با رمز عبور به صورت پیش فرض تنظیم شده و آسان تر قابل استفاده است، ولیکن اگر مرتباً از طریقSSH/SFTP به سرور خود متصل می‌شوید، توصیه می‌شود کلیدهای SSH ایجاد کرده و یک ورود با SFTP بدون رمز عبور تنظیم نمایید؛ در صورتی که نمی‌دانید چگونه کلید SSH خود را بر روی سرور قرار دهید، این مقاله را مطالعه کنید: ساخت و استفاده از کلیدهای SSH در لینوکس

برای ایجاد یک اتصال SFTP به یک سیستم ریموت، از دستور sftp به دنبال نام کاربری سرور ریموت و آدرس IP یا نام دامنه استفاده کنید:

sftp remote_username@server_ip_or_hostname

در صورت استفاده از تایید هویت پسوردی، از شما خواسته می‌شود رمز عبور کاربر را وارد کنید. پس از اتصال، سرور ریموت یک پیام تأیید و اعلان sftp> را نشان می‌دهد.

Connected to remote_username@server_ip_or_hostname.
sftp>

اگر سرور SSH از پورت 22 به عنوان پورت پیشفرض خود استفاده نمی‌کند، از گزینه oPort برای مشخص کردن پورت جایگزین استفاده کنید:

sftp -oPort=custom_port remote_username@server_ip_or_hostname

 

دستورات SFTP

بسیاری از دستورات SFTP با دستوراتی که در SSH وجود دارد مشابه یا یکسان هستند.
شما می‌توانید با تایپ دستور help یا ? لیستی از تمام دستورات موجود SFTP دریافت نمایید.

help

در این صورت خروجی به صورت زیر خواهد بود:

Available commands:
bye                                Quit sftp
cd path                            Change remote directory to 'path'
...
...
version                            Show SFTP version
!command                           Execute 'command' in local shell
!                                  Escape to local shell
?                                  Synonym for help

 

پیمایش سیستم با SFTP

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

pwd

در اینصورت خروجی به صورت زیر خواهد بود:

Remote working directory: /home/remote_username

برای لیست کردن فایل‌ها و دایرکتوری‌ها از دستور ls استفاده کنید:

ls

برای رفتن به دایرکتوری دیگر، از دستور cd استفاده نمایید. به عنوان مثال، برای رفتن به دایرکتوری /tmp ، دستور زیر را تایپ کنید:

cd /tmp

تمام دستورات فوق برای پیمایش و کار برروی دایرکتوری‌های سیستم ریموت استفاده می‌شوند. فرمان sftp دستوراتی را برای پیمایش محلی، مدیریت اطلاعات و فایل‌ها نیز ارائه می‌دهد.
به عنوان مثال، برای چاپ دایرکتوری درگیر (فعلی) محلی، دستور زیر را وارد نمایید:

cd lpwd

در اینصورت خروجی به صورت زیر خواهد بود:

Local working directory: /home/local_username

 

انتقال فایل‌ها با SFTP

SFTP  به شما امکان می‌دهد فایل‌ها را به صورت ایمن بین دو دستگاه انتقال دهید.

در بیشتر موارد، شما از یک کلاینت SFTP دسکتاپ مانند WinSCP یا FileZilla برای اتصال به سرور ریموت و بارگیری یا بارگذاری فایل‌ها استفاده می‌کنید. با این حال، دستور sftp برای زمانی مفید است که بروی یک سرور بدون رابط کاربری گرافیکی کار می‌کنید و می‌خواهید فایل‌ها را انتقال دهید یا وقتی که می‌خواهید سایر عملیات را روی فایل‌های ریموت اجرا نمایید.

بارگیری فایل‌ها با دستور SFTP

پس از ورود به سرور ریموت، دایرکتوری درگیر فعلی شما دایرکتوری اصلی کاربر ریموت است.
هنگام بارگیری فایل‌ها با دستور sftp ، فایل‌ها در دایرکتوری‌ای که با دستور sftp مشخص نموده اید، بارگیری می‌شوند.
برای بارگیری یک فایل واحد از سرور ریموت، از دستور get استفاده کنید:

get filename.zip

خروجی باید چیزی شبیه به این باشد:

Fetching /home/remote_username/filename.zip to filename.zip
/home/remote_username/filename.zip                           100%   24MB   1.8MB/s   00:13

اگر می‌خواهید فایل بارگیری شده را با نام دیگری ذخیره کنید، نام را نیز پس از آن مشخص کنید:

get filename.zip local_filename.zip

برای بارگیری یک دایرکتوری از سیستم ریموت، از گزینه بازگشتی -r استفاده نمایید:

get -r remote_directory

اگر انتقال فایل انجام نشد یا قطع شد، می‌توانید انتقال را با استفاده از دستور reget از سر بگیرید. ساختار دستور reget شبیه ساختار دستور get است:

reget filename.zip

 

بارگیری فایل‌ها با دستور SFTP

برای بارگذاری یک فایل از یک دایرکتوری محلی در یک سرورFTP ریموت، از دستور put استفاده کنید:

put filename.zip

خروجی باید چیزی شبیه به این باشد:

Uploading filename.zip to /home/remote_username/filename.zip
filename.zip                          100%   12MB   1.7MB/s   00:06

اگر می‌خواهید فایلی را که در دایرکتوری فعلی شما نیست بارگذاری کنید، از مسیر مطلق فایل استفاده کنید.
هنگام کار با دستور put می‌توانید از همان گزینه‌های دردسترس دستور get استفاده کنید.
برای کپی کردن یک دایرکتوری محلی، می‌توانید دستور زیر را تایپ کنید:

put -r locale_directory

برای از سرگیری یک بارگذاری متوقف شده، از دستور زیر استفاده نمایید:

reput filename.zip

 

اصلاح فایل با  SFTP

اگرچه می‌توانید از طریق SSH به سرور خود متصل می‌شوید و کارهایتان را با استفاده از ترمینال SSH انجام دهید، اما در برخی شرایط (همانند استفاده از backUp Storage ها)، کاربر شما ممکن است تنها دسترسی SFTP به سرور ریموت داشته باشد.
SFTP به شما امکان می‌دهد برخی از دستورات اساسی اصلاح فایل را انجام دهید. موارد زیر نمونه‌هایی از نحوه استفاده از SFTP ارائه شده است:

• نمایش میزان مصرف دیسک سیستم ریموت:

df

در اینصورت خروجی به صورت زیر خواهد بود:

        Size         Used        Avail       (root)    %Capacity
    20616252      1548776     18002580     19067476           7%

 

ایجاد یک دایرکتوری جدید در سرور ریموت:

mkdir directory_name

 

تغییر نام یک فایل در سرور ریموت:

rename file_name new_file_name

 

حذف یک فایل در سرور ریموت:

rm file_name

 

حذف یک دایرکتوری در سرور ریموت:

rmdir directory_name

 

تغییر مجوزهای یک فایل در سیستم ریموت:

chmod 644 file_name

 

تغییر مالک یک فایل در سیستم ریموت:

chown user_id file_name

 شما باید شناسه کاربری را برای دستورات chown و chgrp  ارائه دهید.

 

تغییر مالک گروه یک فایل ریموت با:

chgrp group_id file_name

 

 

منبع:

How to Use Linux SFTP Command to Transfer Files