【rz & rb & rz】Centos/Linux rz、rb、rz命令详细介绍
简介
系统版本:Centos7.6
rz、rb、rz命令属于lrzsz程序的内容,是使用纠错协议(ZMODEM、YMODEM、XMODEM)通过拨号串行端口从在 PC-DOS、CP/M、Unix 和其他操作系统下运行的各种程序接收文件(如,Windows下的Xshell)。它可以从 shell 提示符手动调用,或者作为对调用程序给出的"sz 文件"命令的结果自动调用。 虽然 rz 比较强大,可以从 cu 调用,但很少系统的 cu 版本强大到可以允许 rz 正常工作。但是Professional-YAM 的 Unix 版本可用于此类应用程序的调用。
rz(Receive ZMODEM)使用 ZMODEM 批量协议接收文件。路径名由发送程序提供,如果必要则创建目录。通常,"rz"命令由调用的 ZMODEM 程序自动发出,但一些有缺陷的 ZMODEM 实现可能需要以旧方式启动 rz。
rb 使用 YMODEM 接收文件,接受标准的 128 字节扇区或 1024 字节扇区。用户在使用1024字节字块长度来提高吞吐量时,应确定该操作不会导致数据丢失甚至系统崩溃。 如果接收到正确的 YMODEM文件信息(文件长度等),则文件长度控制写入输出数据集的字节数,并相应地设置修改时间和文件模式(如果非零的话)。 如果未接收到正确的 YMODEM 文件信息,则路径名中的斜线("/")将更改为下划线("_"),并且路径名中的任何尾随句点将被删除。这种转换对于从 CP/M 系统接收的文件很有用。使用 YMODEM 时,除非文件名包含一个或多个小写字母,否则每个文件名都会转换为小写。
rx 使用 XMODEM 或 XMODEM-1k 协议接收单个文件。用户在使用1024字节字块长度来提高吞吐量时,应确定该操作不引起问题的情况下进行。用户必须向发送和接收程序提供文件名。接收的文件最多可能会添加 1023 个无用字符。
rz 可以作为 rzCOMMAND 调用(具有一个可选的前导"-",正如由 login 生成的那样)。对于每个接收的文件,rz 将把文件通过管道传递给"COMMAND 文件名",其中文件名是传输文件的名称,文件内容作为标准输入。当 COMMAND 以 0 状态退出时,每个文件传输都会得到确认。非零退出状态将终止传输。这种形式的一个典型用法是 rzrmail,它调用 rmail 将邮件发送给由传输文件名指定的用户。例如,从一个 PC-DOS 系统发送文件"caf"到 Unix 系统上的 rzrmail,其结果将是 DOS 文件"caf"的内容被邮寄给用户"caf"。 在某些 Unix 系统上,登录目录必须包含到 COMMAND 的链接,因为 login 将 SHELL = rsh,它不允许绝对路径名。以下条目适用于 Unix SYS III/V:
bash
rzrmail::5:1::/bin:/usr/local/rzrmail
如果 SHELL 环境变量包含 rsh、rbash / rksh(受限的shell),rz 将不接受绝对路径名或对父目录的引用,不会修改现有文件,并删除任何接收错误的文件。如果 rz 被调用时 stdout 和 stderr 指向不同的数据集,则Verbose(-v 选项)设置为 2,导致逐帧进度报告发送到 stderr。这可以使用 -q 选项禁用。
基础语法
bash
> rz [- +8abeOpqRtTuUvy]
> rb [- +abqRtuUvy]
> rx [- abceqRtuUv] file
> [-][v]rzCOMMAND
选项介绍
选项 | 选项说明 |
---|---|
-+,--append | 将接收到的数据附加到现有文件中(仅限 ZMODEM 和 ASCII 格式) |
-a,--ascii | 通过去除回车符和从第一个 Control Z(CP/M 的文件结束符)开始的所有字符,将文件转换为 Unix 标准 |
-b,--binary | 二进制文件传输覆盖 |
-B,--bufsize | 后跟数字N。在将数据写入磁盘之前缓冲 N 个字节。默认值是 32768,在大多数情况下是足够的。如果您的机器运行缓慢,或者磁盘接口性能下降,或者存在其他硬件问题,导致传输速率较慢,适当增加缓冲区大小可能有助于提高传输效率。但如果您设置为 -1 或"auto",虽然会为整个文件分配足够大的缓冲区,但如果这导致计算机内存不足开始进行页面交换,反而可能会降低性能 |
-c,--with-crc | 仅限 XMODEM,XMODEM 的传输模式中使用 16 位循环冗余校验(CRC)(通常使用的是一个字节的校验和) |
-C,--allow-remote-commands | 启用了这个选项,那么从远程发送过来的命令就能够在本地系统中被执行,但这存在很大的安全风险。这允许发送方通过 system() 或 execl() 执行任意命令,默认情况下会禁用此功能。如果处于受限模式,即使尝试启用这个允许远程命令执行的选项,也不会生效,系统仍然会禁止这种潜在危险的操作 |
-D,--null | 将文件数据输出到 /dev/null (黑洞),用于测试。(仅适用于 Unix 系统) |
--delay-startup | 后跟数字N,代表秒。该选项为执行前等待多少秒 |
-e,--escape | 强制发送方转义所有控制字符;通常,XON、XOFF、DLE、CR-@-CR 和 Ctrl-X (XON 用于继续传输、XOFF 用于暂停传输等)会被转义,以避免这些字符对传输造成意外的影响。 |
-E,--rename | 如果目标文件名已存在,则重命名传入的文件。新文件名将会附加一个点和一个数字(0 - 999),例如,data.b.999 |
-h,--help | 显示帮助 |
-m,--min-bps | 后跟数字,代表速率。如果每秒字节数(BPS 速率)在特定时间内低于后跟的数字,则停止传输(默认秒数请查看 --min-bps-time 选项) |
-M,--min-bps-time | 后跟数字,代表秒。与"--min-bps"一起使用。默认值是 120(秒) |
-O,--disable-timeouts | 禁用读取超时处理代码。这会导致如果发送方不再发送任何数据,lrz 会挂起,会稍微提高性能并降低系统负载(通过将系统调用次数减少约 50%),处理的任务是实时性要求很高的任务时,使用此选项时请小心 |
--o-sync | 以同步写入模式打开输出文件。如果由于更新(或 bdflush 或者您系统上执行此操作的任何守护进程)将缓冲区数据写入磁盘时丢失中断而导致您遇到错误,此选项可能会有用。如果您的系统不支持 O_SYNC,此选项将被忽略,并会打印一条警告信息 |
-p,--protect | ZMODEM保护:如果目标文件已存在,则跳过该文件 |
-q,--quiet | 静默模式,会抑制冗长的输出 |
-r,--resume | 崩溃恢复模式。lrz 会尝试恢复中断的文件传输 |
-R,--restricted | 进入更严格的限制模式。如果此选项被输入两次,lrz 将不会创建以点开头的目录或文件 |
-s,--stop-at | 后跟HH:MM。在 HH 小时,MM 分钟时停止传输。另一种形式,使用 +N 而不是 HH:MM,会在 N 秒后停止传输 |
-S,, --timesync | 请求发送方的时间同步数据包。发送方会发送其系统时间,如果时间差异超过 60 秒,lrz 会发出反馈包。如果此选项被输入两次,lrz 会尝试将本地系统时间设置为远程时间(如果 lrz 不是由 root 运行,则此操作会失败)。此选项使 lrz 与某些其他 ZMODEM 不兼容 |
--syslog[=off] | 打开或关闭系统日志记录。默认设置在配置时确定。如果在编译时未包含系统日志支持,此选项将被忽略。 |
-t,--timeout | 后跟超时处理(TIM)时间。将超时时间更改为 TIM 的十分之一秒。如果通过 -O 选项关闭了超时处理,则此设置将被忽略 |
--tcp-client | 后跟 地址:端口 。作为一个 TCP/IP 客户端:连接到给定的端口。请查看"--tcp-server"以获取更多信息。 |
--tcp-server | 作为服务端运行,将会创建一个套接字和打印出相关信息,等待客户端连接。不推荐使用此选项,因为只有 lrzsz 是唯一能使用的 ZMODEM(私有扩展)程序。但如果您必须使用 ZMODEM,并且不能使用 lsz 的 --tcp 选项(可能是因为您的 telnet 不允许生成一个本地程序,其标准输入/输出连接到远程端),您可能会想要使用此选项。如果您使用此选项,则必须使用 --tcp-client 选项启动 lsz 。lrz 在启动时会打印出地址和端口。使用此选项会带来安全风险,在此期间可能会有其他人连接到该端口 |
-U,--unrestrict | 关闭限制模式(如果在受限的 shell 下运行,则无法实现此操作) |
--version | 查看版本 |
-v,--verbose | 详细模式,操作过程会显示在窗口当中 |
-w,--windowsize | 后跟数字,代表窗口尺寸。设置视窗尺寸为后跟的数字 |
-X,--xmodem | 使用XMODEM协议 |
-y,--overwrite | 覆盖任何具有相同名称的现有文件 |
--ymodem | 使用YMODEM协议 |
-Z,--zmodem | 使用ZMODEM协议 |
基本用法
1、上传单个文件
bash
> rz file
2、 上传多个文件
bash
> rz file1 file2 file3
3、上传目录
bash
> tar -czf folder.tar.gz folder/ # 压缩当前目录下的 folder 目录
> rz folder.tar.gz
安全事项
与原始的 ZMODEM 相反,lrz 默认处于限制模式。在限制模式下,lrz 不会接受绝对路径名或对父目录的引用,不会修改现有的文件,并删除任何接收错误的文件。远程命令执行被禁用。要使用更严格的限制模式,请设置环境变量 ZMODEM_RESTRICTED 或给出 -R 选项。这会禁用子目录和不可见文件的创建。可以使用 -U 选项关闭限制模式,lrz 在受限的 shell 下运行除外。使用 --tcp-client 或 --tcp-server 选项会带来安全风险,因为可能会有其他人在您之前连接到端口并获取您的数据。如果对更安全的模式有强烈需求,建议启用某种密码挑战(例如,需要登陆账号才能连接或者输入密码才能连接)。
环境变量
1、SHELL:如果此变量包含 rsh 或 rksh,lrz 会识别为受限的 shell。
2、ZMODEM_RESTRICTED:如果设置了此变量,lrz 会进入更严格的限制模式。
注意事项
1、向分时小型计算机持续高速发送串行数据已知会导致死机、系统暂停、内核崩溃等。在试验向系统高速输入时,如果文件传输不成功,尤其是如果系统的特性似乎发生了改变,需要重启系统。
2、Unix 的"ulimit"参数必须设置得足够高,以允许进行大文件传输。
3、在某些系统上,TTY 输入缓冲可能不允许高速的长数据块或流输入。当您使用 ZMODEM、YMODEM - 1k 或 XMODEM - 1k 无法向 Unix 系统高速发送数据,但使用 128 字节块的 YMODEM 能正常工作时,您应该怀疑存在此问题。如果系统的 tty 线路处理真的有问题,串行端口或整个系统可能无法承受高速数据的长时间突发冲击。
4、DSZ 或 Pro - YAM zmodem 的 l 数值参数可以设置为 64 到 1024 之间的值以限制突发长度("zmodem pl128")。
5、从大多数系统版本的 cu 中调用 rz 不起作用,因为 cu 的接收进程会与 rz 争夺调制解调器的字符。
6、未正确使用指定文件传输协议(ZCOMM 或 Pro-YAM 等)的程序可能会导致 sz 的端口"挂起"一两分钟。
7、对于那些声称支持 YMODEM 但实际支持有偏差的程序,实际上只支持 1k 块的 XMODEM。
8、路径名被限制为 127 个字符。在 XMODEM 单文件模式下,命令行上给出的路径名仍按上述方式处理。ASCII 选项的 CR/LF 到 NL 转换仅删除 CR;undos 执行更智能的转换。
9、rz 支持传入的 ZMODEM 为 binary (-b),ASCII (-a),protect (-p),clobber (-y) 和 append (-+) 请求。默认为 protect (-p) 和 binary (-b) 。而Unix 支持 ZMODEM 命令执行。