2 min read

SFTP 用法

FTP 诸君大概都用过,SFTP 用过的估计比较少。简单说,它就是 ftp 前加个 secure,通过 ssh 通道在本地及远程服务器间进行文件传输,更为安全。

连接

ssh 的连接通常是这样:

ssh sam@zfanw.com

然后输入密码。

sftp 基本就是把 ssh 换作 sftp

sftp sam@zfanw.com

如果配置了 ssh 的 config 文件,使用私钥/公钥的形式连接远程服务器,则更简单了:

sftp linode

连接完成后,终端显示:

sftp >

下载文件

ftp 主要的作用就是文件传输,sftp 提供的下载文件命令是 get

get -r picture

这个命令把 picture 目录下载到本地。

get sam.png

这个命令把 sam.png 图片下载到本地。

本地的哪里??

我们可以借助 lpwd 命令查看本地的当前工作目录 – 就是在 pwd 命令前加个 l 表示 local。可以想知,我们同样可以使用 lcd 来切换本地的工作目录。

上传文件

sftp 提供的上传命令是 put

put sam.png

这个命令把本地当前工作目录下的 sam.png 上传到远程服务器的工作目录下。

put -r picture

上传整个目录文件。

更多命令

sftp > 终端输入 help 即可以查看 sftp 提供的所有命令:

sftp> help 
Available commands:
bye                                Quit sftp
cd path                            Change remote directory to 'path'
chgrp grp path                     Change group of file 'path' to 'grp'
chmod mode path                    Change permissions of file 'path' to 'mode'
chown own path                     Change owner of file 'path' to 'own'
df [-hi] [path]                    Display statistics for current directory or
                                   filesystem containing 'path'
exit                               Quit sftp
get [-Ppr] remote [local]          Download file
help                               Display this help text
lcd path                           Change local directory to 'path'
lls [ls-options [path]]            Display local directory listing
lmkdir path                        Create local directory
ln [-s] oldpath newpath            Link remote file (-s for symlink)
lpwd                               Print local working directory
ls [-1afhlnrSt] [path]             Display remote directory listing
lumask umask                       Set local umask to 'umask'
mkdir path                         Create remote directory
progress                           Toggle display of progress meter
put [-Ppr] local [remote]          Upload file
pwd                                Display remote working directory
quit                               Quit sftp
rename oldpath newpath             Rename remote file
rm path                            Delete remote file
rmdir path                         Remove remote directory
symlink oldpath newpath            Symlink remote file
version                            Show SFTP version
!command                           Execute 'command' in local shell
!                                  Escape to local shell
?                                  Synonym for help
报告问题 修订