内容简介:tmux 不支持 rz / sz ,于是有一个兼容 tmux 的 trz / tsz ( trzsz ), 可以与 iTerm2 一起用,还有一个不错的进度条。 已发布 0.3.0 版本: 1、支持二进制模式传输,对于压缩包、图片、影音等传输会快一些。 2、...
tmux 不支持 rz / sz ,于是有一个兼容 tmux 的 trz / tsz ( trzsz ),
可以与 iTerm2 一起用,还有一个不错的进度条。
已发布 0.3.0 版本:
1、支持二进制模式传输,对于压缩包、图片、影音等传输会快一些。
2、优化了多处使用体验,提示更友好,Python2 也能支持中文名。
trzsz
trzsz 是一个简单的文件传输工具,和 lrzsz ( rz / sz ) 类似但支持 tmux,和 iTerm2 一起使用,并且有一个不错的进度条。
GitHub: https://github.com/trzsz/trzsz
为什么开发 trzsz ?
登录远程电脑时用 tmux 保持会话,但 tmux 不支持用 rz / sz 上传和下载文件,这就很不方便了。
重新造一个 rz / sz 比修改 tmux 相对简单很多,并且可以加个进度条,体验上会好很多。
安装指南
远程服务器安装 trzsz-svr
sudo python3 -m pip install --upgrade trzsz-libs trzsz-svr
- 同样也支持 Python 2:
sudo pip install --upgrade trzsz-libs trzsz-svr - 没有
sudo权限也可以安装,但是要将安装路径 ( 可能是~/.local/bin) 添加到 PATH 环境变量中。 - 安装后执行
trz -v或tsz -v,如果输出 trzsz 的版本号就是安装成功了,否则检查前面安装的输出是不是有错误。
本地 macOS 安装 trzsz-iterm2
sudo python3 -m pip install --upgrade trzsz-libs trzsz-iterm2
- 同样也支持 Python2:
sudo pip install --upgrade trzsz-libs trzsz-iterm2 - 安装后执行
which trzsz-iterm2,如果输出/usr/local/bin/trzsz-iterm2就是安装成功了,如果不是:- 执行
which trzsz-iterm2没有输出,检查前面安装的输出是不是有错误。 - 执行
which trzsz-iterm2输出另一个路径,可以建一个软链接:
sudo ln -sv $(which trzsz-iterm2) /usr/local/bin/trzsz-iterm2
- 执行
iTerm2 配置触发器
打开 Preferences -> Profiles -> Advanced -> Triggers -> Edit,如下配置:
| Name | Value | Note |
|---|---|---|
| Regular Expression | :(:TRZSZ:TRANSFER:[SR]:\d+\.\d+\.\d+:\d+) |
前后无空格 |
| Action | Run Silent Coprocess |
|
| Parameters | /usr/local/bin/trzsz-iterm2 \1 |
前后无空格 |
| Enabled | ✅ | 选中 |
-
不要选中最下面的
Use interpolated strings for parameters。 - iTerm2 Trigger 的配置允许输入多行,但只显示一行,注意不要复制了一个换行符进去。
本地 macOS 安装 zenity
安装在 /usr/local/bin/zenity 就可以显示进度条,不安装也可以正常使用。
brew install ncruces/tap/zenity
- 如果
Mac M1安装失败,可以试试用go进行编译安装:brew install go go install 'github.com/ncruces/zenity/cmd/zenity@latest' sudo cp ~/go/bin/zenity /usr/local/bin/zenity - 安装后执行
which zenity,如果输出/usr/local/bin/zenity就是安装成功了,如果不是:- 执行
which zenity没有输出,检查前面安装的输出是不是有错误。 - 执行
which zenity输出另一个路径,可以建一个软链接:
sudo ln -sv $(which zenity) /usr/local/bin/zenity
- 执行
使用指南
trz 上传文件
trz 命令可以不带任何参数,将上传文件到当前目录。也可以带一个目录参数,指定上传到哪个目录。
trz /tmp/
tsz 下载文件
tsz 可以带一个或多个文件名(可使用相对路径或绝对路径,也可使用通配符),将下载指定的文件。
tsz file1 file2 file3
-q 静默模式
trz -q 或 tsz -q xxx ( 加上 -q 选项 ),则在传输文件时不显示进度条。
-y 覆盖模式
trz -y 或 tsz -y xxx ( 加上 -y 选项 ),如果存在相同文件名的文件就直接覆盖。
-b 二进制模式
trz -b 或 tsz -b xxx ( 加上 -b 选项 ),二进制传输模式,对于压缩包、图片、影音等较快。
-e 转义控制字符
二进制传输模式时,控制字符可能会导致传输失败,trz -eb 或 tsz -eb xxx ( 加上 -e 选项 ) 转义所有已知的控制字符。
-B 缓冲区大小
trz -B 10k 或 tsz -B 2M xxx 等,设置缓存区大小 ( 默认 1M )。太小会导致传输速度慢,太大会导致进度条更新不及时。
-t 超时时间
trz -t 10 或 tsz -t 30 xxx 等,设置超时秒数 ( 默认 100 秒 )。在超时时间内,如果无法传完一个缓冲区大小的数据则会报错并退出。设置为 0 或负数,则永不超时。
异常处理方法
- 如果出现了错误,且
trzsz挂住不能动了:- 按组合键
Command + Option + Shift + R停止 iTerm2 Coprocesses。 - 按组合键
Control + j停止服务器上的trz或tsz进程。
- 按组合键
- 如果
trz -b二进制上传失败,并且登录远程服务器时使用了telnet或docker exec:- 可以试试转义所有控制字符,例如
trz -eb。
- 可以试试转义所有控制字符,例如
- 如果
trz -b二进制上传失败,并且远程服务器使用 Python3 ( 版本小于 3.7 ):- Python3 ( 版本小于 3.7 ) 支持 base64 模式,不使用
-b选项即可,使用trz代替。 - 如果想用
trz -b二进制上传,则需要升级 Python3 到 3.7 以上的版本,或者使用 Python2。
- Python3 ( 版本小于 3.7 ) 支持 base64 模式,不使用
- 如果
trz -b或tsz -b二进制传输失败,并且登录远程服务器时使用了expect:- 可以试试在
expect脚本前设置环境变量export LC_CTYPE=C,例如:#!/bin/sh export LC_CTYPE=C expect -c ' spawn ssh xxx expect "xxx: " send "xxx\n" interact '
- 可以试试在
屏幕截图
上传文件示例
下载文件示例
以上所述就是小编给大家介绍的《支持 tmux,类似 rz / sz 的 trzsz 发布 0.3.0 版本》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Pike 4.0 版本发布,类似 Varnish 的 HTTP 缓存服务器
- 如何在低版本的 Spring 中快速实现类似自动配置的功能
- 类似Github的webhook实现
- 类似 Qt 的 GOSP 发布修复更新
- ASP实现类似hashMap功能的类
- 使用 Reactor 完成类似 Flink 的操作
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Design systems
Not all design systems are equally effective. Some can generate coherent user experiences, others produce confusing patchwork designs. Some inspire teams to contribute to them, others are neglected. S......一起来看看 《Design systems》 这本书的介绍吧!