Mac使用zmodem传输文件
最近有将本地文件跨认证机和中控机传向服务器的需求,scp当然跪了,无法使用,就找到这个更好用的方法了,分享一波。
rz,sz命令传输文件,比使用scp要方便得多,特别是在图形界面打开终端,SSH登陆到远程机器需要传输文件的时候。
但是MacOS里Terminal.app并不支持Zmodel传输,好在iTerm2具备较强的扩展性可以通过简单的配置支持Zmodem传输。
安装配置
安装lrzsz
1 | brew install lrzsz |
如果安装遇到错误的话,使用以下方法:1
curl -k https://ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz -o lrzsz-0.12.20.tar.gz
将下载的文件放到 ~/Library/Caches/Homebrew 目录下1
brew install lrzsz
安装iterm2-zmodem文件
将 iterm2-recv-zmodem.sh 和 iterm2-send-zmodem.sh 脚本保存在 /usr/local/bin/
1 | #!/bin/bash |
1 | #!/bin/bash |
注意添加脚本可执行权限:1
2chmod +x iterm2-send-zmodem.sh
chmod +x iterm2-recv-zmodem.sh
在iTerm 2添加Triggers
打开iTerm的Preferences,或者使用 command + , ,点进Profiles项,Advanced项,进入Tirggers,点击Edit,添加两条规则:
Regular expression: rz waiting to receive.**B0100
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-send-zmodem.sh
Regular expression: **B00000000000000
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-recv-zmodem.sh
至此,所有配置完成。下面就可以使用黑科技来传输文件了。
使用方法
将文件传到远端服务器
在远端服务器上输入 rz ,回车
选择本地要上传的文件
等待上传
从远端服务器下载文件
在远端服务器输入 sz filename filename1 … filenameN
选择本地的存储目录
等待下载
PS:远端服务器也需要安装lrzsz。
centOS安装方法: yum -y install lrzsz
经过跳板机rz上传稍大文件失败及解决方案
失败原因
经过跳板机之后直接rz、sz一个稍大的文件会在上传一部分后退出并显示一堆乱码,这是因为这中间有控制字符的原因。解决方案
加参数-e忽略控制字符
rz -e 和 sz -e