Linux常用命令-sftp

命令

sftp

描述

secure file transfer program
安全文件传输

用法

1
2
3
4
5
6
sftp [-1246aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher] [-D sftp_server_path]
[-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port]
[-R num_requests] [-S program] [-s subsystem | sftp_server] host
sftp [user@]host[:file ...]
sftp [user@]host[:dir[/]]
sftp -b batchfile [user@]host

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Options:
-1 使用v1版本
-2 使用v2版本
-4 使用IPv4
-6 使用IPv6
-a 断点续传,如果文件在传输过程中有更新,则会导致断点续传后的文件错误
-B 指定sftp传输文件时使用的缓冲区大小,默认为32K
-b 批处理模式,从文件中读取命令
-C 启用压缩
-F 指定用户ssh_config配置文件
-f 请求在传输后立即将文件刷新到磁盘
-i 指定私钥文件
-l 限制带宽,单位Kbit/s
-o 指定ssh选项,用于临时覆盖配置文件中的选项,详情参考man ssh_config
-P 指定端口
-p 保留原始文件的时间和权限属性
-q 静默模式
-r 递归复制目录,注意scp默认会解析符号链接,即同步复制符号链接下的文件,而非链接本身
-v 显示详情

交互模式命令,包括本地操作命令如lcd和远程操作命令如cd
help 帮助
bye/exit 退出
cd 更改远程目录
chgrp 更改文件属组,gid必须为数字
chmod 更改文件权限
chown 更改文件的属主,uid必须为数字
df [-hi] 显示文件系统大小
lcd path 更改本地目录
lmkdir 创建本地文件夹
ln [-s] 创建链接
lpwd 显示本地工作目录
lls [ls-options [path]] 显示本地目录文件列表,选项同下面的ls命令
ls [-1afhlnrSt] [path] 显示远程目录文件列表,支持部分标准的ls命令选项-1afhlnrSt
lumask 设置本地umask
mkdir 创建目录
progress 开启或关闭进度条显示
get [-afPpr] remote-path [local-path] 下载文件,-a追加,-P或-p保留文件的时间戳和权限,-r递归
put [-afPpr] local-path [remote-path] 上传文件,-a追加,-P或-p保留文件的时间戳和权限,-r递归
pwd 显示远程工作目录
reget [-Ppr] remote-path [local-path] 断点下载,等同于get -a
reput [-Ppr] [local-path] remote-path 断点上传,等同于put -a
rename 重命名文件
rm 删除文件
rmdir 删除空目录
symlink 创建软链接
version 显示sftp版本
!command 执行本地命令

注意

建议配置sftp服务时限制用户目录权限,避免用户登录后可以遍历整个文件系统

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 下载sftp上的文件到本地/tmp目录,默认路径为sftp用户的家目录
$ sftp www@192.168.31.11:file1 /tmp
Connected to 192.168.31.11.
Fetching /home/www/file1 to /tmp/file1
/home/www/file1 100% 4 10.9KB/s 00:00
# 下载sftp上指定路径下的文件到本地并重命名
$ sftp www@192.168.31.11:/tmp/file1 /tmp/file2
Connected to 192.168.31.11.
Fetching /tmp/file1 to /tmp/file2
/tmp/file1 100% 4 7.2KB/s 00:00
# 下载sftp上的指定目录,注意不支持下载目录中的软链接,将自动忽略
$ sftp -r www@192.168.31.11:/data/www/ /tmp/

# 登录sftp服务器,进入交互模式
$ sftp www@192.168.31.11
www@192.168.31.11 password:
Connected to 192.168.31.11.
sftp> version
SFTP protocol version 3
# 显示远程文件
sftp> ls -al
# 显示本地文件
sftp> lls -al
# 切换远程目录
sftp> cd /data
# 切换本地目录
sftp> lcd /tmp
# 显示远程目录
sftp> pwd
# 显示本地目录
sftp> lpwd
# 下载远程文件
sftp> get /data/www/a.tar.gz
# 上传文件到远程指定目录
sftp> put file1 /data/www/
# 重命名文件
sftp> rename file1 file2
# 删除文件
sftp> rm file2
# 删除空目录,如果为非空目录,则需要先删除目录下的所有文件
sftp> rmdir dir1
# 退出
sftp> bye