Warp 终端中配置使用 trzsz 实现 sz/rz Zmodem 协议命令传输文件

status
Published
type
Post
slug
use-sz-rz-commands-in-mac-warp-terminal-by-trzsz
date
May 6, 2024
tags
Shell
Config
Mac
Linux
summary
本文介绍了如何在Warp终端中配置使用trzsz工具实现Zmodem协议的文件传输。Zmodem协议通过sz和rz命令支持快速、可靠的文件发送和接收,增强了文件传输的效率。作者还推荐了trzsz-ssh工具,作为openssh的替代品,进一步简化了通过SSH进行文件传输的流程。

前言

一个好的终端能显著提升工作效率,因此市场上有许多终端模拟器应用。在macOS上,我曾使用过iTerm 2和 Kitty,但随着 Warp 的出现,我逐渐将 Warp 作为主力应用。Warp是一款基于 Rust 语言追求快速而重新设计的终端,通过 AI 和协作工具提高生产力,简化了命令的调用和分享。
关于 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 这个项目。
之前在 V2EX 上的帖子也经常刷到这个项目。如其介绍所说:trzsz ( trz / tsz ) 是一款优秀的文件传输工具,和 lrzsz ( rz / sz ) 类似的、兼容 tmux 的文件传输工具。
本打算是直接使用这个的,但随后发现了此项目的衍生项目—— trzsz-sshtrzsz-ssh ( tssh ) 设计为 ssh 客户端的直接替代品,提供与 openssh 完全兼容的基础功能,同时实现其他有用的扩展功能。其直接内置支持了 trzsz ( trz / tsz ) 工具,下面直接安装此工具来达成目的。

安装

通过 Homebrew 安装
大陆网络受限用户可通过此项目来使用 Homebrew
brew 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 trzsz
tssh 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 Yes
tssh remote_server # 接收 rz # 发送 sz filename
 
上面我没有将 tssh 命令创建软链接命名为 ssh ,这会使得 Warp 终端的分块 Blocks 功能失效,我是使用了 Warp 的 sub-shell 功能,将 tssh 命令加入了其中。
当然也可参照下方 trzsz-ssh 官方文档的建议来进行配置:
notion image
 

参考资料