linux系统中的rz和sz命令是基于Zmodem协议的文件传输工具,常被用于本地终端和远程服务器之间的小文件互传,当这两个命令无法使用时,需要从多个维度排查问题。

一、检查lrzsz软件包是否安装
rz和sz命令属于lrzsz软件包,很多最小化安装的linux系统默认不会预装这个包,这是命令不能用的最常见原因。
1. 不同发行版的检查与安装方法
首先可以通过命令检查是否已经安装lrzsz:
# 检查lrzsz是否安装 rpm -qa | grep lrzsz # centos、rhel等rpm系系统 dpkg -l | grep lrzsz # ubuntu、debian等deb系系统
如果没有输出结果,说明软件包未安装,执行对应命令安装即可:
# centos、rhel系统安装 yum install -y lrzsz # 或者dnf install -y lrzsz (新版本fedora、centos8+) dnf install -y lrzsz # ubuntu、debian系统安装 apt-get update apt-get install -y lrzsz
二、检查终端是否支持Zmodem协议
rz和sz依赖终端支持Zmodem协议,部分终端默认不开启该支持,或者本身不支持该协议,会导致命令执行后无反应或者报错。
1. 常见终端的支持情况
| 终端类型 | 支持情况 | 处理方式 |
|---|---|---|
| SecureCRT、Xshell | 原生支持 | 确认会话选项中Zmodem协议已开启 |
| Windows Terminal + SSH | 默认不支持 | 需要搭配lrzsz工具并配置相关参数 |
| 原生Linux终端、macOS终端 | 支持 | 无需额外配置 |
| Putty | 不支持 | 建议更换为Xshell等支持Zmodem的终端 |
2. 终端配置检查示例(Xshell)
打开Xshell对应会话的属性,找到文件传输选项,确认Zmodem相关选项已勾选,同时检查接收文件的默认保存路径是否存在且有写入权限。
三、检查权限与路径问题
如果软件已经安装、终端也支持协议,但是执行命令还是失败,需要排查权限和路径相关的问题。
- 命令路径问题:执行
which rz和which sz查看命令是否存在于系统PATH中,如果路径不存在,可以手动添加路径或者重新安装软件包。 - 文件权限问题:如果使用sz下载文件,需要确认当前用户对目标文件有读取权限;使用rz上传文件,需要确认当前目录有写入权限。
- 磁盘空间问题:如果服务器磁盘空间已满,也会导致文件传输失败,可以通过
df -h命令检查磁盘使用情况。
四、常见报错与解决方法
1. 报错:command not found
这是典型的未安装lrzsz软件包的表现,按照前文提到的安装方法安装软件包即可解决。
2. 报错:TRANSFER CANCELLED
通常是终端不支持Zmodem协议,或者传输过程中网络中断导致,更换支持的终端后重新尝试即可。
3. 执行rz后无文件选择弹窗
如果是使用SecureCRT等终端,需要在会话选项中开启使用Zmodem自动下载选项,同时确认终端版本是否过低,升级终端版本后重试。
五、替代方案
如果始终无法解决rz和sz的使用问题,可以使用其他文件传输方式替代:
- 使用
scp命令:基于SSH协议传输文件,语法示例:# 本地文件上传到服务器 scp /local/path/file.txt user@server_ip:/remote/path/ # 服务器文件下载到本地 scp user@server_ip:/remote/path/file.txt /local/path/
- 使用
sftp工具:交互式文件传输工具,执行sftp user@server_ip连接后,使用put上传、get下载文件。 - 如果是web服务相关文件,也可以通过
wget或者curl命令直接拉取网络上的文件。
注意:rz和sz仅适合小文件传输,大文件传输建议使用scp或者rsync工具,稳定性和速度都更有保障。