V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ob

rzsz: Rust 重写的 lrzsz

  •  
  •   ob · 5 天前 · 666 次点击

    rzsz:Rust 重写的 lrzsz

    起因是,在使用 rz 传文件的过程中,时不时会遇到控制台满屏乱码的情况,有时候传的日志文件比较大,直接就刷个不停,按 Ctrl+C 都结束不了。 然后就想着基于自己的使用习惯,给自己搞个简单好用的(主要是有 AI 帮忙),主要解决三个问题:

    • 难以接受的乱码问题
    • 每次用命令的时候,老得停顿思考一下是用 rz 还是 sz ,而且这俩组合按键按的有点别扭
    • 统一改用 zz ,自动判断是发送还是接收文件,旧的 rz 和 sz 依然可用

    安装

    一键脚本(自动检测架构、装到 /usr/local/bin、建好所有符号链接):

    curl -fsSL https://raw.githubusercontent.com/kookob/rzsz/main/install.sh | bash
    

    cargo

    cargo install rzsz
    

    旧的 lrzsz 怎么办?

    一键脚本会检测到系统已有的 lrzsz 可选择替换或保留。想自己手动清理直接:

    sudo apt purge -y lrzsz       # Debian/Ubuntu
    sudo yum remove -y lrzsz      # CentOS/RHEL
    hash -r                       # 清 shell 命令缓存,否则 rz 可能还指向旧路径
    

    不想完全替代也行,装完后老的 rz sz 保留,日常用新的 zz 即可。回滚用 bash install.sh --uninstall

    用法

    和 lrzsz 完全一样,直接替代。最常用的两条:

    # 接收文件(在服务器执行,终端弹选择框让你选本地文件)
    zz
    
    # 发送文件(把服务器上的文件下载到本地)
    zz file.tar.gz
    zz *.log                # 多文件
    

    重名文件处理

    默认直接覆盖。也可以改行为:

    zz -y                   # 显式指定覆盖(默认行为)
    zz -p                   # 保护模式:已存在则跳过
    zz -E                   # 重命名:加 .1 .2 .3 后缀,原文件保留
    

    提速 / 大文件

    zz -k big.bin           # 1024 字节块(默认)
    zz -8 big.bin           # 8K 字节块,大文件更快
    zz -T file              # turbo 模式,减少字节转义开销
    

    路径控制(发送时)

    zz -f dir/file.log      # 发送时带完整路径
    zz -j file              # 接收时剥掉路径,只存到当前目录
    

    断点续传

    zz -r big.iso           # 上次没传完,从中断处继续
    

    其他常用

    zz -v                   # 详细输出(可叠加 -vv -vvv )
    zz -q                   # 安静模式,不打进度
    zz -e file              # 转义所有控制字符(某些透明代理需要)
    zz -R                   # 限制路径,禁止 .. (默认开启)
    zz -U                   # 关闭限制模式
    
    zz --version
    zz --help               # 所有选项
    

    XModem / YModem (串口刷固件场景)

    rx file.bin             # XModem 接收
    sx firmware.hex         # XModem 发送
    rb                      # YModem 批量接收
    sb file1 file2          # YModem 批量发送
    

    其他

    • 单二进制,~375KB ( musl 静态 < 500KB )
    • 协议完整:ZModem + YModem + XModem
    • 和 C lrzsz 双向兼容

    项目地址: https://github.com/kookob/rzsz

    觉得有用请点个 Star ⭐️,有问题欢迎提 Issue 。

    3 条回复    2026-04-18 02:17:01 +08:00
    keepfun
        1
    keepfun  
       5 天前 via Android
    之前也有这个痛点。回头试试。
    zsh2517
        2
    zsh2517  
       5 天前
    已 star ,后面试试,虽然我能分清 lrzsz ( rz: Receive, sz: Send ),但是每次也是得先想一下。

    可惜出来的有些晚了,其他很多痛点已经被 trzsz 解决了( trzsz 是通过重写一套使用方式类似、不兼容 lrzsz 的方案实现的,所以不用受到 lrzsz 的各种限制,用起来比原生 lrzsz 更好用,比如跨 tmux 、文件夹传输等)
    zsh2517
        3
    zsh2517  
       5 天前
    我没玩过单片机/开发板之类的东西,但是在我的印象里,硬件开发资源好像挺受限的,双向兼容 C lrzsz 并且文件比较小确实是个优势。 @zsh2517 #2
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   956 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 20:34 · PVG 04:34 · LAX 13:34 · JFK 16:34
    ♥ Do have faith in what you're doing.