在通过SSH
命令连接到服务器的时候,如果有上传和下载文件的需求,通常就需要借助其他工具来完成。比如SFTP
、SCP
工具等。但是其中一个问题是,我们必须再次在工具中输入对应的目录。长期下来就会有一些不必要的重复工作:
SSH
并切换目录pwd
查询SSH
目录FTP
工具SSH
对应的目录如果使用Linux
的工具比如SCP
、RSYNC
等,可以省略用FTP
工具打开需要上传或下载的SSH
目录步骤。但是依然存在SSH
目录过深,需要用长串的地址拼接本地目录和目标目录。而且SCP
这些工具传输文件的时候,需要输入目标服务器的密码(配置公钥可以免登入)。
为了简化上面的步骤,可以借助Zmodem文件传输协议,常见的图形工具Xshell
、SecureCRT
都是支持Zmodem
协议的,但Putty
并不支持。
zmodem
协议有以下的优点:
rz
、sz
命令加文件名即可。rz
、sz
命令直接可以穿透。为了使用Zmodem
传输协议上传和下载文件,我们首先安装支持该协议的工具。
其中lrzsz就是该协议的实现工具之一。lrzsz
这个工具只适合传输小文件,不适合传输大型文件。大文件传输更推荐使用Rsync
传输,支持增量差异传输。
本地安装lrzsz
,如果你使用上面的Xshell
等工具已经默认集成zmodem
协议的支持了。不需要额外安装lrzsz
了,但是如果使用GNU/Linux
终端则需要安装。这里以我使用的Archlinux
系统为例,在命令行输入以下命令安装:
1$ sudo pacman -S zssh # 让ssh支持zmodem协议2$ sudo pacman -S lrzsz # 提供rz,sz命令
lrzsz常用的两个命令来上传和下载文件:
方便记忆可以将
r
记忆为receive,s
记忆为send
在使用上要将ssh
替换成zssh
命令,即支持zmodem
协议的ssh
。
zssh
和ssh
使用上并无差异,例如原先使用ssh
连接服务器的命令如下:
使用zssh
命令如下:
1zssh [email protected]
本地安装lrzsz
后,再去对应的服务器上安装。这里以Centos
为例安装lrzsz
,输入以下命令进行安装:
1$ sudo yum -y install lrzsz
安装后就可以模拟测试文件传输,如果使用命令行终端则使用zssh
连接安装了lrzsz
的服务器。如果使用Xshell
等图形工具正常连接即可。
1$ zssh [email protected]2Press ^@ (C-Space) to enter file transfer mode, then ? for help
连接成功后可以看到一行命令提示,如果要使用zssh
则输入ctrl+2(@)
快捷键即可切换。(若不是zssh
登入服务器没有该提示)。
如果需要上传本机文件到当前服务器,使用xshell
等支持Zmodem
协议的图形工具,直接输入命令rz
接收文件,xshell
会打开一个窗口可以方便的选择文件上传:
使用终端模拟工具则在当前服务器使用ctrl+2
切换到zssh
窗口:
1# 快捷键输入`ctrl+2`切换到`zssh`2zssh>pwd // 查看一下本地目录3zssh>ls // 查看本地文件4zssh>sz foo.txt // 上传本地文件`foo.txt`到当前服务器
注意:切换到
zssh
后可以使用本地机器的终端命令。
如果需要下载当前服务器的文件到本机目录,使用xshell
等支持Zmodem
协议的图形工具则可以输入sz
加上发送的文件名,xshell
会打开一个窗口可以方便的保存文件位置:
使用终端模拟工具则先用sz
命令发送对应的文件:
1sz bar.txt // 使用`sz`命令发送`bar.txt`2// `sz`命令后会出现一行乱码,然后快捷键`ctrl+2`切换到`zssh`3zssh > pwd // 查看本机当前位置4zssh > rz // 接收服务器`sz`发送的文件`bar.txt`
使用
xshell
等图形工具会弹窗让选择目录
使用lrzsz
命令可以帮助我们在不使用sftp
的情况下传输文件,并且可以方便快捷的上传和下载所在目录的文件。
(完)