前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【工具推荐】比 rz / sz 还好用的 trzsz ( trz / tsz )

【工具推荐】比 rz / sz 还好用的 trzsz ( trz / tsz )

原创
作者头像
lonny
发布2023-04-01 15:04:07
4.2K1
发布2023-04-01 15:04:07
举报
文章被收录于专栏:OpenSourceOpenSource

前言

lrzsz ( rz / sz ) 是非常方便好用的 Linux 文件传输工具,但是几十年没更新了。

trzsz 简介

  • trzsz ( trz / tsz ) 始于 iTerm2 + tmux 用不了 rz / sz ,使用 Python 开发,兼容 tmux ,有进度条,支持目录传输,支持拖动上传。github: https://github.com/trzsz/trzsz
  • 为了支持 web 页面使用 trzsz ( trz / tsz ) 上传和下载,以及支持 electron 开发的一系列终端( 如 tabby 、electerm 等 ),开发了 js 版本 https://github.com/trzsz/trzsz.js
  • 为了支持更多的原生终端使用 trzsz ( trz / tsz ),开发了 go 版本 https://github.com/trzsz/trzsz-go

trzsz ( trz / tsz ) 相比 lrzsz ( rz / sz ) 的优点

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

trzsz 录屏演示

iTerm2 文本进度条
iTerm2 文本进度条
浏览器上传和下载文件
浏览器上传和下载文件
原生终端拖文件上传
原生终端拖文件上传

安装指南

在远程服务器上安装

  • 用 Python3 安装
代码语言:txt
复制
sudo python3 -m pip install --upgrade trzsz
  • 用 Python2 安装
代码语言:txt
复制
sudo python2 -m pip install --upgrade trzsz
  • 用 Homebrew 安装
代码语言:txt
复制
brew update
brew install trzsz
  • 用 Node.js 安装
代码语言:txt
复制
sudo npm install -g 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

使用指南

trz 上传文件

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

代码语言:txt
复制
trz /tmp/

下载文件

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

代码语言:txt
复制
tsz file1 file2 file3

静默模式

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

覆盖模式

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

二进制模式

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

转义控制字符

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

传输文件夹

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

缓冲区上限

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

超时时间

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

异常处理方法

  • 如果 tmux 不是运行在远程服务器上,而是运行在本地电脑上,或者运行在中间的跳板机上。
    • 方案1:使用 tmux -CC 与 iTerm2 集成,请参考 iTerm2 与 tmux -CC 集成
    • 方案2:在本地电脑上安装 trzsz-go,设置 alias ssh="trzsz ssh" 可以方便使用。
  • 如果出现了错误,且 trzsz 挂住不能动了:
    • 按组合键 control + c 可以停止服务器上的 trztsz 进程。
    • 对于 iTerm2 用户,按组合键 command + option + shift + r 可以停止 iTerm2 Coprocesses
  • 如果 trz -b 二进制上传失败,并且登录远程服务器时使用了 telnetdocker exec
    • 可以试试转义所有控制字符,例如 trz -eb
  • 如果 trz -btsz -b 二进制传输失败,并且登录远程服务器时使用了 expect
    • 可以试试在 expect 脚本前设置环境变量 export LC_CTYPE=C,例如:
代码语言:txt
复制
#!/bin/sh
export LC_CTYPE=C
expect -c '
  spawn ssh xxx
  expect "xxx: "
  send "xxx\n"
  interact
'

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • trzsz 简介
  • trzsz ( trz / tsz ) 相比 lrzsz ( rz / sz ) 的优点
  • trzsz 录屏演示
  • 安装指南
    • 在远程服务器上安装
      • 支持的终端
      • 使用指南
        • trz 上传文件
          • 下载文件
            • 静默模式
              • 覆盖模式
                • 二进制模式
                  • 转义控制字符
                    • 传输文件夹
                      • 缓冲区上限
                        • 超时时间
                        • 异常处理方法
                        相关产品与服务
                        容器服务
                        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档