sftp命令
sftp命令全称是Secure File Transfer Protocol。是一款交互式的文件传输程序,sftp命令的运行和使用方式与ftp命令相似,但是,sftp命令对传输的所有信息使用ssh加密,它还支持公钥认证和压缩等功能。
语法格式
sftp [参数] [IP或主机名]
常用参数:
-B | 指定传输文件时缓冲区的大小 |
---|---|
-P | port,制定连接的端口号 |
-l | 使用ssh协议版本1 |
-b | 指定批处理文件 |
-C | 使用压缩 |
-o | 指定ssh选项 |
-F | 指定ssh配置文件 |
-R | 指定一次可以容忍多少请求数 |
-v | 升高日志等级 |
实例:
使用sftp命令链接到另一台服务器:
执行本地 Shell 命令
![command]
sftp> !df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 26G 7.3G 19G 28% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 142M 873M 14% /boot
tmpfs 378M 0 378M 0% /run/user/0
[root@NODE01 ~]# sftp 192.168.8.102
Connected to 192.168.8.102.
sftp>
#因为node02在node01上配置了免密所以不需要密码
[root@NODE02 /opt]# sftp root@node01
root@node01's password:
Permission denied, please try again.
root@node01's password:
Connected to node01.
sftp> quit
#直接命令行中带密码
下载一个lftp,lunix环境下就可以用了
yum -y install lftp
lftp sftp://user:password@host -e "put local-file.name; bye"
[root@NODE02 ~]# lftp sftp://root:123@node01
lftp root@node01:~
#在这个界面可以使用lunix命令,普通的命令是在sftp服务下使用的,命令前面加l是在本服务器使用
sftp> lcd shell-study/sftp/
sftp> get temp.txt
Fetching /root/temp.txt to temp.txt
/root/temp.txt 100% 154 62.9KB/s 00:00
sftp> lls
temp.txt
从远程服务器拉取文件
使用 get
命令可以从远程服务器拉取文件到本地:
sftp> get remoteFile [newName]
mget一次拉取多个文件,get一次只能拉取一个文件
如果不指定 newName
,将使用和远程服务器相同的文件名。
使用 -r
参数可以拉取整个目录:
sftp> get -r remoteDirectory
从本地上传文件到服务器
使用 put
命令可以从本地上传文件到服务器:
sftp> put localFile
同样的,可以使用 -r
参数来上传整个目录,但是有一点要注意,如果服务器上不存在这个目录需要首先新建:
sftp> mkdir folderName
sftp> put -r folderName