rz不支持通配符或递归上传目录,仅能通过终端图形弹窗多选文件;必须用rz -be确保二进制文件完整性和传输稳定;上传后无目录结构、权限重置、中文名易乱码,复杂场景应改用scp或rsync。

rz 命令本身不支持通配符或递归上传目录,所谓“批量上传”实际是指一次选择多个文件——不是靠 shell 展开,而是依赖终端模拟器(如 Xshell、SecureCRT)的图形弹窗多选能力。
rz 一次选多个文件怎么操作
运行 rz 后弹出的文件选择框是否支持多选,完全取决于你用的终端软件及其配置:
- Xshell:默认支持 Ctrl + 点击 或 Shift + 拖选 多个文件
- SecureCRT:需在 Options → Session Options → File Transfer → Zmodem 中勾选 “Prompt for directory to upload from”,并确保“Upload dialog”启用
- PuTTY:原生不支持 ZMODEM,必须配合
plink+rzsz插件或换用其他终端,否则rz直接卡住无响应
上传后所有文件都落在当前 shell 工作目录,不会自动创建子目录结构。
rz -be 是什么,什么时候必须加
rz -be 表示以二进制模式(-b)+ 强制转义控制字符(-e)上传。这不是可选项,而是生产环境事实标准:
- 不加
-b:默认文本模式,会把\r\n自动转换为\n,导致可执行文件、图片、压缩包等二进制文件损坏 - 不加
-e:某些终端(尤其老版本 SecureCRT)遇到Ctrl+S(XOFF)会暂停传输,导致上传中途挂起 - 所以只要传的不是纯 ASCII 日志或配置文件,一律用
rz -be
为什么 rz 不能上传整个文件夹
ZMODEM 协议本身只定义单文件流式传输,rz 命令没有内置打包逻辑。它不读取目录、不调用 tar、也不协商路径层级。所谓“上传文件夹”,本质是两个可行路径:
- 手动先在本地压缩:比如
zip -r folder.zip folder/,再rz -be folder.zip,上传后在服务器解压 - 改用
scp或rsync:例如scp -r ./folder user@host:/path/,它们原生支持目录递归和权限保留 - 硬上
rz批量:把文件夹里所有文件拖进多选框——但深层嵌套文件需手动展开,且丢失目录结构
别试图用 rz *.log 这类 shell 通配,它会被本地 shell 展开后传给 rz,而 rz 根本不认这个参数格式,直接报错或静默失败。
上传后文件权限和编码容易被忽略
rz 上传的文件在服务器上默认权限是 644(owner 可读写),且不继承源文件的执行位或 SELinux 上下文。常见坑点:
- 上传了
deploy.sh,但忘了chmod +x deploy.sh,直接执行报Permission denied - Windows 编辑的脚本含
\r\n,即使用了-b也没问题,但若后续用source执行,bash 会报command not found(因为解释器把\r当成命令名一部分) - 中文文件名在部分终端(如旧版 Xshell)可能显示为
???.txt,需确认终端字符集设为 UTF-8,且服务器 locale 是en_US.UTF-8或zh_CN.UTF-8
真正需要稳定、可重复、带目录结构的上传,rz 就不该是首选——它只适合临时传几个小配置、日志、脚本,图个快。复杂场景请切回 scp 或 rsync。


















