开发人员在开发时有时会遇到需要在本机和开发机之间传文件的问题。虽然mac下的scp命令可以完成文件的上传和下载功能,但如果开发机的登陆需要经过跳板机是,scp命令就没有办法正常使用了。

window上可以用rx,sz命令上传,下载文件,mac下也可以。下面介绍一下Mac OS下如何配置rz,sz。

安装brew

brew是Mac OS上的一个包管理工具,可以使用它来安装接下来要使用到的iTerm,wget等工具。

Mac默认安装了ruby,打开终端执行如下命令:

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Homebrew安装成功后,会自动创建目录 /usr/local/Cellar 来存放Homebrew安装的程序。 这时就可以在命令行状态下面就可以使用 brew 命令了.

安装iTerm2

iTerm是一个Mac下的终端工具,非常好用的命令行工具。Mac自带的终端是不支持lrzsz的,需要先下载支持它的iterms。

从官网下载,在本地解压,并将文件拖入Applications,安装完成。

安装lrzsz

lrzsz是一款在linux里可代替ftp上传和下载的程序。它使用unix通信套件提供的X,Y,和ZModem文件传输协议。通过下载它来使用rz,sz。

1
brew install lrzsz

安装wget

下载lrzsz之后,需要使用wget下载iterm2-zmodem。Mac默认不安装wget,可以通过brew安装。

1
brew install wget

下载iterm2-zmodem

在iTerm2中使用Zmodem传输文件。

1
2
3
4
5
6
7
cd /usr/local/bin

wget https://raw.github.com/mmastrac/iterm2-zmodem/master/iterm2-send-zmodem.sh

wget https://raw.github.com/mmastrac/iterm2-zmodem/master/iterm2-recv-zmodem.sh

chmod 777 /usr/local/bin/iterm2-*

如果命令需要权限,尝试在命令前面加上sudo

添加trigger

打开一个iTerm终端,点击菜单的Profiles,选择某个profile之后然后继续选择advanced → triggers,添加triggers。

Regular expression Action Action
\*\*B0100 Run Silent Coprocess /usr/local/bin/iterm2-send-zmodem.sh
\*\*B00000000000000 Run Silent Coprocess /usr/local/bin/iterm2-recv-zmodem.sh

使用

重启iterm2,连接远程Linux,输入rz命令尝试一下。

1
2
ssh username@remote.mechine.com
rz

参考文章

Mac(二)- Mac下使用rz、sz
在iTerm2中使用Zmodem传输文件