本文介绍通过 Zmodem 在本地和远端服务器间快速传输文件,这种做法更为简单方便。以前使用 scp 命令在本机和远端服务器间进行文件传输显得有些复杂,看看本文你就明白了。
Zmodem简介 Zmodem 是针对 modem 的一种支持错误校验的文件传输协议。Zmodem 是 Ymodem 的改进版,后者又是 Xmodem 的改进版。Zmodem 不仅能传输更大的数据,而且错误率更小。 利用 Zmodem 协议,可以在 modem 上发送 512 字节的数据块。Zmodem 包含一种名为检查点重启的特性,如果通信链接在数据传输过程中中断,能从断点处而不是从开始处恢复传输。
配置iTerm2支持Zmodem 要让 iTerm2 在远端服务器上支持通过 Zmodem 协议传输,需要分别在服务端和客户端进行相应配置。网上大多数文档都只提到客户端部分。因为收发方都必须有支持 Zmodem 协议的工具,才能进行正常收发。下面我们就来看看是如何进行配置的。
服务端配置 lrzsz 软件包是支持 Zmodem 协议的工具包。其包含的 rz、sz 命令是通过 ZModem 协议在远程服务器和终端机器间上传下载文件的利器。 为了正确通过 sz、rz 命令传输文件,服务端需要安装 lrzsz 软件包的。 1.针对Ubuntu 或 Debian系统: $ apt-get install lrzsz 2.针对RHEL 或 CentOS系统: $ yum install lrzsz
客户端配置 1.安装lrzsz 和服务器端一样,客户端同样需要安装 lrzsz 软件包。这里通过 Homebrew 进行 lrzsz 软件包安装。 $ brew install lrzsz 2.配置iTerm2 在开发爱好者网站 Github 上,已经有人共享了一个叫「ZModem integration for iTerm 2」的项目。我们只需下载其相应脚本,并进行简单配置就可以很容易的在 iTerm2 上实现对 Zmodem 的支持。 1].下载并安装脚本 $ git clone https://github.com/mmastrac/iterm2-zmodem.git $ cd iterm2-zmodem $ cp iterm2-recv-zmodem.sh iterm2-send-zmodem.sh /usr/local/bin/ 2].配置iTerm2上的触发器 打开 iTerm2 ,点击 Preferences → Profiles 选择指定的 Profile,这里选 Default。然后继续选择 Advanced → Triggers,并点击 Edit 添加两个触发器。
按如下内容添加两个触发器,首先增加 sz 指令的触发器: Regular expression: rz waiting to receive.\*\*B0100 Action: Run Silent Coprocess Parameters: /usr/local/bin/iterm2-send-zmodem.sh Instant: checked 其次增加 rz 指令的触发器: Regular expression: \*\*B00000000000000 Action: Run Silent Coprocess Parameters: /usr/local/bin/iterm2-recv-zmodem.sh Instant: checked 成功增加完成后的效果,类似下图:
配置这两个触发器的作用就是让 iTerm2 根据终端上显示的字符通过指定的触发器调用相应的发送和接收脚本。
使用Zmodem传输文件 1.发送文件到远端服务器 在远端服务器执行 rz 命令 本地选择文件传输 等待传输指示消失 2.接收远端服务器的文件 在远端服务器执行 sz filename1 filename2 … filenameN 命令 本地选择目录保存 等待传输指示消失 上面详细介绍了如何在 macOS 下通过 Zmodem快速传输文件的方法,你可能会问没有 macOS 的情况下如何破?其实在 Windows 下实现更加简单,只需使用一个支持 Zmodem 的终端软件就行了,这里推荐 XShell。当然服务端的 lrzsz 软件包是必不可少的。
相关主题 |