go 版 trzsz ( 兼容 tmux 的 rz / sz ) 已发布到各大软件分发平台,可以通过 apt、yum 和 brew 等进行安装。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
LonnyWong
V2EX    程序员

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

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

    项目地址: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 --keyerver 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     Solana     1104 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 17:55 PVG 01:55 LAX 10:55 JFK 13:55
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86