در آموزشهای قبلی، راههای مختلفی را برای انتقال فایل بین کامپیوتر و سرور را مورد بررسی قرار دادیم؛ از جمله:
استفاده از دستور SCP برای انتقال ایمن فایل ها در لینوکس
در این آموزش میخواهیم به بررسی نحوه انتقال فایل از طریق 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
منظورتون رو از «کانفیگ بشه» متوجه نشدم.
اما اگر به دنبال نرم افزاری برای اتصال به storage خودتون هستید، میتونید از WinSCP استفاده کنین.