beordle / termtunnel

Cross-platform terminal tunnel tool
MIT License
357 stars 36 forks source link

上传,下载文件后,不知道文件传哪去了? #15

Closed engcn closed 2 years ago

engcn commented 2 years ago

图片 版本termtunnel-1.4.3-linux-amd64; 客户端使用Ubuntu20.04.4默认终端; 服务端使用的CentOS Linux release 7.6.1810;

beordle commented 2 years ago

稍等,我 debug 一下

beordle commented 2 years ago

@engcn 确认是 linux pathjoin 逻辑和mac不一样,我 Linux 终端验证是可以了(目前文件传输是后台异步的,没有进度展示..计划改进中)

我下载一个桌面 Ubuntu 创个虚拟机试试。应该是解决了。

beordle commented 2 years ago

可以使用 1.5.1 这个 release 试一下

engcn commented 2 years ago

好像还是没有 图片 另外使用在termtunnel> exit之后,退出了远程主机连接。

下载文件客户端接收成功,但文件内容是空 termtunnel> sz log download log to /mnt termtunnel>

beordle commented 2 years ago

嗯,只能我重现一下相同环境试试了

beordle commented 2 years ago

@engcn

image image

最新版本的 binary 在Ubuntu 20.04 ARM 确认可以了,内容也正确。修改了 muslc 2处兼容性问题和 1 处溢出读(我只在mac下测试过客户端侧)。

engcn commented 2 years ago

谢谢,晚上回去我再Ubuntu上试试

engcn commented 2 years ago

在Ubuntu20.04.4上测试可以啦,谢谢, 反馈小问题,绿色的长条 图片

engcn commented 2 years ago

@beordle 建议: 输入termtunnel -a,rz传完文件后,再exit; 对于经常上传文件的操作,有点麻烦; 可以简化操作,比如: 输入termtunnel -a -rz,直接弹出选择文件框,传完文件就回到正常的bash终端;

beordle commented 2 years ago

@engcn 这里提及的两个改进我都会patch上的,能极大补齐体验缺失,增加使用场景。

但我也很好奇,为何您不使用自带支持上传下载的第三方跨平台终端?这样使用给我的感觉是 “还可以这样“。相当于给默认 Ubuntu 终端增加了文件上传下载能力,确实没想到会有人在评估默认终端。

另外,如果是经常上传下载的话,也有一种不错的办法,就是端口转发ssh,在本地sshfs mount。

engcn commented 2 years ago

因为linux自带的默认终端,是最简洁小巧的; 像tabby这种占用内存很大;默认终端已经能满足平时所有的命令和传输文件操作,所以像winScp,finalShell,MobaXterm这种根本用不到。 为了方便命令行传输文件,这个问题困扰了我很长时间; 一开始在win下用xshell,rz,sz,换到Ubuntu下没法用了; 后来在linux下找到了 zsh , rzsz,可惜很久没人维护,导致在Ubuntu上使用经常卡死,cpu100%; 再后来就用sftp,还是没有rz快;很郁闷,在各大群论坛寻寻觅觅,直到去年遇到了trzsz,但是需要端终端支持,感谢lonnywong写了tabby-trzsz 插件;我还没死心,一直关注怎么在Ubuntu默认终端下使用rz,直到昨天通过lonnywong看到你写的帖子,我兴奋了一下午....迫不及待

另外感觉termtunnel的操作跟zsh有点像

beordle commented 2 years ago

原来是这样,哈哈,我就按您说的改进吧。目前的交互终端实际上是 redis 作者开源的库,我用它来模仿一个shell。毕竟编码成本和使用心智最低的交互方法就是这个样子。经常用来上传下载文件的话,确实还是直接在标准shell中指定效率会高很多。

但这个应用和 lrzsz 以及 trzsz 相比,并非专职传输文件,边界 case 的处理还需要增加,比如目前的权限是不携带的,直接0600,也不会判断文件是否已经存在,可写等;这些都是可以简单短期内完善的。但是传输文件,可能速度最重要,目前的设计与实现对于带宽的利用率并不佳,尽量避免参数控制,搞了一个通用且保守的协议,毕竟目的是做到在任何时候都能通信成功。(初心是隧道软件)。也可以优化,但是可能会很慢了。

当然如果这边是小文件倒影响不大,望知悉。

engcn commented 2 years ago

为了上传下载不需要终端支持,里边用的实现思路是最重要的,其它存在的小问题(像速度慢,没进度条啦)都不要紧,感谢大神!

lonnywong打算按你的思路,用go再写个trzsz,不带隧道转发。

@beordle "目前的交互终端实际上是 redis 作者开源的库", 这个库的地址可以发下吗?

beordle commented 2 years ago

倒是很期待 Golang 的实现~ 隧道转发加上去求 inspired by一下 🤣

关于 redis 作者库,地址是: https://github.com/antirez/linenoise 。不过,只是一个迷你的readline(读行)实现。 不是特别的有意义,我用它只是出于mini的原因..

engcn commented 2 years ago

ok,谢谢