LonnyWong
V2EX  ›  程序员

go 版 trzsz ( 兼容 tmux 的 rz / sz ) 已发布到各大软件分发平台,可以通过 apt、yum 和 brew 等进行安装。

By LonnyWong at 2022 年 7 月 2 日 · 3744 次点击

项目地址:https://github.com/trzsz/trzsz-go

版本:v0.1.8 支持目录传输,支持拖文件和目录上传。

1 、在 Ubuntu 用 apt 安装

sudo apt update && sudo apt install software-properties-common
sudo add-apt-repository ppa:trzsz/ppa && sudo apt update
sudo apt install trzsz

Debian 也可以用 ppa:trzsz/ppa 这个源,详情可参考 How to add PPA repositories in Debian

2 、在 Fedora 、CentOS 或 RHEL 用 yum 安装

echo '[trzsz]
name=Trzsz Repo
baseurl=https://yum.fury.io/trzsz/
enabled=1
gpgcheck=0' | sudo tee /etc/yum.repos.d/trzsz.repo

sudo yum install trzsz

3 、在 macOS 用 brew 安装

brew update
brew install trzsz-go

其实,在 Linux 下也以用 Homebrew 的。


4 、用法:

4.1 、客户端和服务端都安装好 trzsz

4.2 、在客户端使用 trzsz ssh xxx 登录

4.3 、在服务端使用 trz 上传,使用 tsz xxx 下载

第 1 条附言  ·  2022 年 7 月 2 日

增加了几种安装方式:

1、Debian 详见 https://github.com/trzsz/trzsz-go

2、Windows Scoop:

scoop bucket add extras
scoop install trzsz

3、ArchLinux 使用 yay 安装:

yay -Syu
yay -S trzsz
24 条回复  •  2022-07-07 15:32:35 +08:00
ByteCat
   1
ByteCat  
   2022 年 7 月 2 日   ❤️ 1
Windows scoop 没搜到,加一下吧
LonnyWong
   2
LonnyWong  
OP
   2022 年 7 月 2 日
@ByteCat 我去提个 PR ,稍等。
Trim21
   3
Trim21  
   2022 年 7 月 2 日 via Android   ❤️ 1
已经在用 goreleaser 的话可以直接设置一下 goreleaser ,支持创建 scoop 仓库并且自动更新…
icepie
   4
icepie  
   2022 年 7 月 2 日
给 archlinux 也打包一下吧
LonnyWong
   5
LonnyWong  
OP
   2022 年 7 月 2 日
@Trim21 太感谢了,差点就手写了。
ByteCat
   6
ByteCat  
   2022 年 7 月 2 日
另外希望有一个 apt 仓库~ 我基本都是用 Debian ,现在手动下载添加 path 的 😂
用还是挺好用的,支持
LonnyWong
   7
LonnyWong  
OP
   2022 年 7 月 2 日
@ByteCat 我也想找这样的仓库。
LonnyWong
   8
LonnyWong  
OP
   2022 年 7 月 2 日
合入 scoop 的 extras 要求 at least 100 stars and 50 forks ,现在 269 个 stars ,希望不要求 forks 达到 50 。

合入 scoop 的 main 的要求就更高了 at least 500 stars and 150 forks ,希望有一天能进去。

extras 的 PR 地址: https://github.com/ScoopInstaller/Extras/pull/8789

在合入之前,也可以这样安装:
scoop install https://raw.githubusercontent.com/lonnywong/Scoop-Extras/master/bucket/trzsz.json

卸载方法:scoop uninstall trzsz
LonnyWong
   9
LonnyWong  
OP
   2022 年 7 月 2 日
@icepie 是指用 pacman 来安装那个?我研究下怎么搞。
LonnyWong
   10
LonnyWong  
OP
   2022 年 7 月 2 日
@icepie 发布到 AUR 中了。

方法一,用 makepkg 安装:
sudo pacman -S git base-devel
git clone https://aur.archlinux.org/trzsz.git
cd trzsz/
makepkg -sri



方案二,用 yay 安装( 需要先用 makepkg 来安装 yay ):
sudo pacman -S git base-devel

git clone https://aur.archlinux.org/yay.git
cd yay/
makepkg -sri

yay -S trzsz
LonnyWong
   11
LonnyWong  
OP
   2022 年 7 月 2 日
@ByteCat Debian 可以这样安装:

sudo apt install gpg ca-certificates
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7E51D1AD956055CA
echo 'deb 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
LonnyWong
   12
LonnyWong  
OP
   2022 年 7 月 2 日
@ByteCat Windows scoop 已经合入了,安装方式:

scoop bucket add extras
scoop install trzsz

另外,Debian 的安装方式提示 apt-key 过时了,换了一种更安全的方式,详见 https://github.com/trzsz/trzsz-go 里的 README.md ( V2EX 贴不进来 )
ByteCat
   13
ByteCat  
   2022 年 7 月 3 日
@LonnyWong Good! Windows with scoop && Debian with apt 测试可用,Windows Terminal 也完全没有问题,很棒的项目,已 Star !
icepie
   14
icepie  
   2022 年 7 月 3 日
建议实现一下 bash zsh fish 等 shell 的补全
LonnyWong
   15
LonnyWong  
OP
   2022 年 7 月 3 日 via iPhone
@icepie 经过 trzsz 登录后,shell 的补全能力没有丢失吧?你是指在哪里,怎么样使用时,没有补全?
icepie
   16
icepie  
   2022 年 7 月 3 日   ❤️ 1
例如我在 fish 使用, 输入 ssh 再按 tab 即可通过 ssh_config 补全已保存的连接信息

根据 fish 补全的文档: https://fishshell.com/docs/current/completions.html

我简单写了一下配置

```
cat -p ~/.config/fish/completions/trzsz.fish 15:11:45
# fish completion for trzsz

function __fish_trzsz_print_remaining_args
set -l tokens (commandline -opc) (commandline -ct)
set -e tokens[1]
if test -n "$argv"
and not string match -qr '^-' $argv[1]
string join0 -- $argv
return 0
else
return 1
end
end

function __fish_complete_trzsz_subcommand
set -l args (__fish_trzsz_print_remaining_args | string split0)
__fish_complete_subcommand --commandline $args
end

# Complete the command we are executed under trzsz
complete -c trzsz -x -a "(__fish_complete_trzsz_subcommand)"
```

然后我输入 trzsz ssh 按 tab 就能和 单独输入 ssh 再 tab 一样实现补全了


十分感谢作者的开发, 这个只是个与程序本身无关的小细节, 不用太在意

可以参考 platformio 的实现: https://docs.platformio.org/en/latest/core/userguide/system/completion/index.html
LonnyWong
   17
LonnyWong  
OP
   2022 年 7 月 3 日 via iPhone
@icepie 感谢分享,我明白你的意思了。

如果要通用的话,trzsz ssh 是根据第二个参数来补全,trzsz -d ssh 是根据第三个参数来补全。在输入这些的时候,trzsz 还没有运行,trzsz 怎么样与 shell 进行沟通,让 shell 按第几个参数来做补全的?例如 shell 会在后台询问 trzsz ,接下来的补全策略是什么?
LonnyWong
   18
LonnyWong  
OP
   2022 年 7 月 3 日 via iPhone
@icepie 应该是要写一些 completion 的脚本,发布到什么平台,然后用户从那里来安装?
icepie
   19
icepie  
   2022 年 7 月 4 日
比如 platformio 是有一个参数可以 copy 这些 completion 到系统目录的

$ pio system completion install
PlatformIO CLI completion has been installed for fish shell to ~/.config/fish/completions/pio.fish
Please restart a current shell session


咱也可以集成在 cli 里

不需要啥特别的发布平台
LonnyWong
   20
LonnyWong  
OP
   2022 年 7 月 4 日 via iPhone
@icepie 明白了。感觉可以为 trzsz 加一些参数来安装。例如:
trzsz --completion help
trzsz --completion install
trzsz --completion uninstall
可以自动识别出当前是什么 shell ,哪里有源代码可以参考?
如果你有空的话,欢迎你来一起搞,提个 PR 过来。到时一起讨论,可能做一点小调整,然后我就会合入。注意用你 github 的邮箱来提交代码,会把你列在贡献者列表中。

我也要上班,一般周末才有空搞。现在 js 版的功能落后了很多,还没空去写。

另外,我也在考虑用并行提高传输速度:现在是读文件和压缩,然后发送到远程(接收端反过来),这是串行的。可以做成并行的,在发送到远程的同时,可以做下一轮的读文件和压缩。因为实现比较复杂,并且如果网络很慢,读文件和压缩很快,这样的效果不会有多好的,所以一开始没有这样写。
everyx
   21
everyx  
   2022 年 7 月 4 日   ❤️ 1
@icepie fish 的补全不用这么麻烦,可以用 function 的 wraps 参数复用的,如下

❯ cat ~/.config/fish/functions/ssh.fish
function ssh --wraps ssh --description 'ssh wraped with trzsz'
trzsz ssh $argv
end
icepie
   22
icepie  
   2022 年 7 月 4 日   ❤️ 1
@LonnyWong ok, 我这几天有空帮您看看

@everyx 学到了 感谢
lslhz
   23
lslhz  
   2022 年 7 月 7 日
@LonnyWong 很实用的项目啊, 已 star, 我用的 js 版, 没看明白 examples/browser examples/addon 这 2 个有啥区别?跑起来一模一样啊
LonnyWong
   24
LonnyWong  
OP
   2022 年 7 月 7 日 via iPhone
@lslhz 确实没有太大区别,只是实现方式有一点点不同。addon 是用 TrzszAddon 这个自动封装 websocket (接入简单一点),另一个是用更底层一点的 TrzszFilter (可定制能力稍微多一点)。
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
© 2026 V2EX · 59ms · 3.9.8.5