Preface

由于最近需要在服务器上进行操作,所以常有在本地和服务器上进行文件传输的需求。因此装了 SFTP for VS code,也熟悉了一下 SFTP 的指令。可以说,这个工具真的是非常的便捷。这篇文章就简单介绍一下常用的 SFTP 指令,参考了 How To Use SFTP to Securely Transfer Files with a Remote Server 这篇文章。

Connect with SFTP

SFTP 默认使用 SSH 协议来建立远程连接。SSH 的连接命令为:

$ ssh user_name@ip

退出命令为:

$ exit

同样地,SFTP 的命令为:

$ sftp user_name@ip

默认连接到 port 22,当然也可以调整端口,通过-oPort命令。请自行搜索。

连接之后,终端会出现sftp> 标识。我们可以使用熟悉的 Linux 指令来进行操作。例如

sftp> pwd
sftp> ls
sftp> cd ..

这些指令是在远程服务器上的操作。

如果想在本地文件系统操作,需要在这些指令的前面加上一个 l

sftp> lpwd

Output
Local working directory: /Users/...
sftp> lls
sftp> lcd Desktop

遇到其它问题,可以使用help或者?指令来查看帮助。

Transfer Files with SFTP

如果想要从服务器上下载文件,可以使用get命令。

sftp> get <filename>

这个指令把该文件下载到本地系统中,并给它相同的命名。如果想要改名,方法为:

sftp> get <remoteFilename> <localFilename>

如果想要下载整个文件夹,可以加上-r

sftp> get -r <directoryName>

如果需要将本地文件上传至服务器,可以使用put指令。

sftp> put <filename>

其它操作类似get,请自行尝试。

可以使用!来切回到本地的终端,例如 Git Bash。

sftp> !

此后就能使用本地终端上的指令啦。如果想要回到 SFTP,可以使用exit指令:

$ exit

Else

SFTP 还有其它强大的功能,例如修改文件的权限、用户的分组等。chmodrmdir 等指令都是可以使用的——当然,如果直接输入这些指令,操作都是在服务器上进行的;如果想要在本地文件系统操作,需要在所有指令前面加上!。例如:

sftp> !chmod 644 <filename>