Linux rz命令完整教程:安装、用法与常见问题排查
2026/8/29 2:36:44 网站建设 项目流程

平时在 Linux 服务器上折腾文件传输,最常被问到的一个命令就是rz。尤其是刚接触 Linux 的同学,经常遇到“rz选完文件后,不知道文件传到哪去了”的困惑。网上关于rz的帖子很多,但大多只介绍“能上传文件”,对参数解释、断点续传、终端要求、文件去向等问题讲得不够系统。

这篇教程就把rz命令从概念、环境、参数、实战到排错完整梳理一遍。无论你是刚入门的运维新手,还是经常在 Windows 和 Linux 之间导文件的开发同学,都能通过本文快速掌握rz的高频用法和避坑技巧。

1. rz 命令是什么,能解决什么问题

1.1 为什么需要 rz

Linux 服务器通常没有图形界面,日常操作全靠 SSH 终端。早期在 Windows 和 Linux 之间传文件,一般得用 FTP、SFTP 工具,或者先在本地做好文件再通过跳板机上传,步骤比较繁琐。

rz命令来自lrzsz软件包,它基于 ZMODEM 协议实现“从本地终端发送文件到远程服务器”的能力。换句话说,你只要在终端里执行rz,就会弹出文件选择窗口,选中本地文件后,文件就能直接传到当前 SSH 会话所在的服务器目录里。

rz的全称可以理解为 “Receive ZMODEM”,也就是接收方向的文件接收命令。与之对应的是sz(Send ZMODEM),用于把远程服务器的文件下载到本地。这两个命令配合使用,几乎成了 Linux 运维和开发同学在终端里传文件的标配。

1.2 rz 与 sz、scp、sftp 的定位差异

很多同学会把rzscpsftp混在一起,实际上它们的使用场景有明显区别:

命令传输方向依赖条件适用场景
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 安装 lrzsz

rz命令由lrzsz软件包提供。大多数 Linux 发行版默认没有安装,需要手动安装。

CentOS / RHEL 系列使用 yum 安装:

yum install -y lrzsz

Ubuntu / Debian 系列使用 apt 安装:

apt update apt install -y lrzsz

macOS 如果习惯用 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
  • 纯命令行 ssh(Linux/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 --version

4.3 上传文件

进入目标目录并启动rz

mkdir -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 下载文件

如果我们需要把服务器上的文件下载到本地,可以在服务器目录执行sz

cd /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.gz

md5sum会输出一个文件指纹。将其与本地计算出的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压缩,或改用scprsync
文件内容损坏使用了-a文本模式统一使用-b二进制模式

如果是几 MB 的库文件,一般不会有问题;如果达到几百 MB,rz的体验确实不如scp。可以在传输前先把文件压缩,减少传输体积。

5.3 执行 rz 后终端没有反应

执行rz后,终端迟迟不弹文件选择窗口,或者直接显示乱码,通常是下面几个原因:

  • 终端工具不支持 ZMODEM 协议。比如 Windows Terminal、纯ssh命令,需要换成 Xshell、SecureCRT、FinalShell。
  • 当前登录用户的 PATH 不完整,找不到rz命令。可以尝试/usr/bin/rz
  • 终端编码问题导致rz与终端握手失败。可以调整终端编码为 UTF-8,然后重试。
  • 你已经处于一个嵌套会话中,比如在screentmux里执行rz,终端支持的弹窗机制可能失效。

排查时先确认终端类型,再确认是否安装了lrzsz,最后检查是否在嵌套会话中。

5.4 文件内容乱码或二进制文件损坏

如果上传压缩包或可执行文件后,解压报错、运行报错,通常是因为上传时使用了文本模式。

rz -a会在传输过程中进行换行符转换,这在纯文本环境下问题不大,但二进制文件会被破坏。

预防方法就一条:二进制文件一律使用-b参数

rz -b

对于配置文件、脚本等纯文本文件,用-y直接上传即可,不用刻意加-b

5.5 无法覆盖已有文件

如果服务器上已经存在同名文件,执行rz可能会出现覆盖提示,也可能因为某些终端的默认行为而没有弹出确认。

如果你希望直接覆盖,就加-y

rz -y

如果不想覆盖,可以选择不覆盖,或者先手动改名,再上传。

5.6 上传文件名包含特殊字符

有时候本地文件名包含空格、中文、括号等特殊字符。rz本身能够处理大部分情况,但个别终端对文字编码处理不好,可能导致文件名乱码。

建议:

  • 上传前把文件名改成简单的 ASCII 字符组合。
  • 文件名尽量不要包含空格,使用下划线代替。
  • 中文文件名在部分终端下可能出现乱码,如果服务器和终端都使用 UTF-8,一般没问题。

6. 最佳实践与工程建议

6.1 生产环境优先选 scp / sftp

rz虽然方便,但它依赖终端弹窗,无法很好地融入自动化脚本。在服务器之间传输文件,或者需要在 CI/CD 流程里传产物时,scpsftprsync是更可靠的选择。

例如 Linux 服务器之间传文件:

scp /tmp/app.tar.gz user@192.168.1.100:/home/user/upload/

这个命令不依赖终端弹窗,也不需要人工选择文件,非常适合脚本化运维。

6.2 大文件传输建议

如果文件超过 100MB,rz在弱网下的表现往往不理想。此时可以分两步走:

  1. 在服务器上使用rsyncscp从文件源拉取。
  2. 如果没有直达通道,只能通过跳板机传,建议压缩后分段传输。

压缩命令示例:

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.gz

6.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 是否安装

除了rz,Linux 运维中还有很多高频命令会在“60 秒掌握”系列里继续讲到,比如scpfindtardulnchmod等。每个命令单独看都不难,真正拉开差距的是对参数细节和异常场景的熟悉程度。

如果你在实践中遇到 “rz上传后找不到文件”、“传输中断”等问题,可以先对照第 5 小节的排查表过一遍。多数情况下,问题都出在终端工具不支持、文件太大、目录没有预先切换这三个点上。把这些基础问题解决干净,rz在开发机和内网服务器之间传文件,效率还是很高的。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询