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 installlrzszsudo 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 解析的如下工具:
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!