一,什么是rx
在 Linux 系统中,/usr/bin/rx 是一个用于接收文件的命令。它属于 lrzsz 软件包,主要功能是通过纠错协议(如 XMODEM 或 XMODEM-1k 协议)从串行线路或远程主机接收文件,并将其保存到本地文件系统中。
核心功能与特点
- 单文件接收:
rx 命令专门用于接收单个文件。在使用时,接收方和发送方都需要提供相同的文件名。 - 协议支持:它主要基于 XMODEM 协议进行数据传输,支持 ASCII 和二进制模式。
- 常见应用场景:常用于通过串口(如
/dev/ttyS0)在 Linux 主机与开发板之间,或在终端模拟器(如 Windows 下的 Xshell)与 Linux 服务器之间进行文件传输。
二,参数
[root@node2 ~]# rx --helprx 版本 0.12.20用法: rx [options] [filename.if.xmodem]使用 ZMODEM/YMODEM/XMODEM 协议接收文件(X) = 选项仅适用于 XMODEM(Y) = 选项仅适用于 YMODEM(Z) = 选项仅适用于 ZMODEM-+, --append 将接收到的数据追加到已存在的文件末尾-a, --ascii ASCII 传输模式(将 CR/LF 转换为 LF)-b, --binary 二进制传输模式-B, --bufsize N 设置缓冲区大小为 N 字节(若 N==auto,则缓冲整个文件)-c, --with-crc 使用 16 位 CRC 校验 (X)-C, --allow-remote-commands 允许执行远程命令 (Z)-D, --null 将所有接收到的数据写入 /dev/null(用于测试)--delay-startup N 在开始执行任何操作前休眠 N 秒-e, --escape 强制对控制字符进行转义处理 (Z)-E, --rename 如果目标文件名已存在,则对传入的文件进行重命名--errors N 每 N 字节生成一次 CRC 错误(用于调试)-h, --help 显示帮助信息并打印此用法说明-m, --min-bps N 如果传输速率(BPS)低于 N,则停止传输-M, --min-bps-time N 速率低于阈值至少持续 N 秒后生效(默认值: 120)-O, --disable-timeouts 禁用超时处理代码,无限期等待数据--o-sync 以同步写入模式打开输出文件-p, --protect 保护已存在的文件不被覆盖-q, --quiet 静默模式,不显示进度报告-r, --resume 尝试恢复中断的文件传输 (Z)-R, --restricted 受限模式,提供更高的安全性-s, --stop-at {HH:MM|+N} 在指定的 HH:MM 时间或 N 秒后停止传输-S, --timesync 请求获取远程时间(发送两次则设置本地时间)--syslog[=off] 如果可能,开启或关闭 syslog 日志记录-t, --timeout N 将超时时间设置为 N 个十分之一秒-u, --keep-uppercase 保留文件名中的大写字母-U, --unrestrict 禁用受限模式(如果允许的话)-v, --verbose 详细模式,提供调试信息-w, --windowsize N 设置窗口大小为 N 字节 (Z)-X --xmodem 使用 XMODEM 协议-y, --overwrite 确认覆盖:如果文件已存在则直接覆盖--ymodem 使用 YMODEM 协议-Z, --zmodem 使用 ZMODEM 协议短选项的参数与长选项的参数相同
三,例子
准备环境
# 确认 lrzsz 已安装rpm -qa | grep lrzsz# windows创建一个用于测试的文本文件,内容就是 测试rx.txt测试rx.txt# 创建一个测试目录mkdir -p /tmp/rx_test && cd /tmp/rx_test
测试开始
打开 Xshell 或 SecureCRT,连接到服务器。
在 Xshell 终端里输入:rx testfile_received.txt (此时终端会提示等待接收)
在 Xshell 顶部菜单栏点击:文件 -> 上传,选择 测试rx.txt。
此时就能看到完整的 ZMODEM 传输进度条了。
[root@node2 rx_test]# rx testfile_received.txt
xshell 操作,这里就有多种协议选择,
上传后验证
[root@node2 rx_test]# cat testfile_received.txt 测试rx.txt
四,补充
1. 协议特性与“文件尾部填充”隐患
rx 命令主要基于 XMODEM 或 XMODEM-1k 协议进行单文件接收。由于 XMODEM 协议采用固定长度的扇区(128字节或1024字节)进行数据块传输,如果文件的实际大小不是扇区长度的整数倍,接收端为了凑齐最后一个数据块,可能会在接收到的文件末尾自动填充最多 1023 个垃圾字符(Garbage characters)。这在传输二进制文件时可能会导致文件损坏或校验失败。
2. 与同族命令 rz、rb 的核心区别
rx 与 rz、rb 同属于 lrzsz 软件包,但它们使用的协议和适用场景截然不同:rx:使用 XMODEM 协议,仅支持接收单个文件,且必须由用户手动提供文件名。rb:使用 YMODEM 协议,支持接收文件,接受 128 字节或 1024 字节扇区,吞吐量比 XMODEM 高。
rz:使用 ZMODEM 批量协议,功能最强大。它支持批量传输、自动创建目录、断点续传等。在绝大多数现代终端(如 Xshell、SecureCRT)中,默认调用的都是 rz 命令。
五,总结
以上就是rx全部内容,这里不再选择更多参数测试,还是觉得设计案例会复杂,也确实rx属于极少用,甚至不用的命令,如此而已,有兴趣的朋友可以自行尝试。
最后的最后(Last but not least),欢迎交流:
关注公众号留言,或者在下方直接留言: