前言
网络中传输文件的方式有很多种,常用的有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.