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

2022-07-02 13:42:30 +08:00
 LonnyWong

项目地址: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 下载

2524 次点击
所在节点    程序员
24 条回复
ByteCat
2022-07-02 14:05:39 +08:00
Windows scoop 没搜到,加一下吧
LonnyWong
2022-07-02 14:19:34 +08:00
@ByteCat 我去提个 PR ,稍等。
Trim21
2022-07-02 14:33:26 +08:00
已经在用 goreleaser 的话可以直接设置一下 goreleaser ,支持创建 scoop 仓库并且自动更新…
icepie
2022-07-02 14:34:11 +08:00
给 archlinux 也打包一下吧
LonnyWong
2022-07-02 14:41:18 +08:00
@Trim21 太感谢了,差点就手写了。
ByteCat
2022-07-02 14:55:30 +08:00
另外希望有一个 apt 仓库~ 我基本都是用 Debian ,现在手动下载添加 path 的 😂
用还是挺好用的,支持
LonnyWong
2022-07-02 15:33:30 +08:00
@ByteCat 我也想找这样的仓库。
LonnyWong
2022-07-02 15:55:49 +08:00
合入 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
2022-07-02 16:04:10 +08:00
@icepie 是指用 pacman 来安装那个?我研究下怎么搞。
LonnyWong
2022-07-02 19:39:01 +08:00
@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
2022-07-02 22:12:48 +08:00
@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
2022-07-02 23:28:16 +08:00
@ByteCat Windows scoop 已经合入了,安装方式:

scoop bucket add extras
scoop install trzsz

另外,Debian 的安装方式提示 apt-key 过时了,换了一种更安全的方式,详见 https://github.com/trzsz/trzsz-go 里的 README.md ( V2EX 贴不进来 )
ByteCat
2022-07-03 00:10:39 +08:00
@LonnyWong Good! Windows with scoop && Debian with apt 测试可用,Windows Terminal 也完全没有问题,很棒的项目,已 Star !
icepie
2022-07-03 02:04:14 +08:00
建议实现一下 bash zsh fish 等 shell 的补全
LonnyWong
2022-07-03 09:18:06 +08:00
@icepie 经过 trzsz 登录后,shell 的补全能力没有丢失吧?你是指在哪里,怎么样使用时,没有补全?
icepie
2022-07-03 15:16:04 +08:00
例如我在 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
2022-07-03 17:06:06 +08:00
@icepie 感谢分享,我明白你的意思了。

如果要通用的话,trzsz ssh 是根据第二个参数来补全,trzsz -d ssh 是根据第三个参数来补全。在输入这些的时候,trzsz 还没有运行,trzsz 怎么样与 shell 进行沟通,让 shell 按第几个参数来做补全的?例如 shell 会在后台询问 trzsz ,接下来的补全策略是什么?
LonnyWong
2022-07-03 17:13:36 +08:00
@icepie 应该是要写一些 completion 的脚本,发布到什么平台,然后用户从那里来安装?
icepie
2022-07-04 02:39:46 +08:00
比如 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
2022-07-04 07:25:46 +08:00
@icepie 明白了。感觉可以为 trzsz 加一些参数来安装。例如:
trzsz --completion help
trzsz --completion install
trzsz --completion uninstall
可以自动识别出当前是什么 shell ,哪里有源代码可以参考?
如果你有空的话,欢迎你来一起搞,提个 PR 过来。到时一起讨论,可能做一点小调整,然后我就会合入。注意用你 github 的邮箱来提交代码,会把你列在贡献者列表中。

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

另外,我也在考虑用并行提高传输速度:现在是读文件和压缩,然后发送到远程(接收端反过来),这是串行的。可以做成并行的,在发送到远程的同时,可以做下一轮的读文件和压缩。因为实现比较复杂,并且如果网络很慢,读文件和压缩很快,这样的效果不会有多好的,所以一开始没有这样写。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/863602

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX