如何以最简单的方式传输文件到开发板上-lrzsz-ZModem
在某鱼上闲逛的时候,看到树莓派A+这个型号的板子,很便宜30来块钱,有6ULL的性能。
但是既没有网口、也没有WiFi,只有一个usb,电脑和它传数据岂不是非常麻烦?
其实有一个非常好用的协议叫ZModem,它的设计就是主要为了能在串口这种几乎无需配置的连接协议上传输文件。类似的还有XModem 和 YModem,但是正如他们的名字顺序一样,ZModem最为强大。rz、sz就可以在串口上用ZModem协议传输数据
基于网络的远程文件传输的工具有很多,例如scp、sftp、ftp等。如果开发板没网口、或者电脑与开发板ping通需要大量繁琐的网络配置,串口几乎是唯一交互方式的情况下,使用rz、sz传输更为方便。(其实还有USB虚拟网卡)
- Xmodem:这种古老的传输协议速度较慢,但由于使用了CRC错误侦测方法,传输的准确率可高达99.6%
- Ymodem:这是Xmodem的改良版,使用了1024位区段传送,速度比Xmodem要快。
- Zmodem:Zmodem采用了串流式(streaming)传输方式,传输速度较快,而且还具有自动改变区段大小和断点续传、快速错误侦测等功能,是目前最流行的文件传输协议
ZModem强大在于它的稳定与可靠性
- 自动重传:在出现传输错误时,可以自动重传数据。
- 文件恢复:支持在断点处恢复文件传输,避免从头开始。
- 动态缓冲:能够根据网络状况自动调整数据传输速度。
- 支持长文件名:可以处理比其他协议更长的文件名。
我们常用的终端都支持ZModem传输,以下我会使用MobaXterm、XShell、Tabby三个终端举例
安装lrzsz
先在开发板上安装lrzsz,rz和sz分别是发送与接收的两个工具
sudo apt install lrzsz
- 接收文件
rz
- 发送文件
sz filename
MobaXterm
我使用的版本如上图,本身自带ZModem功能,有的老版本有可能需要安装插件。
输入rz
,代表你要发送文件
此时界面会卡死, Ctrl+C终止都没用,也千万不要点击键盘发送任何字符,不然就只能等着强制断电重启
调出右键菜单,选中Send File Using Z-modem
我的习惯是右键设置为粘贴,左键选中复制,所以需要按住Ctrl+右键,调出右键菜单,
显示的上传的很快,但是其实并没那么快,要等到它跑完,过程是无法打断的
只有出现上面传输完成的字样后,按下回车就回到了系统。
使用sz filename
来发送文件到电脑
还是一样的操作,这次选择Recieve file using Z-modem
可以看到传输过程中还是出现了错误,但是由于ZModem强大的错误校验自动重传功能,我们的文件还是完好的保存了下来
X Shell
xshell简单很多,输入rz自动打开文件选择框,传输就行了
sz也是一样的
Tabby
和xshell一样很方便,会自动弹出文件选择框
tabby和moba一样会显示假速度,需要等到文字提示完成才算完成。
出现Sent字样就代表完成了
下载文件显示的是真实的速度
传输完成
总结
我个人更喜欢Xshell,传输速度显示正确,终端稳定性和多开padding也很方便。唯一的缺点就是在vim和menuconfig的时候总是持续性卡顿,所有操作都慢一拍,不懂是我的问题还是它的问题。