前言
網絡中傳輸文件的方式有很多種,常用的有ftp、tftp、sftp、http,本文介紹下sftp。
sftp表示SSH文件傳輸協議或者Secure文件傳輸協議,它提供了一個安全的連接來進行文件的傳輸。
大多數情況下,因為其提供的基本安全特性和可以使用SSH連接的能力,所以SFTP被認為是優於普通的FTP。
實際應用
連接
默認情況下,SFTP使用SSH協議來進行權限認證與建立安全連接,所以其進行權限認證的方式與SSH協議進行權限認證的方式相同。
可以使用密碼或者使用密鑰,通常情況下,使用密鑰更加安全並且節省時間。
在使用sftp協議連接到服務端前,可以先通過ssh命令來連接如果成功則,表示ssh已經配置成功。
然后將ssh替換為sftp創建sftp連接,連接成功后就可以進行sftp操作。
獲得幫助
輸入help或者?指令后,查看可以使用的指令
導航
對於文件傳輸任務來說,其中一個最重要的功能就是在遠程文件系統層次中跳轉,從而來定位到需要操作的文件。我們可以在本地使用一些導航指令,得到與在服務端執行此命令相同的結果。
1)獲取當前位置pwd
2)列出服務端當前目錄下的文件ls
3)目錄跳轉cd
所有的指令都有個與之對應的本地版本,通過在指令前添加l,如lpwd、lls、lcd等,從而實現在本地的文件系統目錄中進行操作。
文件傳輸
文件傳輸協議最核心的功能就是傳輸文件,通過在本地和遠程文件系統中不斷跳轉,選擇指定文件和目錄后,便可以進行文件的傳輸。
1)遠程文件傳輸至本地文件系統
如果希望從遠程服務器下載文件到本地,則可以直接使用get指令。正如下圖所示,get指令將一遠程文件下載為本地一同名文件。
使用get指令傳輸文件時,也可以為下載的本地文件重新指定一文件名,get remoteFile localFile
get指令可以指定可選標識,如-r:遞歸傳輸整個文件夾內容 -p:保持傳輸文件訪問權限和修改時間等屬性
2)本地文件傳輸至遠程文件
如果希望那個傳輸本地文件到遠程文件系統,則可以直接使用put指令。如下圖所示,
put指令可以指定類似get指令的可選標識,如-r
3)磁盤空間使用情況查詢
在上傳和下載文件過程中,需要關注磁盤使用情況,以免出現磁盤空間不足。此時可以使用df指令來查詢服務端磁盤空間情況。
注意:對於df命令來說,沒有與之對應的本地指令版本。如果要查詢本地磁盤情況,需要使用'!'命令,將狀態強制切換到本地shell狀態,此時就可以正常執行df指令來查看本地磁盤使用情況。此時如果需要返回到SFTP會話狀態中,可以執行exit.