Skip to main content

trzsz is a simple file transfer tools, similar to lrzsz ( rz / sz ) but compatible with tmux, which works with iTerm2 and has a nice progress bar.

Project description

trzsz

trzsz is a simple file transfer tools, similar to lrzsz ( rz / sz ) but compatible with tmux.

which works with iTerm2 and has a nice progress bar.

Website: https://trzsz.github.io

MIT License PyPI trzsz 中文网站

Why?

I love to use iTerm2 integrating with tmux to manage terminal sessions.

Sometimes, I need to transfer some files between my laptop and the remote server.

Considering laptop -> hostA -> hostB -> docker -> tmux , using scp to transfer files is inconvenience.

Tmux is not going to support lrzsz ( rz / sz ) ( 906, 1439 ), and I found out that creating a new file transfer tools is much easier than patching tmux.

Additionally, iTerm2-zmodem is not supporting a progress bar. Is there something wrong happened or just need more time?

Requirements

Installation

Server side

Install trzsz-svr

sudo python3 -m pip install --upgrade trzsz-libs trzsz-svr
  • Also supports Python2:
    sudo pip install --upgrade trzsz-libs trzsz-svr
    
  • Can be installed without sudo, but need to add the installation path ( may be ~/.local/bin ) to the PATH environment.
  • trz -v or tsz -v output the version of trzsz means successfully installed. Otherwise, check the output of the previous installation.

Client side

Install trzsz-iterm2

sudo python3 -m pip install --upgrade trzsz-libs trzsz-iterm2
  • Also supports Python2:
    sudo pip install --upgrade trzsz-libs trzsz-iterm2
    
  • which trzsz-iterm2 output /usr/local/bin/trzsz-iterm2 means successfully installed. if not:
    • which trzsz-iterm2 shows nothing, check the output of the previous installation.
    • which trzsz-iterm2 shows another path, create a soft link:
      sudo ln -sv $(which trzsz-iterm2) /usr/local/bin/trzsz-iterm2

Install iTerm2 and create a Trigger as follows.

Name Value Note
Regular Expression :(:TRZSZ:TRANSFER:[SR]:\d+\.\d+\.\d+:\d+) One line and no space at the end
Action Run Silent Coprocess
Parameters /usr/local/bin/trzsz-iterm2 \1 One line and no space at the end
Enabled Checked
Use interpolated strings for parameters Unchecked
  • iTerm2 Trigger configuration allows input multiple lines, but only shows one line. Make sure don't copy a newline into it.

iTerm2 Trigger configuration

Optional install zenity for a nice progress bar.

brew install ncruces/tap/zenity
  • If Mac M1 install fails, try to install with go:
    brew install go
    go install 'github.com/ncruces/zenity/cmd/zenity@latest'
    sudo cp ~/go/bin/zenity /usr/local/bin/zenity
    
  • which zenity output /usr/local/bin/zenity means successfully installed. if not:
    • which zenity shows nothing, check the output of the previous installation.
    • which zenity shows another path, create a soft link:
      sudo ln -sv $(which zenity) /usr/local/bin/zenity

Manual

trz upload files to remote server

usage: trz [-h] [-v] [-q] [-y] [-b] [-e] [-B N] [-t N] [path]

Receive file(s), similar to rz but compatible with tmux.

positional arguments:
  path               path to save file(s). (default: current directory)

optional arguments:
  -h, --help         show this help message and exit
  -v, --version      show program's version number and exit
  -q, --quiet        quiet (hide progress bar)
  -y, --overwrite    yes, overwrite existing file(s)
  -b, --binary       binary transfer mode, faster for binary files
  -e, --escape       escape all known control characters
  -B N, --bufsize N  buffer chunk size ( 1K <= N <= 100M ). (default: 1M)
  -t N, --timeout N  timeout ( N seconds ) for each buffer chunk.
                     N <= 0 means never timeout. (default: 100)

tsz download files from remote server

usage: tsz [-h] [-v] [-q] [-y] [-b] [-e] [-B N] [-t N] file [file ...]

Send file(s), similar to sz but compatible with tmux.

positional arguments:
  file               file(s) to be sent

optional arguments:
  -h, --help         show this help message and exit
  -v, --version      show program's version number and exit
  -q, --quiet        quiet (hide progress bar)
  -y, --overwrite    yes, overwrite existing file(s)
  -b, --binary       binary transfer mode, faster for binary files
  -e, --escape       escape all known control characters
  -B N, --bufsize N  buffer chunk size ( 1K <= N <= 100M ). (default: 1M)
  -t N, --timeout N  timeout ( N seconds ) for each buffer chunk.
                     N <= 0 means never timeout. (default: 100)

Trouble shooting

  • If an error occurs, and trzsz is hanging up.

    1. Press Command + Option + Shift + R to stop iTerm2 Coprocesses.
    2. Press Control + j to stop trz or tsz process on the server.
  • If trz -b binary upload fails, and login to server using telnet or docker exec.

    1. Try to escape all known control characters, e.g., trz -eb.
  • If trz -b binary upload fails, and the server is using Python3 < 3.7.

    1. Python3 < 3.7 supports base64 mode, just don't use trz -b, use trz instead.
    2. If you want to use trz -b binary upload, upgrade Python3 to above 3.7, or use Python2.
  • If trz -b or tsz -b binary transfer fails, and login to server using expect.

    1. Try to export LC_CTYPE=C before the expect script. e.g.:
    #!/bin/sh
    export LC_CTYPE=C
    expect -c '
      spawn ssh xxx
      expect "xxx: "
      send "xxx\n"
      interact
    '
    

Screenshot

Upload files to remote server

Upload files looks good

Download files from remote server

Download files looks good

Contact

Feel free to email me lonnywong@qq.com (same as my PayPal account, just in case you want to deduct🤑).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trzsz-libs-0.3.0.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

trzsz_libs-0.3.0-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file trzsz-libs-0.3.0.tar.gz.

File metadata

  • Download URL: trzsz-libs-0.3.0.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for trzsz-libs-0.3.0.tar.gz
Algorithm Hash digest
SHA256 9feb078cb2b852e8ae09b8575da58d0bd15610d43eac92821b84ec6762660165
MD5 35458fedd8b760ac3fede00c4177bd90
BLAKE2b-256 2c7bbda4944ea88e8b0387e318026c4875227676a42101b48c108190ab910189

See more details on using hashes here.

File details

Details for the file trzsz_libs-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: trzsz_libs-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 11.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for trzsz_libs-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ccb6d0cad265b5e08d73d58784f63cfbcdde41c75bf745f9f39fa5f1f65465cb
MD5 69e88d6d54723707033c45c6c3787f44
BLAKE2b-256 ce0e3e9959a2652a1ff1b3bd73a039fe8072172a9c18114e8ae6a6f3d3e32e16

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page