rz,sz命令传输文件,比使用scp要方便得多,特别是在图形界面打开终端,SSH登陆到远程机器需要传输文件的时候。但是MacOS里Terminal.app并不支持Zmodel传输。好在iTerm2具备较强的扩展性可以通过简单的配置支持Zmodem传输。
Zmodem 是跨平台的文件传输协议,可以很方便的在不同的操作系统之间接传输文件。lzrsz 是该协议的实现方式:https://ohse.de/uwe/software/lrzsz.html。安装后,在 Mac 的 ITerm2 中用 SSH 登陆远程的 Linux 主机,然后用 rz 、sz 命令传输文件。
1. 在本地Mac端安装 lrzsz
先安装brew,即软件管理器,类似centOS的yum工具。
/usr/bin/ruby -e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
另,如果需要卸载brew,可用如下命令。本次不需要卸载,仅做记录备忘。
ruby -e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
安装brew之后就可在 Mac 中安装lrzsz:
brew install lrzsz
2. 下载脚本文件到本地Mac电脑里
从这里下载。复制到 /usr/local/bin/,并增加执行权限。
$ gitclone https://github.com/mmastrac/iterm2-zmodem.git
$ cp iterm2-zmodem/iterm2-send-zmodem.sh /usr/local/bin/iterm2-send-zmodem.sh
$ cp iterm2-zmodem/iterm2-recv-zmodem.sh /usr/local/bin/iterm2-recv-zmodem.sh
$ chmod +x /usr/local/bin/iterm2-send-zmodem.sh
$ chmod +x /usr/local/bin/iterm2-recv-zmodem.sh
3. 配置 Mac电脑上的iTerm2软件
iTerm2 -> Profiles -> Default ->Advanced -> Triggers -> edit
点击图中左下角所示『+』号,依次输入下面两行的内容。
Regular expression: *\*B0100
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-send-zmodem.shInstant: checked
Regular expression: \*\*B00000000000000
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-recv-zmodem.shInstant: checked
4. Linux服务器上面也要安装lszrz软件
我安装到自己的bin目录下,还分别将lrz和lsz做了软连接。
5. 使用
发送文件:
登录服务器
$ rz
在弹窗中从本地选择文件
确定,等待
接收文件:
登录服务器
$ sz filename1 filename2 ... filenameN
在弹窗中选择接收的本地目录
确定,等待
参考资料References:
https://www.jianshu.com/p/775bd2c5b93d