上篇博客介绍了利用SSH协议,实现windows和linux之间的远程登录,SSHD服务只是简单解决了如何让客户端登录到服务器,但并没有解决客户端与服务器端文件之间的传输。这篇博客是基于上篇博客介绍在远程登录的基础上实现SecureCRT客户端与linux服务端文件的传输。
SecureCRT自带了x/y/zmodem协议,那么这三种协议有什么区别呢?
一、三种协议的区别
Xmodem
XMODEM协议是一种串口通信中 广泛用到的异步文件传输协议。这种传输协议速度较慢,但由于使用了CRC错误侦测方法,传输的准确率可高达99.6%,传输信息单位是“包=128B”,传输速度慢,适合电话线路质量差的情况下使用。
Ymodem
由XMODEM演变来,效率可靠性高,包=128*8B;一次传输可发送或接受几个文件。
Zmodem
与上两种不同,zmodem协议可以连续的数据流发送数据,效率更高。Zmodem采用了串流式(streaming)传输方式,传输速度较快,而且还具有自动改变区段大小和断点续传、快速错误侦测等功能。这是目前最流行的文件传输协议。Zmodem协议传输如果因任何原因被取消或中断,恢复后,先前传送的信息都需要重新发送。
因为Zmodem协议可以高效率的将文件传输到嵌入式设备上,因此我用的是Zmodem协议。
二、zmodem协议的配置
1、SecureCRT里的配置
打开SecureCRT->options->session options->x/y/zmodem到如下界面:在upload和download选择上传和下载时的文件路径。
2、Linux下的配置
SecureCRT远程登录Linux后在终端输入:sudo apt-get install lrzsz 安装Zmodem
三、rz 、sz命令的使用
Zmodem传输数据会使用到2个命令(服务器上需要另外安装):
sz:将选定的文件发送(send)到本地机器
rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到服务器(receive)
1、rz命令
在终端打开要在linux上要存的文件路径,然后运行rz命令出现如下界面,我们可以在本地windows上选择文件传到Linux上。
我是在linux上创建了一个my_project文件夹,按照以上方法,我将桌面上的1.txt文件传输到Linux上,用ls命令发现可以在该路径下找到1.txt文件(传输其他类型文件的格式都一样)
2、sz命令
在终端输入:sz 文件名 ,即可发送到windows所配置的路径上,比如我在Linux的my_project文件夹里创建一个2.txt文件,ls可查看该目录下的文件,再通过sz 2.txt 将文件传输到windows,该文件可在E:/嵌入式linux/download下找到。
以上就是服务器端和客户端(在我电脑上就是windows和linux)之间通过zmodem实现文件的互传功能。
被推荐用secureCRT这个软件进行远程登录也有它的道理,因为它的集成功能比较多,我们在嵌入式开发中使用起来也比较方便。即使服务器在很远的地方,我们只要利用secureCRT远程登录服务器,就可以利用它已经集成好的zmodem向服务器发送或接收文件。