sz 命令,全称是 send Zmodem,是一款在 Linux/Unix 系统下广泛使用的文件传输工具,主要用于通过串行端口或网络连接(如 SSH)将本地文件或目录传输到远程计算机,它与 rz 命令(receive Zmodem)常配对使用,构成一对简单高效的文件传输方案,尤其在服务器管理和远程运维场景中,因其无需图形界面、操作简便而备受青睐,以下将从基本语法、核心功能、使用场景、参数详解及注意事项等方面,详细介绍 sz 命令的使用方法。

基本语法与工作原理
sz 命令的基本语法结构为:sz [选项] [文件或目录列表],其核心工作原理是通过 Zmodem 协议实现文件传输,该协议支持断点续传、批量传输、双向数据流等功能,且在传输过程中能自动校验数据完整性,确保文件准确无误,当在终端执行 sz 命令后,本地系统会启动 Zmodem 发送程序,远程终端(如 SecureCRT、Xshell 等)需配合支持 Zmodem 的客户端接收文件,传输过程通常在后台自动完成,无需手动干预。
核心功能与常见使用场景
单文件传输
最基础的用法是传输单个文件,例如将本地目录下的 test.txt 发送到远程主机:
sz test.txt
执行后,终端会显示传输进度,包括文件名、大小、传输速度及剩余时间,远程客户端会弹出保存对话框或自动保存到默认目录。
批量文件传输
通过空格分隔多个文件或使用通配符,可一次性传输多个文件,例如传输当前目录下所有 .log 文件:

sz *.log
或传输多个指定文件:
sz file1.txt file2.jpg file3.tar.gz
目录传输(需递归参数)
若需传输整个目录及其子目录,需结合 -r 或 -R 参数(递归传输),例如传输 data 目录:
sz -r data
data 目录下的所有文件和子目录会被完整打包传输(实际为逐个传输文件结构,而非压缩包)。
指定传输路径(需客户端配合)
默认情况下,远程客户端接收的文件会保存到其默认工作目录,但部分终端工具(如 SecureCRT)支持通过 -y 参数指定本地保存路径,

sz -y /path/to/save/test.txt
注意:此功能依赖终端客户端的支持,并非所有工具都适用。
显示传输进度与详细信息
默认情况下,sz 命令会显示基本的传输进度,若需更详细的信息(如传输速率、校验和等),可结合 -v 参数(verbose 模式):
sz -v test.txt
此时终端会输出更详细的传输日志,便于排查问题。
常用参数详解
sz 命令支持多种参数,通过 sz --help 可查看完整列表,以下是常用参数的功能说明:
| 参数 | 全称 | 功能说明 | 示例 |
|---|---|---|---|
-r / -R |
recursive | 递归传输目录,包含子目录和文件 | sz -r project/ |
-b |
binary | 以二进制模式传输文件,适用于可执行文件、图片等非文本文件 | sz -b program.exe |
-e |
escape | 使用 escape 转义,确保特殊字符(如控制字符)不被错误解析 | sz -e file_with_special_chars.txt |
-E |
escape-all | 对所有字符进行转义,适用于极端特殊字符场景 | sz -E corrupted_file.txt |
-c |
crc | 使用 CRC 校验增强数据完整性(默认启用,无需手动添加) | sz -c data.zip |
-v |
verbose | 显示详细传输信息,包括速率、校验结果等 | sz -v large_file.iso |
-q |
quiet | 静默模式,不显示传输进度信息,适合脚本调用 | sz -q config.conf |
-y |
指定本地保存路径(需终端客户端支持) | sz -y /backup/report.pdf |
|
-o |
覆盖已存在的同名文件(默认提示覆盖) | sz -o existing_file.txt |
|
-p |
禁用自动暂停功能,适用于大文件传输 | sz -p video.mp4 |
使用注意事项
- 终端客户端支持:sz 命令的传输依赖远程终端工具对 Zmodem 协议的支持,常见工具如 SecureCRT、Xshell、PuTTY(需配合插件)等均内置支持,使用前需确保终端启用了 Zmodem 功能(通常在“文件传输”或“选项”中设置)。
- 权限问题:传输文件的本地用户需对文件有读取权限,远程接收用户需对目标目录有写入权限,否则会因权限不足导致传输失败。
- 网络稳定性:Zmodem 虽支持断点续传,但在网络极不稳定的环境下,仍可能出现传输中断,建议在网络稳定时传输大文件。
- 文件名编码:若本地系统与远程系统的文件名编码不一致(如本地为 UTF-8,远程为 GBK),可能导致文件名乱码,需提前统一编码或使用支持编码转换的工具。
- 大文件传输:传输超大文件(如数 GB)时,建议结合
-p参数禁用自动暂停,避免因终端空闲超时中断传输;同时可通过nohup命令让传输在后台运行,nohup sz large_file.iso > /dev/null 2>&1 &
相关问答FAQs
问题1:sz 命令传输文件时提示“Zmodem transfer failed”,如何解决?
解答:该错误通常由以下原因导致:(1)终端工具未启用 Zmodem 协议支持,需检查终端设置(如 SecureCRT 中需在“选项”->“文件传输”中勾选 Zmodem);(2)网络连接中断,可通过 ping 命令测试网络稳定性,重新传输;(3)文件权限不足,使用 ls -l 检查文件读取权限,或使用 chmod 调整权限;(4)远程客户端接收路径不存在或无写入权限,需确认路径有效且权限正确。
问题2:sz 命令如何传输文件到远程主机的指定目录,而不是默认目录?
解答:sz 命令本身无法直接指定远程接收目录,其功能是将本地文件“发送”给远程终端,由终端客户端决定保存路径,但可通过以下间接实现:(1)在远程主机上通过 cd 命令切换到目标目录后,再执行 sz 命令(需确保本地终端支持工作目录同步);(2)使用支持“远程路径指定”的终端工具(如 Xshell 的“文件传输”功能中可手动输入远程路径);(3)若需自动化传输,可通过 scp 或 rsync 命令直接指定远程路径,scp local.txt user@remote:/path/to/remote/dir/。
