V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LonnyWong
V2EX  ›  程序员

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

  •  
  •   LonnyWong · 2022-07-02 13:42:30 +08:00 · 2529 次点击
    这是一个创建于 879 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目地址: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-07-02 23:32:47 +08:00

    增加了几种安装方式:

    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-07-02 14:05:39 +08:00   ❤️ 1
    Windows scoop 没搜到,加一下吧
    LonnyWong
        2
    LonnyWong  
    OP
       2022-07-02 14:19:34 +08:00
    @ByteCat 我去提个 PR ,稍等。
    Trim21
        3
    Trim21  
       2022-07-02 14:33:26 +08:00 via Android   ❤️ 1
    已经在用 goreleaser 的话可以直接设置一下 goreleaser ,支持创建 scoop 仓库并且自动更新…
    icepie
        4
    icepie  
       2022-07-02 14:34:11 +08:00
    给 archlinux 也打包一下吧
    LonnyWong
        5
    LonnyWong  
    OP
       2022-07-02 14:41:18 +08:00
    @Trim21 太感谢了,差点就手写了。
    ByteCat
        6
    ByteCat  
       2022-07-02 14:55:30 +08:00
    另外希望有一个 apt 仓库~ 我基本都是用 Debian ,现在手动下载添加 path 的 😂
    用还是挺好用的,支持
    LonnyWong
        7
    LonnyWong  
    OP
       2022-07-02 15:33:30 +08:00
    @ByteCat 我也想找这样的仓库。
    LonnyWong
        8
    LonnyWong  
    OP
       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
        9
    LonnyWong  
    OP
       2022-07-02 16:04:10 +08:00
    @icepie 是指用 pacman 来安装那个?我研究下怎么搞。
    LonnyWong
        10
    LonnyWong  
    OP
       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
        11
    LonnyWong  
    OP
       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
        12
    LonnyWong  
    OP
       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
        13
    ByteCat  
       2022-07-03 00:10:39 +08:00
    @LonnyWong Good! Windows with scoop && Debian with apt 测试可用,Windows Terminal 也完全没有问题,很棒的项目,已 Star !
    icepie
        14
    icepie  
       2022-07-03 02:04:14 +08:00
    建议实现一下 bash zsh fish 等 shell 的补全
    LonnyWong
        15
    LonnyWong  
    OP
       2022-07-03 09:18:06 +08:00 via iPhone
    @icepie 经过 trzsz 登录后,shell 的补全能力没有丢失吧?你是指在哪里,怎么样使用时,没有补全?
    icepie
        16
    icepie  
       2022-07-03 15:16:04 +08:00   ❤️ 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-07-03 17:06:06 +08:00 via iPhone
    @icepie 感谢分享,我明白你的意思了。

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

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

    另外,我也在考虑用并行提高传输速度:现在是读文件和压缩,然后发送到远程(接收端反过来),这是串行的。可以做成并行的,在发送到远程的同时,可以做下一轮的读文件和压缩。因为实现比较复杂,并且如果网络很慢,读文件和压缩很快,这样的效果不会有多好的,所以一开始没有这样写。
    everyx
        21
    everyx  
       2022-07-04 09:36:24 +08:00   ❤️ 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-07-04 13:55:26 +08:00   ❤️ 1
    @LonnyWong ok, 我这几天有空帮您看看

    @everyx 学到了 感谢
    lslhz
        23
    lslhz  
       2022-07-07 15:25:25 +08:00
    @LonnyWong 很实用的项目啊, 已 star, 我用的 js 版, 没看明白 examples/browser examples/addon 这 2 个有啥区别?跑起来一模一样啊
    LonnyWong
        24
    LonnyWong  
    OP
       2022-07-07 15:32:35 +08:00 via iPhone
    @lslhz 确实没有太大区别,只是实现方式有一点点不同。addon 是用 TrzszAddon 这个自动封装 websocket (接入简单一点),另一个是用更底层一点的 TrzszFilter (可定制能力稍微多一点)。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1074 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:24 · PVG 03:24 · LAX 11:24 · JFK 14:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.