Zmodem 最早是设计用来在串行连接(uart、rs232、rs485)上进行数据传输的,比如,在 minicom 下,我们就可以方便的用 Zmodem (说 sz 、rz 可能大家更熟悉)传输文件。只不过串口本身传输速度不快,文件大的话会让人有点崩溃。

没有彻底把笔记本装成 mint 前,在 windows 下都是用 secureCRT 来和板子进行通信的。secureCRT 下通过 ssh 连接开发板时, 可以方便的使用 Zmodem来进行文件的上传下载,但是,在 ubuntu 下似乎不是那么好实现。所以,也就一直在用 scp。

今天用腻了 scp,想恢复方便的 sz、rz,折腾了半天,终于找到了方法。

首先,mint(ubuntu、debian 类似)下需要安装下面两个包,都是官方包:

sudo apt-get install lrzsz
sudo apt-get install zssh 

其中,zssh 提供了一个在当前 ssh 中连接中进行文件传输的“管道”,真正执行 Zmodem 传输的,还是 lrzsz。当然,板子上也是要有 lrzsz 包的,这需要自己交叉编译放上去。

1、 使用 zssh 替代 ssh 连接到目标系统,并登入:

luo@Luo-X220 ~ $ zssh root@192.168.1.230
Press ^@ (C-Space) to enter file transfer mode, then ? for help

root@192.168.1.230's password:
[root@FriendlyARM /]#

2、下载文件到本地。比如,我们想从目标系统下载 /www/leds.html 到本地:

[root@FriendlyARM /www]# ls
images               leds.cgi             webcam.html
index.html           leds.html
led-result.template  mini2440.png
[root@FriendlyARM /www]# sz leds.html
�B00000000000000
(此处,按 ctrl + @ 进入文件传输状态)
zssh > rz
Receiving: leds.html                                                 
Bytes received:    4889/   4889   BPS:646854               

Transfer complete
[root@FriendlyARM /www]#

在目标系统输入 sz (send in Zmodem)时,我们开启了文件发送,此处可能会有乱码,暂时不管;然后,按 Ctrl+@ 进入文件传输模式,输入 rz 并回车进行文件下载,下载完成后,自动退出文件传输模式。 进入文件下载模式后,事实上,是进入了本机的一个终端,我们还可以使用常用命令行工具如ls,mkdir 等进行一些操作。另外,还有由 zssh 解析的如下工具:
使用 zssh 进行 Zmodem 文件传输-冯金伟博客园

3. 发送文件到目标系统。比如,我们要上传文件

[root@FriendlyARM /tmp]# ls
qtembedded-0       usb3g.modemstatus
[root@FriendlyARM /tmp]# 
(此处,按 ctrl + @ 进入文件传输状态) zssh > ls Audiobooks Documents Music Public temp Videos build Downloads Pictures refer Templates work Desktop leds.html Podcasts router usr zssh > cd /tmp/ zssh > ls dropbear-2016.74 matecorba-luo pcaptest_F pulse-vXbjEXNVREX3 dropbear-2016.74.tar.bz2 mintUpdate plugtmp ssh-oTlcUBNo1637 keyring-9RSy6J mozilla_luo0 pulse-PKdhtXMmr18n zssh > sz dropbear-2016.74.tar.bz2 Sending: dropbear-2016.74.tar.bz2 Bytes Sent:1622234 BPS:3780858 Transfer complete [root@FriendlyARM /tmp]# ls dropbear-2016.74.tar.bz2 qtembedded-0 usb3g.modemstatus [root@FriendlyARM /tmp]#

 上面的操作中,我们直接按 ctrl+@ 进入文件传输模式,然后,在文件传输模式中,使用 cd 指令切换到本机的 /tmp/ 目录(dropbear-2016.74.tar.bz2 放在这里),然后输入 sz dropbear-2016.74.tar.bz2 并回车,自动完成传输。

that’s all!