OSX下使用lrzsz传输文件

写在前面

在mac环境下,我们经常会使用 iTerm2终端连接远程服务器,也经常会有本机和远程服务器之间进行文件共享的需求。这个时候lrzsz就派上用场了。

lrzsz是unix下的开源软件包,支持XMODEM, YMODEM ZMODEM文件传输协议。本文将会展示如何将lrzsz集成到iTerm2终端中,通过szrz命令和远程服务器传输文件。
其中,s表示sendr表示recieve,z表示使用的协议为ZMODEM。

安装步骤

1. 安装lrzsz

  • 最简单的方式是通过brew安装:brew install lrzsz
  • 也可以通过下载源码安装。

2. 下载iterm2-zmodem支持脚本

  • 克隆代码库:git clone https://github.com/mmastrac/iterm2-zmodem.git
  • iterm2-send-zmodem.shiterm2-recv-zmodem.sh 脚本拷贝到目录/usr/local/bin/

3. 在iTerm2中配置Trigger

  • iTerm2 > Preference > Profiles > Advanced > Triggers > Edit
  • 增加rz和sz的配置如下:
    Regular expression: rz waiting to receive.\*\*B0100
    Action: Run Silent Coprocess
    Parameters: /usr/local/bin/iterm2-send-zmodem.sh
    Instant: checked

    Regular expression: \*\*B00000000000000
    Action: Run Silent Coprocess
    Parameters: /usr/local/bin/iterm2-recv-zmodem.sh
    Instant: checked

配置完成后如下:

更多关于Trigger的配置请参考这里

  1. 远程服务器安装lrzsz
    使用相关包管理工具安装lrzsz,如在centos下使用yum安装:yum -y install lrzsz

演示

  1. 本地上传文件到远程服务器
    上传文件到远程服务器比较简单,在iTerm2登录远程服务器后,直接在命令行输入命令:rz,iTerm2收到带有数据匹配到 rz waiting to receive.**B0100,执行脚本/usr/local/bin/iterm2-send-zmodem.sh,调起Finder将选择的文件上传至远程服务器。
  1. 远程服务器下载文件到本地
    从远程服务器下载文件到本地也很简单,键入命令:sz filename1 filename2 … filenameN,当iTerm2收到数据匹配到**B00000000000000时,执行脚本/usr/local/bin/iterm2-recv-zmodem.sh,调起Finder,将文件下载到选择目录。
image.png

更多参考

  1. https://github.com/mmastrac/iterm2-zmodem
  2. https://www.ohse.de/uwe/software/lrzsz.html
  3. https://www.iterm2.com/documentation-triggers.html

推荐阅读更多精彩内容