1 sftp简介
SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议,它是一个交互式文件传输程式。它类似于 ftp, 但它进行加密传输,比FTP有更高的安全性,并且支持断点续传。
SFTP 为 SSH的一部份,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。
2 sftp连接参数
2.1 查看连接参数
[root@localhost opt]# sftp --help
usage: sftp [-1Cv] [-B buffer_size] [-b batchfile] [-F ssh_config]
[-o ssh_option] [-P sftp_server_path] [-R num_requests]
[-S program] [-s subsystem | sftp_server] host
sftp [user@]host[:file ...]
sftp [user@]host[:dir[/]]
sftp -b batchfile [user@]host
2.2 连接参数介绍
-1:指定使用协议版本1。
-C:启用压缩。
-v:提高登录水平(打印更多的debug信息)。
-B:指定sftp传输使用的缓存大小,默认值为32768bytes。
-b:通过指定脚本,调用脚本命令,而不是在shell命令行输入命令。
-F:设定一个可变动的用户配置给ssh.这个选项直接会被传递到ssh(1),如[root@localhost tmp]# sftp -F /tmp/test [email protected]
-o:指定配置信息,如[root@localhost /]# sftp -o Port=22 [email protected]
-P:Connect directly to a local sftp server (rather than via ssh(1)). This option may be useful in debugging the client and server.
-R:指定同一时刻有多少请求,默认为64。增加该参数可以轻微的提高传输速度,不过会占用更多的内存。
-S:指定用于加密连接的程序,如ssh。
-s:subsystem | sftp_server
Specifies the SSH2 subsystem or the path for an sftp server on the remote host. A path is useful for using sftp over protocol version 1, or when the remote sshd(8) does not have an sftp subsystem configured.
2.3 sftp登录方式
sftp [user@]host[:dir[/]]:默认情况下登录到远程的/root目录。指定目录的话,如/opt,则登录到远程/opt目录
例如:
[root@localhost /]# sftp [email protected]:/opt
sftp [user@]host[:file ...]:直接下载远程文件到本地
例如:
[root@localhost /]# sftp [email protected]:/opt/testfile.txt
3 sftp使用方法
3.1 sftp登陆后,通过help命令查看使用方法
sftp> help
可用命令:
bye 退出sftp
cd path 更改远程路径,如sftp> cd /opt
chgrp grp path 将文件“path”的组更改为“group”
chmod mode path 将文件“path”的权限更改为“mode”
chown own path 将文件“path”的属主更改为“owner”
df [-hi] [path] 显示当前路径或系统文件路径的统计信息,如空间使用情况及inode(索引节点)使用情况,如sftp> df -h或df -i。inode介绍可参考我其它文章【http://blog.csdn.net/jesseyoung/article/details/42524813】。
exit 退出sftp
get [-P] remote-path [local-path] 下载远端服务器指定文件(支持断点续传),如sftp> get /opt/testfile.tar /opt/
help 显示帮助信息
lcd path 更改本地路径,如sftp> lcd /opt
lls [ls-options [path]] 显示本地文件夹列表,如sftp> lls /tmp
lmkdir path 创建本地目录,如sftp> lmkdir /tmp/test/
ln oldpath newpath 创建远程软连接,如sftp> ln /tmp/testfile /tmp/test.symlink
lpwd 显示本地工作路径,如sftp> lpwd
ls [-1aflnrSt] [path] 显示远程目录列表,如如sftp> ls -l /opt/
lumask umask 指定在建立文件时预设的权限掩码,关于umask的详细介绍可参考我其它的文章【http://blog.csdn.net/jesseyoung/article/details/42525341】。
mkdir path 创建远程目录,如sftp> mkdir /tmp/test/
progress 进度表切换显示,如sftp> progress 0
put [-P] local-path [remote-path] 上传本地文件到远程服务器。如sftp> put /opt/testfile.tar /opt/
pwd 显示远程工作目录,如sftp> pwd
quit 退出sftp
rename oldpath newpath 重命名远程文件(夹),如
rm path 删除远程文件,如sftp> rm /opt/testfile.tar
rmdir path 删除远程文件夹,如sftp> rmdir /opt/testdir/
symlink oldpath newpath 创建远程软连接,如sftp> symlink /tmp/testfile /tmp/test.symlink
version 查看sftp版本信息。
!command 在本地窗口执行命令,如sftp> !ls
! 退出sftp
? help的同义词
3.2 断点续传测试
通过get命令获取远程服务器2GB大小文件
sftp> get /opt/2GBfile.tar
Fetching /opt/2GBfile.tar
/opt/2GBfile.tar 50% 1024MB 14.3MB/s 01:35 ETA
/opt/2GBfile.tar 100% 2048MB 16.6MB/s 04:20
传输过程中,如传输50%时,中断网络1分钟。
网络开启后自动传输后续50%文件,而非重新传输,节省了时间。
3.3 命令行直接传输
直接将远程文件/opt/testfile.txt传输到本地/tmp/目录下
[root@localhost /]# sftp [email protected]:/opt/testfile.txt /tmp/