我们不只要练武强身,以抗外敌,最重要的,还是广开民智,智武合一,那才是国富民强之道。一,什么是rb命令
rb 命令是 lrzsz 软件包 的一部分,是一个基于 YMODEM 协议的文件接收工具,核心作用是在 Linux 服务器管理中,它通常配合 Windows 端的终端工具(如 Xshell、SecureCRT 等)使用。当你在 Windows 端发起文件传输时,Linux 端的 rb 命令会通过串口或伪终端接收文件,并支持纠错协议,确保文件传输的完整性。
常见使用场景
rz (Receive ZMODEM):使用 ZMODEM 协议接收文件(最常用,支持断点续传、多文件传输)。
rb (Receive YMODEM):使用 YMODEM 协议接收文件。
rx (Receive XMODEM):使用 XMODEM 协议接收单文件。
二,参数
[root@node2 ~]# rb --helprb 版本 0.12.20用法: rb [选项] [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 如果波特率低于 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 协议短选项使用与长选项相同的参数
三,例子
第一步:准备测试文件,先创建一个用于测试的文本文件:
[root@node2 rb]# echo "这是为了测试rb命令" > testfile.txt
第二步:建立虚拟串口连接,打开两个终端窗口
终端 1(接收端),创建一个虚拟串口对,并让 rb 监听其中一个端口:
# 创建虚拟串口对#没有命令可以yum -y install socat 安装[root@node2 rb]# socat -d -d PTY,raw,echo=0 PTY,raw,echo=02026/08/09 05:01:18 socat[2221] N PTY is /dev/pts/22026/08/09 05:01:18 socat[2221] N PTY is /dev/pts/32026/08/09 05:01:18 socat[2221] N starting data transfer loop with FDs [5,5] and [7,7]
执行后,终端会输出类似 /dev/pts/3 和 /dev/pts/4 的两个设备节点。
在终端2(或保持 socat 运行,新开终端)启动 rb 监听:
[root@node2 rb]# rb -v < /dev/pts/3 > /dev/pts/3rb waiting to receive.
在终端3,启动发送端,使用 sb 向另一个串口发送文件,可以看到收到了文件:
[root@node2 rb]# sb -v < /dev/pts/2 > /dev/pts/2 testfile.txtSending: testfile.txtSending: Transfer complete
启动发送端,在终端 3中,使用 sb 向另一个串口发送文件,可见弹出了传出框,选择目录传出就把文件发送到windows了:
[root@node2 rb]# sb -v < /dev/pts/4 > /dev/pts/4 testfile.txtSending: testfile.txtTransfer complete
例2,启动接收端,每接收 1024 字节就故意制造一次 CRC 错误,并输出详细日志
# 启动接收端,每接收 1024 字节就故意制造一次 CRC 错误,并输出详细日志rb --errors 1024 -v < /dev/pts/3 > /dev/pts/3
root@node2 rb]# sb -v < /dev/pts/2 > /dev/pts/2 /root/mysql-community-client-5.7.16-1.el7.x86_64.rpm Sending: mysql-community-client-5.7.16-1.el7.x86_64.rpmRetry 0: NAK on sectorRetry 0: NAK on sectorRetry 0: NAK on sectorRetry 0: NAK on sectorRetry 0: NAK on sectorRetry 0: NAK on sectorRetry 0: NAK on sectorRetry 0: NAK on sectorRetry 0: NAK on sectorRetry 0: NAK on sectorRetry 0: CancelledTransfer incomplete
[root@node2 test]# rb --errors 100 -v < /dev/pts/3 > /dev/pts/3rb waiting to receive.Retry 0: CRCRetry 1: CRCRetry 2: CRCRetry 3: CRCRetry 4: CRCRetry 5: CRCRetry 6: CRCRetry 7: CRCRetry 8: CRCRetry 9: CRCTransfer incomplete[root@node2 test]# ls -lthtotal 52K-rw------- 1 root root 45K Aug 9 05:30 mysql-community-client-5.7.16-1.el7.x86_64.rpm-rw-r--r-- 1 root root 27 Aug 9 04:55 testfile.txt
四,总结
rb 命令有很多参数,这里不能一一测试,因为确实有点难理解其思路从而设计测试例子,有兴趣朋友可以研究下。以上就是今天全部内容。
最后的最后(Last but not least),欢迎交流:
关注公众号留言,或者在下方直接留言: