Skip to content

毛俊的博客

使用lrzsz上传和下载文件

lrzsz, linux1 min read

在通过SSH命令连接到服务器的时候,如果有上传和下载文件的需求,通常就需要借助其他工具来完成。比如SFTPSCP工具等。但是其中一个问题是,我们必须再次在工具中输入对应的目录。长期下来就会有一些不必要的重复工作:

  • 登入SSH并切换目录
  • pwd查询SSH目录
  • 打开FTP工具
  • 输入SSH对应的目录

如果使用Linux的工具比如SCPRSYNC等,可以省略用FTP工具打开需要上传或下载的SSH目录步骤。但是依然存在SSH目录过深,需要用长串的地址拼接本地目录和目标目录。而且SCP这些工具传输文件的时候,需要输入目标服务器的密码(配置公钥可以免登入)。

为了简化上面的步骤,可以借助Zmodem文件传输协议,常见的图形工具XshellSecureCRT都是支持Zmodem协议的,但Putty并不支持。

zmodem协议有以下的优点:

  1. 不需要输入很长的命令,直接使用rzsz命令加文件名即可。
  2. 不需要输入用户密码.rzsz命令直接可以穿透。

为了使用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常用的两个命令来上传和下载文件:

  • rz:接受文件
  • sz:发送文件

方便记忆可以将r记忆为receive,s记忆为send

在使用上要将ssh替换成zssh命令,即支持zmodem协议的sshzsshssh使用上并无差异,例如原先使用ssh连接服务器的命令如下:

使用zssh命令如下:

本地安装lrzsz后,再去对应的服务器上安装。这里以Centos为例安装lrzsz,输入以下命令进行安装:

1$ sudo yum -y install lrzsz

安装后就可以模拟测试文件传输,如果使用命令行终端则使用zssh连接安装了lrzsz的服务器。如果使用Xshell等图形工具正常连接即可。

2Press ^@ (C-Space) to enter file transfer mode, then ? for help

连接成功后可以看到一行命令提示,如果要使用zssh则输入ctrl+2(@)快捷键即可切换。(若不是zssh登入服务器没有该提示)。

如果需要上传本机文件到当前服务器,使用xshell等支持Zmodem协议的图形工具,直接输入命令rz接收文件,xshell会打开一个窗口可以方便的选择文件上传: rz上传文件

使用终端模拟工具则在当前服务器使用ctrl+2切换到zssh窗口:

1# 快捷键输入`ctrl+2`切换到`zssh`
2zssh>pwd // 查看一下本地目录
3zssh>ls // 查看本地文件
4zssh>sz foo.txt // 上传本地文件`foo.txt`到当前服务器

注意:切换到zssh后可以使用本地机器的终端命令。

如果需要下载当前服务器的文件到本机目录,使用xshell等支持Zmodem协议的图形工具则可以输入sz加上发送的文件名,xshell会打开一个窗口可以方便的保存文件位置:

sz下载文件

使用终端模拟工具则先用sz命令发送对应的文件:

1sz bar.txt // 使用`sz`命令发送`bar.txt`
2// `sz`命令后会出现一行乱码,然后快捷键`ctrl+2`切换到`zssh`
3zssh > pwd // 查看本机当前位置
4zssh > rz // 接收服务器`sz`发送的文件`bar.txt`

使用xshell等图形工具会弹窗让选择目录

使用lrzsz命令可以帮助我们在不使用sftp的情况下传输文件,并且可以方便快捷的上传和下载所在目录的文件。

(完)

© 2020 by 毛俊的博客. All rights reserved.
Theme by LekoArts