trzsz

文件传输工具
授权协议 MIT
开发语言 Python
所属分类 应用工具、 文件传输工具
软件类型 开源软件
地区 国产
投 递 者 陆建木
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

trzsz 是一个兼容 tmux 的文件传输工具,和 lrzsz ( rz / sz ) 类似,并且有进度条和支持目录传输。

GitHub: https://github.com/trzsz/trzsz

Gitee: https://gitee.com/trzsz/trzsz

为什么?

考虑 laptop -> hostA -> hostB -> docker -> tmux 这种场景,使用 scp  sftp 是不方便的。

在这种场景下,使用 lrzsz ( rz / sz ) 是很方便的,但是很可惜它与 tmux 不兼容。

tmux 不愿意支持 rz / sz ( 906, 1439 ),而重新造一个工具比修改 tmux 简单很多。

优点介绍

  • 支持 tmux,包括 tmux 普通模式,以及与 iTerm2 集成的 tmux 命令模式。
  • 支持 传输目录trz -d 命令上传目录,tsz -d xxx 命令下载 xxx 目录。
  • 支持 Windows,不仅可在 Windows 客户端使用,也可在 Windows ssh 服务器使用。
  • 支持 原生终端,不需要原生终端做支持,只要使用 trzsz ssh x.x.x.x 登录即可。
  • 支持 web 终端,通过 web 浏览器在本地与服务器之间传输目录和文件。
  • 支持 拖动上传,将文件和目录拖到终端窗口即可上传到远程服务器。
  • 支持 进度条,显示当前正在传输的文件名、进度、大小、速度和剩余时间等。
  • 更好的 交互体验,传输成功或出错时显示友好的结果,ctrl + c 优雅中止。

安装指南

在远程服务器上安装

  • 用 Python3 安装

    sudo python3 -m pip install --upgrade trzsz
     
  • 用 Python2 安装

    sudo python2 -m pip install --upgrade trzsz
     
  • 用 Homebrew 安装

    brew update
    brew install trzsz

没有 sudo 权限也可以安装,只要将安装路径 ( 可能是 ~/.local/bin ) 添加到 PATH 环境变量中即可。

支持的终端

  • iTerm2 -- 参考 Trzsz-iTerm2 安装文档

  • tabby -- 安装 tabby-trzsz 插件即可。

  • electerm -- 升级到 1.19.0 以上的版本即可。

  • ttyd – 升级到 1.7.3 以上的版本,并且启动时加上 -t enableTrzsz=true,非 localhost 要用 https

  • trzsz-go – 只要是支持本地 shell 的终端就可以用。

  • trzsz.js -- 让运行在浏览器中的 webshell 和用 electron 开发的终端支持 trzsz

  如果你的终端也支持 trzsz,请告诉我,我很乐意将它加到此列表中。

使用指南

trz 上传文件

trz 命令可以不带任何参数,将上传文件到当前目录。也可以带一个目录参数,指定上传到哪个目录。

trz /tmp/

tsz 下载文件

tsz 可以带一个或多个文件名(可使用相对路径或绝对路径,也可使用通配符),将下载指定的文件。

tsz file1 file2 file3

-q 静默模式

trz -q  tsz -q xxx ( 加上 -q 选项 ),则在传输文件时不显示进度条。

-y 覆盖模式

trz -y  tsz -y xxx ( 加上 -y 选项 ),如果存在相同文件名的文件就直接覆盖。

-b 二进制模式

trz -b  tsz -b xxx ( 加上 -b 选项 ),二进制传输模式,对于压缩包、图片、影音等较快。

-e 转义控制字符

二进制模式时,控制字符可能会导致失败,trz -eb  tsz -eb xxx ( 加上 -e 选项 ) 转义所有已知的控制字符。

-d 传输文件夹

trz -d  tsz -d xxx ( 加上 -d 选项 ),则可以上传或下载指定文件夹和文件。

-B 缓冲区上限

trz -B 20m  tsz -B 2M xxx 等,设置最大缓冲区上限 ( 默认 10M )。会自动根据网速选择合适的缓冲区大小,但不会超过此上限。

-t 超时时间

trz -t 10  tsz -t 30 xxx 等,设置超时秒数 ( 默认 20 秒 )。在超时时间内,如果无法传完一个缓冲区大小的数据则会报错并退出。设置为 0 或负数,则永不超时。

异常处理方法

  • 如果 tmux 是运行在本地电脑上。

    • 方案1:使用 tmux -CC 与 iTerm2 集成,请参考 iTerm2 与 tmux -CC 集成

    • 方案2:在本地电脑上安装 trzsz-go tmux 之后用 trzsz ssh 登录

  • 如果 tmux 是运行在跳板机上。

    • 方案1:使用 tmux -CC 与 iTerm2 集成,请参考 iTerm2 与 tmux -CC 集成

    • 方案2:在跳板机上安装 trzsz-go tmux 之后用 trzsz -r ssh 登录

  • 如果出现了错误,且 trzsz 挂住不能动了:

    • 按组合键 control + c 可以停止服务器上的 trz  tsz 进程。
    • 对于 iTerm2 用户,按组合键 command + option + shift + r 可以停止 iTerm2 Coprocesses
  • 如果 trz -b 二进制上传失败,并且登录远程服务器时使用了 telnet  docker exec

    • 可以试试转义所有控制字符,例如 trz -eb
  • 如果 trz -b  tsz -b 二进制传输失败,并且登录远程服务器时使用了 expect

    • 可以试试在 expect 脚本前设置环境变量 export LC_CTYPE=C,例如:
      #!/bin/sh
      export LC_CTYPE=C
      expect -c '
        spawn ssh xxx
        expect "xxx: "
        send "xxx\n"
        interact
      '
       

屏幕截图

trzsz 在 iTerm2 中 text 进度条示例

using trzsz in iTerm2 with text progress bar

trzsz 在 iTerm2 中 zenity 进度条示例

using trzsz in iTerm2 with zenity progress bar

trzsz 在 tabby 中 tabby-trzsz 插件示例

using trzsz in tabby with tabby-trzsz plugin

 相关资料
  • trzsz (trz /tsz) 是一个兼容 tmux 的文件传输工具,和 lrzsz ( rz / sz ) 类似,并且有进度条,支持目录传输,支持拖动上传。。 trzsz-go 是用 go 实现的 trzsz ,不依赖终端的支持,就可以做到 trzsz (trz /tsz) 上传和下载文件。 trzsz-go 支持拖文件自动上传到远程服务器,用法: 1 、在本地使用 trzsz -d ssh

  • 在IntelliJ中启动新项目时,我遇到了一个问题: < li>Maven构建总是成功终止 < li >“重新加载所有Maven项目”导致错误 < li >无法将org . spring framework . boot . spring application导入主类 这是我的pom.xml: 注意:我尝试添加

  • 提示 视频 PPT 下载 背景介绍 TFTP (Trivial File Transfer Protocol, 简单文件传输协议)是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号为 69 ,比传统的 FTP 协议要轻量级很多,适用于小型的嵌入式产品上。 RT-Thread 目前支持的是 TFTP 服务器。 准备工作 安装 T

  • 如何通过MAP-Reduce实现文件传输?为了实现这一点,我需要在映射器、还原器和作业的输入-输出中设置哪些参数?

  • 但是,当我第一次调用此路由时,即使指定了fileName参数,文件input1.txt也会被传输。请帮忙。

  • 问题内容: 客户端向从服务器发送文件的大小可能大于5G,而不是从服务器发送到主服务器的大小。 从站将临时文件保存到自己吗?我不希望发生这种情况,因为这会降低上载速度并浪费从站的内存。 有什么办法可以避免这种情况?在golang中传输大文件的最佳方法是什么? 问题答案: 是的,有以避免存储-转发方式的标准方式:只要客户端连接从服务器后应该打开到主服务器的连接,然后就 流 从客户那里的数据。通常,这是