在Linux系统中,文件传输是日常运维和开发工作中常见的操作需求,当需要在本地客户端与Linux服务器之间传输文件时,sz命令是一个非常实用且高效的工具,它作为lrzsz软件包的一部分,专为从Linux服务器向本地Windows或macOS系统下载文件而设计,配合rz命令(上传文件)使用,能够简化文件传输流程,提升工作效率。

sz命令的基本概述
sz命令(send ZMODEM)是基于ZMODEM协议的文件传输工具,通过串行或网络连接实现本地与服务器间的文件传输,与传统的FTP、SCP等传输方式相比,sz/rz命令的优势在于操作简单、无需额外配置,尤其适合在终端环境下快速传输小到中等大小的文件,其核心功能包括支持断点续传、批量文件传输、显示传输进度等,能够满足多数场景下的文件下载需求。
安装与准备工作
在使用sz命令前,需确保Linux系统中已安装lrzsz软件包,不同发行版的安装命令略有差异:
- 基于Debian/Ubuntu的系统:
使用apt包管理器,执行命令:sudo apt update && sudo apt install lrzsz
 - 基于RHEL/CentOS的系统:
使用yum或dnf包管理器,执行命令:sudo yum install lrzsz # CentOS 7及以下 sudo dnf install lrzsz # Fedora或CentOS 8及以上
 - 基于Arch Linux的系统:
使用pacman包管理器,执行命令:sudo pacman -S lrzsz
安装完成后,可通过
sz --version命令验证是否安装成功,本地客户端需支持ZMODEM协议的终端软件,如Xshell、SecureCRT、PuTTY(配合插件)或macOS自带的Terminal(通过brew install lrzsz安装支持工具)。 
sz命令的核心用法
sz命令的基本语法为:sz [选项] [文件或目录...],常用选项及其功能如下表所示:
| 选项 | 功能描述 | 
|---|---|
-a | 
以文本模式传输,自动转换换行符(适用于Windows和Unix系统间的文本文件) | 
-b | 
以二进制模式传输,不进行任何字符转换(适用于可执行文件、压缩包等) | 
-e | 
使用 escapes 协议,支持特殊字符处理 | 
-B | 
设置缓冲区大小(单位:字节),默认为32768,可通过-B102400等值调整 | 
-y | 
自动覆盖本地同名文件,无需确认 | 
-q | 
静默模式,不显示传输进度和提示信息 | 
-r | 
允许递归传输目录(需配合-r选项) | 
下载单个文件
最简单的用法是直接指定文件名,例如下载服务器上的test.txt文件到本地默认下载目录(通常为客户端用户的“下载”文件夹):  

sz test.txt
执行后,终端会显示传输进度,本地客户端将自动接收文件。
批量下载文件
可通过空格分隔多个文件名实现批量下载,例如同时下载file1.log、file2.zip和report.pdf:  
sz file1.log file2.zip report.pdf
下载整个目录
若需下载目录及其所有子文件和子目录,需使用-r选项(递归)并指定目录名:  
sz -r /path/to/directory
注意:部分终端软件可能需要手动触发传输(如Xshell中需右键选择“Receive File”或按快捷键)。
指定本地下载路径
默认情况下,sz命令将文件下载到客户端的默认目录,若需指定本地路径,可通过终端软件的设置实现,在Xshell中,可配置“文件传输”选项中的默认保存路径;在SecureCRT中,可通过“Options”->“Session Options”->“X/Y/Zmodem”设置。

常见问题与解决方案
传输中断后如何续传?
sz命令本身不支持断点续传,但可通过以下方式解决:  
- 使用
rsync或scp命令替代,它们支持断点续传:rsync --partial --progress --rsh=ssh user@server:/path/to/file ./local_path
 - 对于大文件,建议先压缩为tar包再传输,减少中断概率。
 
传输速度过慢怎么办?
影响传输速度的因素包括网络带宽、服务器负载、终端软件设置等,可尝试以下优化措施:
- 调整
sz命令的缓冲区大小,例如sz -B 65536 file(增大缓冲区至64KB); - 检查网络连接,避免在高峰期传输大文件;
 - 使用更高效的终端软件(如Xshell的SFTP功能替代ZMODEM)。
 
中文文件名乱码如何处理?
若文件名包含中文且出现乱码,通常是由于本地终端与服务器的字符编码不一致导致,可通过以下方式解决:
- 确保服务器端
LANG环境变量设置为UTF-8(如export LANG=zh_CN.UTF-8); - 在终端软件中设置字符编码为UTF-8(如Xshell的“终端”->“编码”选项)。
 
sz命令凭借其简单易用的特点,成为Linux服务器与本地客户端文件传输的常用工具,通过掌握其基本用法、选项配置及常见问题解决方案,用户可以高效完成文件下载任务,对于大文件传输或需要高安全性的场景,建议结合rsync、scp或SFTP等工具使用,以平衡传输效率与安全性,在实际操作中,还需根据具体需求选择合适的传输模式(文本/二进制)和终端软件,确保文件传输的稳定性和准确性。




















