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