2026/8/29 2:37:22

Linux rz命令完整教程:安装、用法与常见问题排查

Linux rz命令完整教程:安装、用法与常见问题排查 平时在 Linux 服务器上折腾文件传输最常被问到的一个命令就是rz。尤其是刚接触 Linux 的同学经常遇到“rz选完文件后不知道文件传到哪去了”的困惑。网上关于rz的帖子很多但大多只介绍“能上传文件”对参数解释、断点续传、终端要求、文件去向等问题讲得不够系统。这篇教程就把rz命令从概念、环境、参数、实战到排错完整梳理一遍。无论你是刚入门的运维新手还是经常在 Windows 和 Linux 之间导文件的开发同学都能通过本文快速掌握rz的高频用法和避坑技巧。1. rz 命令是什么能解决什么问题1.1 为什么需要 rzLinux 服务器通常没有图形界面日常操作全靠 SSH 终端。早期在 Windows 和 Linux 之间传文件一般得用 FTP、SFTP 工具或者先在本地做好文件再通过跳板机上传步骤比较繁琐。rz命令来自lrzsz软件包它基于 ZMODEM 协议实现“从本地终端发送文件到远程服务器”的能力。换句话说你只要在终端里执行rz就会弹出文件选择窗口选中本地文件后文件就能直接传到当前 SSH 会话所在的服务器目录里。rz的全称可以理解为 “Receive ZMODEM”也就是接收方向的文件接收命令。与之对应的是szSend ZMODEM用于把远程服务器的文件下载到本地。这两个命令配合使用几乎成了 Linux 运维和开发同学在终端里传文件的标配。1.2 rz 与 sz、scp、sftp 的定位差异很多同学会把rz和scp、sftp混在一起实际上它们的使用场景有明显区别命令传输方向依赖条件适用场景rz本地 - 服务器终端工具支持 ZMODEMWindows 桌面和 Linux 服务器互传小文件sz服务器 - 本地终端工具支持 ZMODEM从服务器下载小文件到本地scp双向SSH 服务服务器之间、本机到服务器传输文件sftp双向SSH 服务交互式文件管理支持目录浏览rsync双向SSH 服务增量同步、大目录备份简单理解rz适合“懒人操作”一条命令 弹窗选择文件scp/sftp更适合脚本化、自动化以及大文件传输。1.3 适用场景下面这些场景用rz非常方便在 Windows 上通过 Xshell、SecureCRT 或 FinalShell 连接 Linux 服务器需要快速上传安装包、脚本、配置文件。在嵌入式 Linux 开发板上调试程序没有可视化界面临时把编译好的二进制文件传到板子上。在跳板机环境下本地无法直接通过scp访问目标服务器只能在终端里用rz逐层传递文件。所以rz虽然功能简单但在特定网络环境里是无可替代的“急转弯工具”。2. 环境准备与工具要求2.1 安装 lrzszrz命令由lrzsz软件包提供。大多数 Linux 发行版默认没有安装需要手动安装。CentOS / RHEL 系列使用 yum 安装yum install -y lrzszUbuntu / Debian 系列使用 apt 安装apt update apt install -y lrzszmacOS 如果习惯用 Homebrew 管理工具也可以安装brew install lrzsz安装完成后验证命令是否存在which rz which sz如果能看到类似/usr/bin/rz的输出说明安装成功。2.2 终端工具支持情况rz命令本身只是一个接收端程序真正负责“弹文件选择窗口”的是 SSH 终端工具。如果终端工具不支持 ZMODEM 协议执行rz后往往只会看到一串乱码或者画面卡住不动。所以使用rz前要先确认终端工具支持情况Xshell支持弹窗选择本地文件最常用。SecureCRT支持弹窗选择本地文件。FinalShell支持界面化上传也内嵌了类似rz的按钮。Windows Terminal原生 SSH 不支持 ZMODEM 弹窗需要配合插件或改用scp。MobaXterm支持但走的是自己的传输协议也可以用rz。纯命令行 sshLinux/macOS 自带不支持弹窗不建议用rz。换句话说rz不是在所有终端下都好用它依赖的是“终端 协议”的组合。2.3 检查当前环境是否可用在服务器上执行一个最简单的检查echo test /tmp/rz_test.txt cd /tmp rz --version正常情况下会输出类似rz (lrzsz) 0.12.20如果提示command not found就是没有安装lrzsz回到 2.1 小节安装即可。3. rz 命令核心用法拆解3.1 基本语法rz的基本语法很简单rz [选项] [文件...]注意rz后跟的文件参数在绝大多数交互场景下是不用写的因为它是通过弹窗让你选择本地文件而不是在命令行里指定文件名。比较常见的直接用法cd /home/user/upload rz执行后终端会打开一个本地文件选择窗口选中文件点击确定文件就会上传到当前目录。3.2 常用参数详解rz的参数不算多但有几个高频参数非常实用。参数作用说明-y覆盖已存在的同名文件默认情况下如果服务器已有同名文件会提示是否覆盖使用-y可以自动覆盖-b以二进制方式传输推荐传输压缩包、可执行文件、图片等场景避免文件损坏-a以文本方式传输会做换行符转换适合纯文本文件但二进制文件慎用-e对传输内容进行转义解决个别终端下控制字符被误解析的问题-E和-e相反关闭转义在 Xshell 下误传乱码时可以尝试加-E-p保护原文件的修改时间和属性用于需要保留文件时间戳的场景-q静默模式不输出传输过程信息脚本调用时比较合适-v输出调试信息排查传输异常时使用--timeout设置超时时间网络状况不佳时可调整在 Xshell 等终端下最常用的组合其实就两个rz -y rz -by-y解决覆盖确认-b保证二进制文件完整传输。3.3 参数组合建议实际应用中不同文件类型可以按下面的组合选择上传压缩包或可执行文件rz -by上传日志或纯文本配置rz -y上传需要保留原始时间戳的文件rz -py上传过程中出现乱码或卡死先试rz -e再试rz -E这些组合通常能覆盖 90% 以上的日常需求。4. 完整实战案例下面用一个完整示例演示从安装lrzsz到上传、下载、验证结果的整个过程。4.1 准备测试文件假设本地 Windows 桌面上有一个文件app.tar.gz该文件是一个约 2MB 的压缩包后续要传到 Linux 服务器的/home/user/upload目录。在本地我们可以先确认文件存在并且大小正确。4.2 安装并确认环境先登录到 Linux 服务器执行环境检查# 查看系统版本 cat /etc/os-release # 查看是否已安装 lrzsz which rz如果没有返回路径就安装yum install -y lrzsz安装完成后再次确认which rz rz --version4.3 上传文件进入目标目录并启动rzmkdir -p /home/user/upload cd /home/user/upload rz -by这时 Xshell 会弹出本地文件选择窗口选择app.tar.gz点击打开。传输完成后终端会打印类似下面的传输摘要rz: app.tar.gz 已收到 2.0 MB 在 3 秒4.4 使用 sz 下载文件如果我们需要把服务器上的文件下载到本地可以在服务器目录执行szcd /home/user/upload sz app.tar.gz此时终端同样会弹出窗口选择保存到本地的位置点击确认后文件就会从服务器下载到本地。4.5 批量上传下载rz支持一次选择多个文件进行上传在文件选择窗口里可以用 Ctrl 或 Shift 多选。批量下载到本地同样可以sz file1.log file2.log file3.log也可以使用通配符sz *.log这样可以把当前目录下所有.log文件一次性下载到本地。4.6 验证结果上传完成后在服务器上检查文件是否完整cd /home/user/upload ls -lh md5sum app.tar.gzmd5sum会输出一个文件指纹。将其与本地计算出的md5值进行比对如果一致说明文件传输完整。5. 常见问题与排查思路5.1 上传的文件到底去了哪里这是初学者最常问的问题也是每次讲rz都会有人踩的坑。rz上传文件后文件会保存在“执行rz命令时所在的当前工作目录”也就是 SSH 会话的pwd目录。排查方法pwd ls -lh如果你上传完文件找不到大概率是因为进入了一个和你预期不一样的目录。比如你在/root下执行了rz但心里想着传到/home/user/upload结果文件自然不在目标目录。所以执行rz之前一定要先cd到目标目录。5.2 传输大文件或库文件时老中断很多人在传输几十 MB 甚至上百 MB 的文件时会遇到“传一半就断开”“终端卡死”“rz: 连接丢失”的情况。常见原因和解决思路如下问题现象常见原因解决思路传输到一半断开网络不稳定SSH 会话超时改用sz/rz的断点续传能力或换scp/sftp传输库文件老中断终端工具的空闲超时时间太短在 Xshell 会话属性里把“保持活动”间隔调小传输文件过大导致卡顿ZMODEM 协议在弱网下表现一般建议先用tar压缩或改用scp、rsync文件内容损坏使用了-a文本模式统一使用-b二进制模式如果是几 MB 的库文件一般不会有问题如果达到几百 MBrz的体验确实不如scp。可以在传输前先把文件压缩减少传输体积。5.3 执行 rz 后终端没有反应执行rz后终端迟迟不弹文件选择窗口或者直接显示乱码通常是下面几个原因终端工具不支持 ZMODEM 协议。比如 Windows Terminal、纯ssh命令需要换成 Xshell、SecureCRT、FinalShell。当前登录用户的 PATH 不完整找不到rz命令。可以尝试/usr/bin/rz。终端编码问题导致rz与终端握手失败。可以调整终端编码为 UTF-8然后重试。你已经处于一个嵌套会话中比如在screen或tmux里执行rz终端支持的弹窗机制可能失效。排查时先确认终端类型再确认是否安装了lrzsz最后检查是否在嵌套会话中。5.4 文件内容乱码或二进制文件损坏如果上传压缩包或可执行文件后解压报错、运行报错通常是因为上传时使用了文本模式。rz -a会在传输过程中进行换行符转换这在纯文本环境下问题不大但二进制文件会被破坏。预防方法就一条二进制文件一律使用-b参数。rz -b对于配置文件、脚本等纯文本文件用-y直接上传即可不用刻意加-b。5.5 无法覆盖已有文件如果服务器上已经存在同名文件执行rz可能会出现覆盖提示也可能因为某些终端的默认行为而没有弹出确认。如果你希望直接覆盖就加-yrz -y如果不想覆盖可以选择不覆盖或者先手动改名再上传。5.6 上传文件名包含特殊字符有时候本地文件名包含空格、中文、括号等特殊字符。rz本身能够处理大部分情况但个别终端对文字编码处理不好可能导致文件名乱码。建议上传前把文件名改成简单的 ASCII 字符组合。文件名尽量不要包含空格使用下划线代替。中文文件名在部分终端下可能出现乱码如果服务器和终端都使用 UTF-8一般没问题。6. 最佳实践与工程建议6.1 生产环境优先选 scp / sftprz虽然方便但它依赖终端弹窗无法很好地融入自动化脚本。在服务器之间传输文件或者需要在 CI/CD 流程里传产物时scp、sftp、rsync是更可靠的选择。例如 Linux 服务器之间传文件scp /tmp/app.tar.gz user192.168.1.100:/home/user/upload/这个命令不依赖终端弹窗也不需要人工选择文件非常适合脚本化运维。6.2 大文件传输建议如果文件超过 100MBrz在弱网下的表现往往不理想。此时可以分两步走在服务器上使用rsync或scp从文件源拉取。如果没有直达通道只能通过跳板机传建议压缩后分段传输。压缩命令示例tar czf app.tar.gz /data/app/ split -b 50M app.tar.gz app.tar.gz.part_然后在本地端把这些分片下载后合并cat app.tar.gz.part_* app.tar.gz tar xzf app.tar.gz6.3 文件完整性校验不管用rz还是scp传输文件传输后都应校验文件完整性。传输前在本地或源服务器计算md5。传输后在目标服务器再次计算md5并比对。md5sum app.tar.gz如果文件很大可以使用sha256sum替代安全性更高。6.4 终端工具与编码规范建议开发环境统一使用 UTF-8 编码。在 Xshell 中可以在“文件 - 属性 - 终端 - 编码”中设置为 UTF-8。这样上传中文文件名时乱码的概率会小很多。另外rz依赖弹窗所以不要在纯命令行模式下依赖它。生产服务器如果没有图形化终端支持最好提前安装scp客户端避免临时抓瞎。6.5 安全边界rz本身不涉及远程登录密码它只是接收文件安全性主要取决于 SSH 会话本身。但要注意不要在不可信的终端环境里随意执行rz并接收来路不明的文件。收到的文件如果来源不明确先放隔离目录用杀毒软件或安全扫描工具检查后再打开。从生产服务器下载文件时注意文件权限和数据合规要求不要轻易把包含敏感信息的配置文件传到本地。7. 小结与其他高频命令rz作为lrzsz软件包里的核心命令核心价值是“终端里快速上传文件”。它最大的优势是简单最大的限制是必须依赖支持 ZMODEM 协议的工具。记牢下面这张速查表基本就能应对日常使用命令作用rz -y上传并覆盖同名文件rz -by二进制模式上传并覆盖sz file下载单个文件sz *.log批量下载日志which rz检查 rz 是否安装除了rzLinux 运维中还有很多高频命令会在“60 秒掌握”系列里继续讲到比如scp、find、tar、du、ln、chmod等。每个命令单独看都不难真正拉开差距的是对参数细节和异常场景的熟悉程度。如果你在实践中遇到 “rz上传后找不到文件”、“传输中断”等问题可以先对照第 5 小节的排查表过一遍。多数情况下问题都出在终端工具不支持、文件太大、目录没有预先切换这三个点上。把这些基础问题解决干净rz在开发机和内网服务器之间传文件效率还是很高的。