Linux rz命令从入门到实战:安装、参数、案例与高频问题排查

发布时间:2026/8/30 18:48:44
Linux rz命令从入门到实战:安装、参数、案例与高频问题排查 1. 背景与核心概念1.1 rz 是什么rz是 Linux/Unix 系统上一个非常经典的文件上传工具它来自lrzsz软件包全称是“Receive ZMODEM”。从名称就能看出它基于 ZMODEM 协议用于把本地电脑上的文件上传到远程 Linux 服务器。与之对应的还有一个下载命令sz代表“Send ZMODEM”用于把服务器上的文件下载到本地。在网络管理、运维排查、开发部署场景中我们经常需要把本地文件传到服务器上。传统做法是使用 FTP、SFTP或者在支持拖拽的终端工具里直接拖文件。但很多时候我们只有 SSH 终端比如 XShell、SecureCRT、MobaXterm、FinalShell 这些软件它们的图形界面默认集成了rz和sz的支持。只要服务器上安装了lrzsz我们就能在命令行里直接输入rz然后从弹出的本地文件选择窗口中选择要上传的文件非常直观。rz的核心价值在于它把文件上传这个操作变成了一个命令行命令适合在纯终端环境中使用也方便脚本化、自动化。在嵌入式开发、服务器维护、日志收集等场景下rz和sz几乎是运维工程师的标配技能。1.2 rz 与 sz、scp、sftp 的对比理解rz之前不妨先把它和另外几种常见上传下载方式放在一起对比。对比项rzszscpsftp协议ZMODEMZMODEMSSHSSH传输方向本地到远程远程到本地双向双向是否依赖于终端模拟器是需要终端支持 ZMODEM是需要终端支持 ZMODEM否命令行直接使用否命令行或图形工具是否推荐传输大文件不推荐容易中断不推荐容易中断推荐相对稳定推荐支持断点续传典型使用场景快速传小文件图形终端环境快速下载小文件图形终端环境服务端之间、本地到服务器稳定传输需要查看远程目录、批量操作时简单点说rz适合“人在终端前想快速传个小文件”的场景scp和sftp更适合脚本化、自动化、大文件传输场景。两者不是替代关系而是互补关系。1.3 为什么开发者需要掌握 rzrz虽然功能简单但实际工作中遇到“文件传不上去”的问题时多数情况都是因为不了解它在不同终端工具里的工作方式。当你掌握rz之后在 XShell、SecureCRT 中可以少切一次 FTP 工具。在远程排查故障时可以快速把诊断脚本上传到服务器。在嵌入式 Linux 开发板上可以用rz上传交叉编译好的可执行程序而不需要额外搭建 TFTP 服务。可以写脚本批量传输文件配合sz实现日志反馈。另外关于rz还有一个高频搜索词“rz 上传的文件在哪去了”。这说明很多新手在使用rz后没有弄清文件的实际保存路径本篇文章也会重点解释这一点。2. 环境准备与版本说明2.1 检查系统是否已安装 lrzsz大多数 Linux 发行版默认不会安装lrzsz。我们可以先通过命令检查一下。which rz如果能输出类似/usr/bin/rz的路径说明系统已经安装了rz。如果没有任何输出或者提示command not found就需要先安装。也可以使用rz --version查看版本号rz --version输出示例rz (lrzsz) 0.12.202.2 在不同发行版上安装 lrzszCentOS / RHELyum install -y lrzsz如果你使用的是 CentOS 8 及以上版本也可以使用dnfdnf install -y lrzszUbuntu / Debianapt-get update apt-get install -y lrzszopenSUSEzypper install -y lrzszmacOSmacOS 自带的终端默认不支持 ZMODEM需要配合 iTerm2 并安装lrzszbrew install lrzsz然后在 iTerm2 中配置触发开关具体可以参考 iTerm2 的 ZMODEM 集成教程。但需要注意的是这种方式属于 iTerm2 的扩展配置不同版本的弹窗逻辑略有差异建议按官方文档操作。Windows Git BashWindows 下使用 Git Bash 时也可以通过包管理器安装lrzsz但使用体验不如 XShell、SecureCRT 等专用 SSH 终端方便。一般情况下Windows 用户直接在 XShell 或 SecureCRT 里使用rz即可因为这类终端软件已经内置了 ZMODEM 协议支持。2.3 终端模拟器的要求rz与普通命令行工具不同它必须和终端模拟器配合才能弹窗选文件。如果你使用的是纯原生 SSH 命令行客户端比如 Windows 自带的 OpenSSH输入rz后通常会卡住或者提示终端不支持 ZMODEM。推荐使用的终端工具XShellSecureCRTMobaXtermFinalShellTabbyiTerm2配合 lrzsz 脚本其中 XShell 和 SecureCRT 对 ZMODEM 支持最成熟开箱即用。MobaXterm、FinalShell 也很方便。Tabby 需要额外安装插件。如果终端不支持 ZMODEM就不要执着于rz改用scp或sftp会更合适。3. 核心语法与参数拆解3.1 基础语法rz的基本语法非常简单rz [选项] [文件...]直接运行rz当前支持 ZMODEM 协议的终端会弹出文件选择窗口选中文件后开始传输。这是最常用的方式。不过rz的参数也要了解一些尤其是在自动化脚本或需要覆盖、二进制传输时参数能帮上大忙。3.2 常用参数说明参数作用使用场景-y覆盖同名文件不再询问确认要覆盖已有文件时-b二进制模式传输不做文本转义上传压缩包、程序文件、图片时推荐-aASCII 文本模式传输上传纯文本文件且需要自动转换行尾时-e转义控制字符传输含特殊字符或需要保证字节一致时-D输出调试信息排查传输问题-v显示版本信息检查软件版本-q静默模式不显示进度条脚本中不想输出大量日志时-T设置超时时间单位秒网络不稳定时延长等待时间-w设置窗口大小单位字节调整传输窗口优化性能-Z使用特定协议传输如-Z zmodem指定协议类型对于新手来说最需要记住的是-y和-b。-y解决“文件已存在是否覆盖”的交互问题-b解决二进制文件被错误转义的问题。3.3 为什么默认上传到当前目录很多人在网上搜索“rz 上传的文件在哪去了”根本原因是rz会把文件上传到当前所在的工作目录而很多新手在远程服务器上进入某个目录后并不知道当前目录是哪里或者终端默认打开的是用户主目录结果上传后在全盘找不到。这里只需要记住一个原则# 先确认当前目录 pwd # 再执行 rz rz如果想上传到指定目录先cd过去cd /data/upload rz这样上传的文件就会出现在/data/upload目录下。3.4 一个最小示例假设我们要把本地的一个nginx.conf文件上传到服务器的/etc/nginx目录下cd /etc/nginx rz -y然后终端会弹出文件选择窗口选择本地的nginx.conf点击确定后开始上传。-y参数表示如果服务器上已存在同名文件直接覆盖。如果不加-y当目标文件已存在时会提示rz: 该文件已存在并要求确认是否覆盖这时需要手动输入y或n。4. 完整实战案例这一节我们通过几个实际场景把rz的用法完整走一遍。假设服务器 IP 为192.168.1.100用户名为root使用 XShell 作为终端工具。4.1 场景一上传单个文件到指定目录这是最基础的操作。第一步登录服务器进入目标目录ssh root192.168.1.100 mkdir -p /data/upload cd /data/upload pwd第二步执行上传命令rzXShell 会弹出本地文件选择窗口选择例如app.jar文件点击打开。第三步等待上传完成。终端会出现类似下面的进度提示文件名旁边会有传输进度条和速度。rz: app.jar 正在接收上传完成后用ls -l查看文件是否已经存在ls -l app.jar预期输出-rw-r--r-- 1 root root 12345678 Jul 15 10:30 app.jar注意文件权限默认是 644如果希望上传后直接具备执行权限可以额外执行chmod x。4.2 场景二覆盖上传同名文件当服务器上已经有一个同名文件且你确定要覆盖它时直接使用-ycd /data/upload rz -y这会在弹窗选择完文件后直接覆盖服务器上的同名文件不再弹出覆盖确认提示。此参数非常适合脚本或重复部署场景。如果不确定是否覆盖最好不要加-y让系统在覆盖前先询问避免误操作。4.3 场景三上传二进制包并保持字节一致上传 JAR、ZIP、压缩包、可执行文件等二进制文件时建议使用-b参数cd /data/upload rz -b-b是 binary 模式会禁用文本转换。如果不加-b某些终端在传输时会对换行符做转换导致二进制文件的 MD5 值发生变化最终文件无法运行或解压失败。上传完成后可以用md5sum校验md5sum app.jar然后和本地文件的 MD5 对比如果一致说明传输完整。4.4 场景四上传含特殊字符的文件名有些文件名包含空格、中文或特殊符号例如测试 报告(2024).txt。直接选中上传通常没问题但如果你在命令行中手动拼文件路径就需要转义rz -b -e-e参数会让rz对控制字符和特殊字符进行转义减少因为文件名或内容中特殊字符带来的解析问题。实际项目中建议对文件名做规范化处理尽量使用字母、数字、下划线避免中文和空格。4.5 场景五脚本化批量上传如果你有多个文件需要上传可以写一个小脚本批量调用rz。但要注意rz是交互式命令需要终端支持 ZMODEM 弹窗脚本化场景更推荐scp。以下脚本可以作为“半自动上传”的参考思路适合在 XShell 中手动触发#!/bin/bash # 文件名upload.sh # 说明进入目标目录后执行 rz记录上传日志 UPLOAD_DIR/data/upload LOG_FILE/data/log/rz_upload.log mkdir -p $UPLOAD_DIR cd $UPLOAD_DIR || exit 1 echo $(date %Y-%m-%d %H:%M:%S) 开始上传 $LOG_FILE rz -y -b echo $(date %Y-%m-%d %H:%M:%S) 本次上传完成目录内容如下 $LOG_FILE ls -lh $UPLOAD_DIR $LOG_FILE保存脚本后chmod x upload.sh ./upload.sh脚本的作用是自动进入上传目录记录上传开始时间执行rz -y -b覆盖上传二进制文件最后把目录内容列出并写入日志。适合日常维护时记录操作痕迹。4.6 场景六在嵌入式 Linux 开发板上使用 rz嵌入式 Linux 开发板往往没有 scp 或者 rsync但可以通过 busybox 提供rz命令。操作方式和服务器一致cd /tmp rz然后把交叉编译好的程序上传到/tmp再chmod x执行。需要提醒的是嵌入式开发板的 Flash 空间有限上传前先确认目录可写、空间充足df -h如果根文件系统是只读挂载的rz之前需要先重新挂载为可写mount -o remount,rw /5. 常见问题与排查思路rz虽然简单但实际使用中会遇到不少坑。下面把高频问题整理成表格再逐个展开说明。问题现象常见原因解决思路rz 上传后找不到文件没有注意当前工作目录用 pwd 确认目录或 cd 到目标目录再 rzrz 提示 command not found未安装 lrzsz安装 lrzsz 工具包rz 执行后卡住无反应终端不支持 ZMODEM 协议改用支持 ZMODEM 的终端或改 scp/sftp上传二进制文件后无法运行使用了文本模式传输字节被转换加 -b 参数使用二进制模式文件名乱码终端编码不一致统一终端字符编码为 UTF-8rz 传输大文件中断网络不稳定或超时时间过短使用 scp 或 rsync或加 -T 加大超时提示 Permission denied目标目录无写权限检查目录权限使用有权限的目录5.1 上传的文件去哪了这个问题出现频率极高。rz上传文件后文件默认保存在你执行rz命令时所在的工作目录也就是pwd的输出路径。排查步骤pwd ls -l如果还是找不到可能是因为你的终端工具把上传目录设置成了固定目录。比如某些终端工具的 ZMODEM 配置里指定了“上传到服务器固定目录”而不是当前目录。这时可以去终端的会话属性或全局配置里查看 ZMODEM 相关设置。最好的习惯是执行rz之前先cd到明确的目标目录再执行上传。5.2 rz 传输库文件老死掉搜索热词里提到“rz传输库文件老死掉”这通常指上传文件过程中连接中断、进度卡死或者传输完成后 SSH 会话异常。常见原因有文件太大超过了 ZMODEM 在弱网环境下的稳定性上限。本地网络丢包严重SSH 连接本身不稳定。终端工具设置了过短的超时时间。rz进程在传输过程中占用了大量 CPU 或内存。某些终端代理或防火墙对 ZMODEM 控制序列做了干扰。排查思路先确认 SSH 连接是否正常用ping和ssh简单测试。如果文件很大改用scp或rsync。如果必须用rz尝试加-T参数延长超时rz -T 60上传二进制文件时加-b避免文本转换带来的额外计算。在 XShell 等终端中可以关闭“流控制”或调整终端缓冲区。5.3 rz 和终端编码不一致导致乱码当本地文件名是中文且服务器终端编码为 GBK 或非 UTF-8 编码时上传后文件名很可能变成乱码。解决办法是统一编码将服务器/etc/locale.conf设置为LANGen_US.UTF-8或zh_CN.UTF-8。把 XShell 的终端编码设置为 UTF-8。修改服务器编码后需要重新登录或执行source /etc/locale.conf最稳妥的办法还是上传文件时尽量使用英文文件名。5.4 无图形界面时 rz 无法使用如果你是在 Windows 原生命令行、或者某些纯 Web SSH 客户端中执行rz很可能没有反应。因为这些环境没有实现 ZMODEM 协议无法接收文件。此时可以改用scp命令格式scp 本地文件 root192.168.1.100:/data/upload/使用sftp交互式进入后上传sftp root192.168.1.100 put 本地文件 远程目录或者使用支持 ZMODEM 的终端工具比如 XShell、SecureCRT、MobaXterm。5.5 覆盖提示怎么跳过如果需要覆盖同名文件且不想频繁确认使用rz -y如果希望保留旧文件并给新文件改名为备份可以提前手动备份cd /data/upload mv app.jar app.jar.bak.$(date %F) rz -y这样既保留了旧版本又完成了新版本上传。6. 最佳实践与工程建议6.1 明确工作目录再上传这是一个无论如何强调都不为过的习惯。rz不像scp那样可以指定远程目标路径它的目标路径就是当前目录。因此建议在上传前先执行cd /指定目录 pwd rz尤其是以 root 登录时默认目录是/root如果随意执行rz文件就会堆积在/root下时间一长很难管理。6.2 优先使用二进制模式无论是上传脚本、压缩包、程序文件还是图片视频建议使用rz -b二进制模式能保证文件内容一个字节都不差。文本模式会做换行符转换虽然对纯文本影响不大但对程序文件是致命的。判断是否传输完整可以借助md5summd5sum 文件名然后和本地计算出的 MD5 对比。6.3 不要用 rz 传输超大型文件rz适合 100MB 以内的临时文件。如果你要传输几个 GB 的数据库备份、日志文件或 ISO 镜像建议使用scp、rsync或sftp。rsync的优势还在于支持断点续传、增量传输命令示例rsync -avP 本地文件 root192.168.1.100:/data/upload/其中-P表示显示进度并支持断点续传。6.4 结合 sz 实现日志快速回传rz和sz经常成对出现。排查服务器问题时可以用sz把日志传到本地分析cd /var/log sz messages然后在本地终端选择保存路径就可以把远程日志下载到本地。对于小日志文件这种方式比scp更直观尤其适合图形终端用户。6.5 脚本中谨慎使用 rz 与安全边界在自动化脚本中rz并不是一个理想的自动化工具因为它的文件选择依赖人工弹窗。如果需要在脚本中实现上传优先选择scp或rsync。但如果你想做一个“半自动上传”的运维工具可以把rz作为交互入口然后自动记录日志。此外涉及上传到生产服务器时需要注意权限最小化原则不要用 root 身份上传到系统关键目录。上传到专门的/data/uploads之类目录再手动复制到目标位置。上传后检查文件属主和权限避免出现安全问题。例如chown appuser:appgroup /data/upload/app.jar chmod 750 /data/upload/app.jar6.6 记录操作日志在重要服务器上建议把rz的每次上传记录到日志中。可以通过script命令或简单的自定义脚本来实现script -a /var/log/rz_operation.log rz exitscript命令会把终端会话中的输入输出记录下来这样即使误操作上传了错误文件也能追溯时间点。6.7 合理处理覆盖和备份在生产环境使用rz -y覆盖文件之前如果没有版本管理或备份机制风险较高。建议先备份cd /data/upload bak_dir/data/backup/$(date %Y%m%d_%H%M%S) mkdir -p $bak_dir cp -a app.jar $bak_dir/ rz -y这样一来即使新文件有问题也可以从备份目录快速回滚。6.8 终端选择与配置如果你经常使用rz建议固定使用一款支持 ZMODEM 的终端工具并在会话属性中将终端编码设置为 UTF-8。把“上传目录”配置为跟随当前目录而不是固定目录。关闭终端流控制避免 rz 与终端快捷键冲突。在 XShell 中可以在“文件传输”或“ZMODEM”相关设置中调整上传行为。不同版本界面不一样但原理都是让终端正确响应 ZMODEM 控制序列。7. 总结与后续学习到这里rz命令的核心内容就梳理完了。我们回顾一下关键点rz基于 ZMODEM 协议用于从本地终端向 Linux 服务器上传文件。使用前要安装lrzsz并且终端模拟器需要支持 ZMODEM。上传位置默认是当前工作目录务必先pwd确认。二进制文件上传使用-b覆盖文件使用-y。大文件或自动化场景优先使用scp、sftp、rsync。生产环境操作要保证备份、权限和可追溯性。rz的学习成本很低但它是 Linux 日常操作的高频命令之一和cd、ls、scp、tar等命令配合使用能明显提高工作效率。如果你对这个命令还不够熟练建议在一台测试服务器上反复练习创建目录、进入目录、上传文件、确认文件位置、覆盖上传、校验 MD5把这套流程跑顺。下一步可以继续学习sz命令掌握上传下载的组合用法。scp命令理解远程拷贝与认证方式。rsync命令掌握增量同步与断点续传。终端工具 XShell、MobaXterm 的会话管理和文件传输配置。Linux 文件权限、目录结构与磁盘管理为日常维护打基础。最后留一个小练习在一台测试服务器上用rz上传一个压缩包再用sz下载一个日志文件最后用md5sum校验两端文件是否一致。只要这个流程跑通你就算真正掌握了rz的日常用法。如果这篇文章对你有帮助可以先收藏备用。后面遇到rz上传相关的问题再回来翻看这份清单就行。