V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
LonnyWong
V2EX  ›  程序员

trzsz 已实现 “拖文件自动上传到远程服务器”,支持多种平台的原生终端。

  •  
  •   LonnyWong · 2022-06-11 12:41:52 +08:00 · 4786 次点击
    这是一个创建于 929 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1 、在本地使用 trzsz -d ssh x.x.x.x 登录服务器。加 -d 是开启拖文件上传功能,默认是不开启的。

    2 、将 trztsz 放到服务器某个 PATH 目录下,要有可执行权限。执行命令 trz -v 不会报错即可。

    项目地址:https://github.com/trzsz/trzsz-go ,给个 Star 支持下?

    Release 中下载的 zip 里就是三个 trzsztrztsz 可执行程序,也可以自己 clone 下来 make 编译。

    在 Mac 上的效果如图(也支持 Windows 和 Linux 的):

    踩坑指南(特别是 Windows ):

    1 、trzsz ssh 时记得加上 -d--dragfile,如 trzsz -d ssh x.x.x.x

    2 、记得将 trz 放到远程服务器某个 PATH 目录下,要有可执行权限。

    3 、在 Windows 的 cmd 、PowerShell 、Terminal 上,标题不要有“管理员”,即不要“以管理员身份运行”它们,要不然可能拖不了文件。在我的电脑上 Terminal 总是以管理员运行,后来设置一下 UAC 重启电脑就好了。

    4 、在 Windows 的 cmd 、PowerShell 中,拖多个文件进去,也只有一个文件生效的( 鼠标指向那个 )。

    5 、在 Windows 的 Terminal 中,要拖文件到左上角,出现“粘贴文件路径”时再放开鼠标,要不然没用。

    41 条回复    2022-06-26 11:05:24 +08:00
    May725
        1
    May725  
       2022-06-11 12:46:38 +08:00
    支持,已 star
    ByteCat
        2
    ByteCat  
       2022-06-11 12:54:41 +08:00
    挺酷的,支持一下,已 star
    guoqiao
        3
    guoqiao  
       2022-06-11 14:36:51 +08:00
    赞,我经常需要电脑上下载了视频拖到 NAS 上,有了这个要方便很多.
    2NUT
        4
    2NUT  
       2022-06-11 14:44:43 +08:00
    楼主想法是挺好的

    之前 zmodem 协议不知道为啥 用户侧客户端非要绑在终端软件上,独立出来很香

    其他发行版,包管理仓库赶紧上呀
    zoharSoul
        5
    zoharSoul  
       2022-06-11 15:37:36 +08:00
    @2NUT #4 但是 zmodern 不用改 ssh 登录命令就舒服, 要是两种结合一下就完美了
    ysc3839
        6
    ysc3839  
       2022-06-11 17:31:28 +08:00 via Android
    请问这功能是如何实现的呢?似乎各类终端拖文件进去是自动粘贴文件路径?
    LonnyWong
        7
    LonnyWong  
    OP
       2022-06-11 17:50:43 +08:00 via iPhone   ❤️ 1
    @ysc3839 对的,拖文件进去就是粘贴绝对路径。
    trzsz 是接管了 ssh 的输入和输出的,一般情况下只是转发。当检测到文件绝对路径时就走上传逻辑就可以了。
    为了避免手工粘贴时误伤,分析了各大平台终端拖文件进去的规律,例如 mac 和 linux 都有一个空格结尾的,必须 100%满足这些规律我才会上传。
    documentzhangx66
        8
    documentzhangx66  
       2022-06-11 17:59:02 +08:00
    扫个盲:

    xshell 目前是地球上,windows 连接 linux 最好的工具,没有之一。而且这拖动上传功能,也是 xshell 原生功能之一。

    xshell 属于 xManager ,目前最稳的是 5.x 版本,百度搜这软件请搜 xManager 5
    singerll
        9
    singerll  
       2022-06-11 18:07:28 +08:00 via Android
    牛逼
    Love4Taylor
        10
    Love4Taylor  
       2022-06-11 18:09:00 +08:00
    @documentzhangx66 XshellGhost 才几年啊忘得一干二净了?
    Love4Taylor
        11
    Love4Taylor  
       2022-06-11 18:11:13 +08:00
    homebrew 赶紧的啊
    LonnyWong
        12
    LonnyWong  
    OP
       2022-06-11 18:23:06 +08:00 via iPhone
    @Love4Taylor 在忙着支持文件夹传输呢。先直接下载,或者用 go 直接编译?

    homebrew 现在可以安装 Python 版的,不过只支持 iTerm2 。
    brader
        13
    brader  
       2022-06-11 18:28:51 +08:00
    在 win 下,这个软件的优势和亮点在哪,比之 xshell 和 mobaxterm 如何
    LonnyWong
        14
    LonnyWong  
    OP
       2022-06-11 18:39:44 +08:00 via iPhone
    @brader 优点是免费、开源、不依赖终端,cmd 、PowerShell 和 Windows Terminal 等都能用。我没怎么用过 xshell ,你也可以对比一下进度条。

    缺点是 Windows 的 ssh 上传有点慢,下载速度是正常的。而 MSYS2 的 ssh 又有问题,输入 AAAABBBBCCCC ,远程可能收到 AAAACCCC ,或者 BBBBCCCCAAAA ,无语了。

    在 Windows 关注上传速度的,建议使用 electrem 或者 tabby ,这两个终端都已支持 trzsz ,暂时未支持拖文件上传。
    beordle
        15
    beordle  
       2022-06-11 20:25:14 +08:00 via iPhone
    支持~看起来很好用
    mkmoon
        16
    mkmoon  
       2022-06-11 22:17:25 +08:00 via iPhone
    支持 tmux 吗
    AngryBigCat
        17
    AngryBigCat  
       2022-06-11 23:55:58 +08:00
    @documentzhangx66 用过 Termius 的人表示不服
    documentzhangx66
        18
    documentzhangx66  
       2022-06-12 01:22:47 +08:00
    @Love4Taylor 这可是好事,想不通吗?

    你看其他工具,就算有后门,会被关注到嘛?
    documentzhangx66
        19
    documentzhangx66  
       2022-06-12 01:23:29 +08:00
    @AngryBigCat

    能说说 Termius 比 xshell 好在哪里嘛?
    LonnyWong
        20
    LonnyWong  
    OP
       2022-06-12 01:26:25 +08:00 via iPhone
    @mkmoon 必须支持 tmux 呀
    LonnyWong
        21
    LonnyWong  
    OP
       2022-06-12 01:33:10 +08:00 via iPhone
    @documentzhangx66 开源的代码,并且代码量不多,更容易看出有没有后门吧?
    不是说开源的就没有安全问题,但至少不会像闭源那些,植入了也不易被发现。
    documentzhangx66
        22
    documentzhangx66  
       2022-06-12 04:48:34 +08:00
    @LonnyWong 这事与开源闭源没关系,主要看知名度。名气大的就算用虚拟化重构语言,都会被破解。
    guoqiao
        23
    guoqiao  
       2022-06-12 05:57:42 +08:00
    好像在我的群晖 NAS 上不工作, 提了一个 issue: https://github.com/trzsz/trzsz-go/issues/5
    有人遇到同样的问题吗?
    shuxhan
        24
    shuxhan  
       2022-06-12 06:02:59 +08:00 via Android
    真不错,star 了
    LonnyWong
        25
    LonnyWong  
    OP
       2022-06-12 09:29:31 +08:00 via iPhone
    @guoqiao 不使用 trzsz ,直接 ssh 上去,然后拖文件进去,会显示文件的绝对路径吗?
    ferock
        26
    ferock  
       2022-06-12 10:18:20 +08:00
    已 start
    ferock
        27
    ferock  
       2022-06-12 10:29:31 +08:00
    @LonnyWong

    ```bash

    $
    bracketed-paste-magic:zle:47: not enough arguments for -U
    ```
    LonnyWong
        28
    LonnyWong  
    OP
       2022-06-12 11:31:11 +08:00 via iPhone
    @ferock 我看到你提 issue 了,已回复。因为我没有 NAS 环境,只在 windows 、mac 和 ubuntu 虚拟机里测试了。在 issue 里多提供一些信息吧,按理说只是环境问题,应该是很容易就能支持的。
    fenglangjuxu
        29
    fenglangjuxu  
       2022-06-12 12:59:20 +08:00
    支持跳板机登陆的那种 服务器么?
    LonnyWong
        30
    LonnyWong  
    OP
       2022-06-12 13:09:58 +08:00 via iPhone
    @fenglangjuxu 支持的,无论多少跳都可以。

    在最终那个服务器运行 tmux 也支持。

    在本地先运行 tmux ,然后 trzsz ssh 登录,也支持。

    如果是在中间运行 tmux ,那就只支持 iTerm2 + tmux -CC 那种。详见 Python 版: https://github.com/trzsz/trzsz
    WalkingEraser
        31
    WalkingEraser  
       2022-06-13 11:31:48 +08:00 via Android
    跟 scp 比有什么优势嘛
    LonnyWong
        32
    LonnyWong  
    OP
       2022-06-13 11:42:57 +08:00 via iPhone
    @WalkingEraser
    1. 多次跳转时,scp 不一定能用。或者 docker exec 进入到 docker 内时,scp 也玩不转了。

    2. 当你已经登录到服务器上时,在服务器上输入 scp 是传不了文件的,非得要另外开一个窗口在本地执行 scp ,或者搞个反向的通道。就是 scp 操作步骤多,trzsz 的操作步骤少。
    frinstioAKL
        33
    frinstioAKL  
       2022-06-13 17:27:07 +08:00
    iterm2 + zsh 似乎不能用?
    frinstioAKL
        34
    frinstioAKL  
       2022-06-13 17:27:59 +08:00
    本地 iterm2 + zsh, server 用 bash 时拖拽上传可以执行, 用 zsh 只会粘贴路径, 无法上传
    LonnyWong
        35
    LonnyWong  
    OP
       2022-06-13 17:52:14 +08:00
    @frinstioAKL 估计是 https://github.com/trzsz/trzsz-go/issues/6 这个问题,可以从微云上 https://share.weiyun.com/peQKq3ZL 下载来试试。
    frinstioAKL
        36
    frinstioAKL  
       2022-06-13 19:10:59 +08:00
    @LonnyWong #35 微云这个版本没问题了, 赞
    LonnyWong
        37
    LonnyWong  
    OP
       2022-06-13 19:19:40 +08:00 via iPhone
    @frinstioAKL #36 那就好,代码是提交到 github 上的了,也可以自己编译。

    下一个版本会带上这个修改,等文件夹功能搞完就会发布。
    GoRoad
        38
    GoRoad  
       2022-06-14 15:29:36 +08:00
    这个支持 iterm2 profile 的 expect 脚本方式登录吗
    LonnyWong
        39
    LonnyWong  
    OP
       2022-06-14 15:57:11 +08:00 via iPhone
    @GoRoad 按理说支持的,你可以试一下,如果有问题可以提 issue 。
    WalkingEraser
        40
    WalkingEraser  
       2022-06-14 17:13:19 +08:00 via Android
    @LonnyWong Nice
    LonnyWong
        41
    LonnyWong  
    OP
       2022-06-26 11:05:24 +08:00
    @Love4Taylor homebrew 已收录,可以如下这样安装:

    ```
    brew update
    brew install trzsz-go
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   999 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:15 · PVG 05:15 · LAX 13:15 · JFK 16:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.