在Linux和Unix-like操作系统中,shell是用户与系统交互的核心工具,而文件传输是日常运维和开发中的常见需求,sz命令作为Zmodem协议的实现之一,广泛应用于通过串口或SSH连接进行文件传输的场景,本文将详细解析sz命令的功能、使用方法、参数配置及实际应用场景,并辅以常见问题解答,帮助读者全面掌握这一实用工具。

sz命令的基本概念与作用
sz命令是“send Zmodem”的缩写,属于Zmodem文件传输协议的一部分,常与rz(receive Zmodem)命令配合使用,Zmodem协议是一种高效的文件传输协议,支持断点续传、批量传输和自动校验等功能,特别适用于低速网络或不稳定连接的环境,sz命令的主要功能是通过当前终端会话将本地文件发送到远程设备,而rz命令则用于从远程设备接收文件到本地,这两个命令通常与终端模拟器(如SecureCRT、Xshell、minicom等)配合使用,通过伪终端(pty)实现数据传输。
sz命令的安装与依赖
在大多数Linux发行版中,sz命令通常包含在lrzsz
软件包中,若系统中未安装该命令,可通过以下命令进行安装:
- 对于基于Debian/Ubuntu的系统:
sudo apt-get install lrzsz
- 对于基于RHEL/CentOS的系统:
sudo yum install lrzsz
- 对于基于Arch Linux的系统:
sudo pacman -S lrzsz
安装完成后,可通过sz --version
命令检查版本信息,确认安装是否成功,需要注意的是,sz命令的运行依赖于终端模拟器对Zmodem协议的支持,因此在使用前需确保终端软件已启用相关功能(如SecureCRT中需勾选“Zmodem”选项)。
sz命令的基本语法与常用参数
sz命令的基本语法结构为:sz [选项] [文件名...]
,以下为常用参数及其功能说明:

参数 | 功能描述 |
---|---|
-a |
以文本模式传输文件,自动转换换行符(适用于Windows与Linux系统间的文件传输) |
-b |
以二进制模式传输文件,不进行任何字符转换(适用于可执行文件或压缩包) |
-e |
进行 escapes 处理,避免特殊字符导致传输中断 |
-E |
启用 escapes 处理,并忽略所有控制字符 |
-X |
禁用XON/XOFF流控制,适用于某些终端兼容性问题 |
-Y |
始终覆盖同名文件,不提示确认 |
-q |
静默模式,不显示传输进度和提示信息 |
-v |
显示详细传输信息,包括文件大小、传输速度等 |
-c |
指定校验和算法(如-c crc32 ),用于传输后校验文件完整性 |
启用Zmodem的自动续传功能(需远程端支持) |
sz命令的使用场景与实例
单文件传输
将本地文件test.txt
发送到远程设备:
sz test.txt
执行后,终端模拟器会弹出文件选择对话框或直接开始传输,传输完成后显示确认信息。
批量文件传输
同时传输多个文件或整个目录:
sz test1.txt test2.txt /path/to/directory/
若需传输目录及其子目录,可结合tar
命令打包后传输:

tar -czf - /path/to/directory/ | sz - archive.tar.gz
指定传输模式
传输二进制文件(如可执行程序)时,需使用-b
参数避免字符转换:
sz -b program.bin
静默模式传输
在脚本中自动传输文件时,可使用-q
参数避免交互提示:
sz -q config.conf
带校验的传输
为确保文件完整性,可添加校验和参数:
sz -c crc32 important_data.dat
sz命令的注意事项
- 终端兼容性:sz命令依赖终端模拟器的Zmodem支持,若传输失败,需检查终端软件设置(如SecureCRT中需启用“Zmodem with Xmodem/CRC”选项)。
- 权限问题:传输文件时需确保当前用户对目标路径有写权限,否则可能导致传输失败。
- 网络稳定性:Zmodem协议支持断点续传,但在极端不稳定的网络环境下,建议分小文件传输或使用压缩包减少传输次数。
- 字符编码:传输文本文件时,若两端系统编码不同(如Windows的GBK与Linux的UTF-8),需注意
-a
参数的换行符转换可能无法解决编码问题,需额外处理。
相关问答FAQs
问题1:sz传输文件时提示“Zmodem is not enabled”,如何解决?
解答:此错误通常是因为终端模拟器未启用Zmodem协议,以SecureCRT为例,需在“Options” -> “Session Options” -> “Terminal” -> “Xmodem/Zmodem”中勾选“Zmodem Enable”选项,并确保“Zmodem Receive”和“Zmodem Send”均被启用,若使用SSH客户端,还需检查SSH配置是否允许伪终端(pty)分配。
问题2:sz传输大文件时速度较慢,如何优化传输效率?
解答:可通过以下方式优化:
- 使用
-b
参数以二进制模式传输,避免不必要的字符转换; - 压缩文件后再传输(如
tar -czf file.tar.gz /large/dir/ | sz - file.tar.gz
); - 检查网络带宽和延迟,若通过串口传输,可降低波特率以减少错误率;
- 使用
-v
参数监控传输速度,若速度异常,可尝试更换终端模拟器或调整Zmodem缓冲区大小。