Warp 终端中配置使用 trzsz 实现 sz/rz Zmodem 协议命令传输文件
✨ 本文介绍了如何在Warp终端中配置使用trzsz工具实现Zmodem协议的文件传输。Zmodem协议通过sz和rz命令支持快速、可靠的文件发送和接收,增强了文件传输的效率。作者还推荐了trzsz-ssh工具,作为openssh的替代品,进一步简化了通过SSH进行文件传输的流程。
前言
一个好的终端能显著提升工作效率,因此市场上有许多终端模拟器应用。在macOS上,我曾使用过iTerm 2和 Kitty,但随着 Warp 的出现,我逐渐将 Warp 作为主力应用。Warp是一款基于 Rust 语言追求快速而重新设计的终端,通过 AI 和协作工具提高生产力,简化了命令的调用和分享。
https://app.warp.dev/referral/W6V55L关于 Warp 的介绍官网文档以及各路文章已经很多,此处不做展开。这里记录下在 Warp 终端中使用 rz /sz 命令相关配置。
ZMODEM 是一种广泛使用的文件传输协议,主要用于在计算机之间高效、可靠地传输文件。其设计目标是提高传输速度并减少出错的机会,特别是在不稳定的网络环境中。ZMODEM 相比于其前身 XMODEM 和 YMODEM,拥有更快的传输速度和更强的错误检测能力。
在 ZMODEM 文件传输协议中,
sz和rz是两个常用的命令,分别用于发送和接收文件。
- sz 命令:
sz代表 Send ZMODEM,是用来从本地计算机向远程计算机发送文件的命令。当用户在终端输入sz filename时,该命令会将指定的文件通过 ZMODEM 协议发送到连接的远程系统。sz自动处理文件的压缩和错误检测,并提供进度反馈,确保文件完整性。- rz 命令:
rz代表 Receive ZMODEM,是用来从远程计算机接收文件的命令。当用户在远程终端输入rz时,系统等待接收文件并通过 ZMODEM 协议接收文件传输。此命令同样支持文件压缩和错误检测,确保用户能够成功接收到文件。
配置
在尝试直接在 Warp 终端下使用 lrzsz 命令未果后,发现了 trzsz 这个项目。
https://trzsz.github.io/之前在 V2EX 上的帖子也经常刷到这个项目。如其介绍所说:trzsz ( trz / tsz ) 是一款优秀的文件传输工具,和 lrzsz ( rz / sz ) 类似的、兼容 tmux 的文件传输工具。
本打算是直接使用这个的,但随后发现了此项目的衍生项目—— trzsz-ssh 。trzsz-ssh ( tssh ) 设计为 ssh 客户端的直接替代品,提供与 openssh 完全兼容的基础功能,同时实现其他有用的扩展功能。其直接内置支持了 trzsz ( trz / tsz ) 工具,下面直接安装此工具来达成目的。
安装
通过 Homebrew 安装
大陆网络受限用户可通过此项目来使用 Homebrew
https://github.com/Brewforge/homebrew-chinesebrew update
brew install trzsz-ssh使用 trzsz
通过 tssh 登录远程主机,在远程主机上安装 trzsz。(此处系统版本为 Debian 12
curl -s 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x7074ce75da7cc691c1ae1a7c7e51d1ad956055ca' \
| sudo gpg --dearmor -o /usr/share/keyrings/trzsz.gpg
echo 'deb [signed-by=/usr/share/keyrings/trzsz.gpg] https://ppa.launchpadcontent.net/trzsz/ppa/ubuntu jammy main' \
| sudo tee /etc/apt/sources.list.d/trzsz.list
sudo apt update
sudo apt install trzsztssh remote_server
# 上传文件(类似 rz
trz
# 上传文件夹
trz -r
# 下载文件 (类似 sz
tsz filename
tsz /path/to/filename
# 下载文件夹
tsz -r dir
tsz -r /path/to/dir使用传统 Zmodem (sz / rz)
在 ~/.ssh/config 中添加如下配置
Host *
#!! EnableZmodem Yestssh remote_server
# 接收
rz
# 发送
sz filename上面我没有将 tssh 命令创建软链接命名为 ssh ,这会使得 Warp 终端的分块 Blocks 功能失效,我是使用了 Warp 的 sub-shell 功能,将 tssh 命令加入了其中。
当然也可参照下方 trzsz-ssh 官方文档的建议来进行配置:
