1. 引言
在日常开发中,我们经常需要通过终端与远程服务器之间传输文件。macOS 用户常用的终端工具是 iTerm2,而 rz、sz 是 Linux 服务器上非常经典的上传下载命令。本文将详细介绍如何在 mac 的 iTerm2 中使用 rz、sz 上传下载文件,并附上 scp 命令操作详解,帮助你高效完成文件传输。
2. 准备工作
在开始之前,需要确认以下环境是否就绪:
- macOS 终端工具:推荐使用 iTerm2,可从官网下载安装。
- 远程服务器:Linux 系统,已安装 lrzsz 工具包。
- SSH 连接:确保可以正常通过 SSH 登录远程服务器。
3. 安装 lrzsz 工具
rz、sz 命令依赖服务器端的 lrzsz 工具包。以 CentOS 和 Ubuntu 为例,安装命令如下:
bash
# CentOS / RHEL
yum install -y lrzsz
Ubuntu / Debian
apt-get install -y lrzsz
安装完成后,可以在服务器上执行以下命令验证:
bash
which rz
which sz
如果输出对应的路径,说明安装成功。
4. iTerm2 配置 rz、sz 支持
iTerm2 默认不支持 rz、sz 的弹窗交互,需要借助触发器(Trigger)来实现。具体配置步骤如下:
4.1 下载脚本
首先需要下载两个辅助脚本,用于处理 rz、sz 的文件传输交互。推荐使用以下开源脚本:
bash
# 创建本地脚本目录
mkdir -p ~/.iterm2
下载 iterm2-zmodem 脚本
cd ~/.iterm2
curl -O https://raw.githubusercontent.com/aikuyun/iterm2-zmodem/master/iterm2-zmodem.sh
chmod +x iterm2-zmodem.sh
4.2 配置触发器
打开 iTerm2 的偏好设置,按以下步骤操作:
- 打开 Preferences (快捷键
Command + ,)。 - 进入 Profiles 标签页,选择当前使用的 Profile。
- 点击 Advanced 选项卡,找到 Triggers 区域。
- 点击 Edit 按钮,添加两条触发器规则。
第一条规则用于捕获 rz 请求:
- Regular Expression :
\*\*B0100 - Action :
Run Silent Coprocess... - Parameters :
~/.iterm2/iterm2-zmodem.sh
第二条规则用于捕获 sz 请求:
- Regular Expression :
\*\*B00000000000000 - Action :
Run Silent Coprocess... - Parameters :
~/.iterm2/iterm2-zmodem.sh
配置完成后,点击 OK 保存即可。
5. 使用 rz 上传文件
rz 命令用于从本地 mac 上传文件到远程服务器。操作步骤如下:
5.1 进入目标目录
首先在服务器上进入希望存放文件的目标目录:
bash
cd /data/uploads
5.2 执行 rz 命令
在终端输入 rz 并回车:
bash
rz
此时 iTerm2 会弹出系统文件选择窗口,选择本地需要上传的文件,点击确定即可开始上传。上传完成后,终端会显示传输结果。
6. 使用 sz 下载文件
sz 命令用于从远程服务器下载文件到本地 mac。操作步骤如下:
6.1 执行 sz 命令
在服务器上输入 sz 并指定要下载的文件路径:
bash
sz /data/logs/app.log
执行后,iTerm2 会弹出本地保存目录选择窗口,选择保存位置后点击确定即可开始下载。
6.2 下载多个文件
sz 支持一次下载多个文件,只需在命令后列出多个路径:
bash
sz /data/logs/app.log /data/logs/error.log
7. scp 命令详解
scp(Secure Copy)是基于 SSH 的安全文件传输命令,无需在服务器上额外安装工具,使用更加通用。下面介绍 scp 的常用操作。
7.1 从本地上传到服务器
基本语法:
bash
scp 本地文件路径 用户名@服务器IP:远程目标路径
示例:
bash
scp ~/Desktop/report.pdf root@192.168.1.100:/data/uploads/
执行后会提示输入密码,输入正确密码即可开始上传。
7.2 从服务器下载到本地
基本语法:
bash
scp 用户名@服务器IP:远程文件路径 本地目标路径
示例:
bash
scp root@192.168.1.100:/data/logs/app.log ~/Desktop/
7.3 上传整个目录
使用 -r 参数可以递归复制整个目录:
bash
scp -r ~/project root@192.168.1.100:/data/
7.4 指定端口
如果 SSH 端口不是默认的 22,需要使用 -P 参数指定端口:
bash
scp -P 2222 ~/Desktop/report.pdf root@192.168.1.100:/data/uploads/
7.5 保留文件属性
使用 -p 参数可以保留文件的修改时间、访问时间和权限:
bash
scp -p ~/Desktop/report.pdf root@192.168.1.100:/data/uploads/
8. rz、sz 与 scp 的对比
| 对比项 | rz / sz | scp |
|---|---|---|
| 依赖工具 | 服务器需安装 lrzsz | 无需额外安装 |
| 交互体验 | 弹出文件选择窗口,操作直观 | 命令行指定路径,适合脚本化 |
| 传输目录 | 需先打包再传输 | 支持 -r 递归传输目录 |
| 断点续传 | 不支持 | 不支持 |
| 适用场景 | 少量文件、交互式操作 | 批量传输、自动化脚本 |
9. 常见问题与注意事项
9.1 rz、sz 命令找不到
如果执行 rz、sz 提示命令不存在,说明服务器未安装 lrzsz,请参考第 3 节安装。
9.2 弹窗未出现
如果执行 rz、sz 后 iTerm2 没有弹出文件选择窗口,请检查触发器配置是否正确,并确认脚本路径无误。
9.3 传输大文件建议
对于大文件传输,建议优先使用 scp 或 rsync,rz、sz 在传输大文件时速度较慢且不支持断点续传。
9.4 安全性提醒
rz、sz 和 scp 均基于 SSH 加密传输,但请务必保管好服务器密码,避免使用弱密码。
10. 总结
本文详细介绍了在 mac 的 iTerm2 中使用 rz、sz 上传下载文件的方法,包括 lrzsz 安装、iTerm2 触发器配置以及实际操作步骤。同时附上了 scp 命令的详细用法,涵盖上传、下载、目录传输、指定端口等常见场景。两种方式各有优势,rz、sz 交互直观,scp 更适合脚本化批量操作,你可以根据实际需求灵活选择。