返回

运维实战指南:Linux lrzsz指令

一、lrzsz是什么?为什么运维需要它?

lrzsz(Long Receive/Send Zmodem)是Linux系统中开源的文件传输套件,核心功能通过两条命令实现:

  • rz(Receive Zmodem):从客户端接收文件到服务器;
  • sz(Send Zmodem):从服务器发送文件到客户端。

它支持XMODEM(128字节/包,低速)、YMODEM(1024字节/包,批量传输)、ZMODEM(连续流传输,支持断点续传+32位CRC校验,效率最高)三种协议,尤其适合无网络环境(如嵌入式串口调试、隔离机房服务器维护)或轻量文件传输(配置文件、日志、小固件包)场景。


二、客户端兼容性:哪些终端能用?

lrzsz的传输依赖终端软件对ZMODEM协议的支持,运维人员需根据常用工具选择适配方案:

终端类型兼容性推荐指数说明
Xshell原生支持★★★★★配置简单:会话属性→终端→Zmodem→设置上传/下载路径,自动触发文件选择窗口。
SecureCRT原生支持★★★★☆需在“Session Options→X/Y/Zmodem”中启用,支持批量传输。
PuTTY需额外配置★★☆☆☆需安装pscp插件或通过lrzsz+plink组合实现,操作复杂。
Windows Terminal不支持★☆☆☆☆微软官方终端暂未集成ZMODEM协议,需借助第三方工具(如WSL+Xshell转发)。

结论:优先选择Xshell或SecureCRT,避免在Windows Terminal中踩坑。


三、基础操作:从安装到文件传输

1. 安装lrzsz

大多数Linux发行版需手动安装,以Ubuntu/Arch/Fedora为例:

Bash
# Ubuntu/Debian  
sudo apt-get update && sudo apt-get install lrzsz -y  

# Arch Linux  
sudo pacman -S lrzsz  

# Fedora  
sudo dnf install lrzsz  

2. 终端配置(以SecureCRT为例)

连接目标Linux系统后,需启用ZMODEM支持:

  • 菜单路径:Options → Session Options → X/Y/Zmodem
  • 设置上传/下载路径(如/home/user/test);
  • 启用Auto-start Zmodem(自动触发传输)。

3. 核心命令实战

lrzsz的核心命令是rz(接收)和sz(发送),以下是运维高频场景示例:

示例1:上传文件到Linux(rz命令)

需求:将本地Windows文件C:\test3.txt上传至服务器当前目录。 操作: 在服务器终端执行rz,SecureCRT/Xshell会自动弹出文件选择窗口;选择本地文件后,文件将保存至服务器当前目录。

Bash
# 执行rz触发上传  
rz  

# 传输完成后验证  
ls /home/user/test  # 应显示test3.txt  
示例2:从Linux下载文件(sz命令)

需求:将服务器文件test1.txt下载至本地Windows。 操作: 在服务器终端执行sz test1.txt,终端软件弹出保存路径窗口;选择本地目录后,文件将保存至指定位置。

Bash
# 执行sz触发下载  
sz test1.txt  

# 传输完成后验证(本地)  
dir C:\Downloads  # 应显示test1.txt  
示例3:使用YMODEM协议批量传输

需求:发送多个文件(test1.txttest2.bin)并覆盖接收端同名文件。 操作: 使用sz -y指定YMODEM协议并强制覆盖,rb表示YMODEM接收。

Bash
# 服务器端发送(YMODEM)  
sz -y test1.txt test2.bin  

# 客户端接收(YMODEM)  
rb  
示例4:ASCII模式传输(避免换行符乱码)

需求:传输Windows文本文件(含CRLF换行符)至Linux,需转换为LF格式。 操作: 使用-a参数启用ASCII模式,自动转换换行符。

Bash
# 服务器端接收(ASCII模式)  
rz -a  

# 客户端发送(ASCII模式)  
sz -a test1.txt  
示例5:详细输出(查看传输进度)

需求:监控文件传输速率、字节数等细节。 操作: 使用-v参数显示详细日志。

Bash
# 服务器端接收(详细模式)  
rz -v  

# 客户端发送(详细模式)  
sz -v test2.bin  
示例6:强制覆盖文件(谨慎使用)

需求:覆盖接收端已存在的同名文件(默认启用限制模式,防止误覆盖)。 操作: 使用-y参数强制覆盖。

Bash
# 服务器端接收(强制覆盖)  
rz -y  

# 客户端发送(强制覆盖)  
sz -y test1.txt  

四、常用选项与功能:分类速查表

lrzsz支持丰富的选项,覆盖传输控制、协议选择、安全性等场景,以下是高频选项分类说明:

🔍 传输控制选项

选项描述示例
-aASCII模式,转换换行符(CR/LF → LF)rz -a
-b二进制模式(默认),不转换文件内容sz -b test2.bin
-y覆盖已有文件rz -y
-v详细输出,显示传输进度、速率等sz -v test2.bin
--min-bps N若传输速率低于N字节/秒,终止传输(防卡死)sz --min-bps 100 test1.txt
--delay-startup N启动前等待N秒(避免终端未就绪)rz --delay-startup 3

📜 协议选择选项

选项描述示例
-X使用XMODEM协议rx(接收)
--ymodem使用YMODEM协议rb(接收)/sz -y(发送)
-Z使用ZMODEM协议(默认)rz(接收)/sz(发送)

🔐 安全性选项

选项描述示例
-R启用限制模式(默认),防止接收绝对路径或覆盖系统文件rz -R
-U禁用限制模式(需谨慎,可能导致文件覆盖或命令注入)rz -U
-e转义控制字符(如XON/XOFF),避免特殊字符干扰传输rz -e

五、高级用法:运维实战进阶

🛡️ 1. 串口文件传输(嵌入式开发场景)

场景:嵌入式设备通过串口(如/dev/ttyUSB0)连接服务器,需传输固件或配置文件。 准备

  • 授权串口设备读写权限:sudo chmod 666 /dev/ttyUSB0
  • 使用screen作为串口终端:screen /dev/ttyUSB0 115200(波特率需与设备匹配)。

操作: 在screen中执行rz(接收)或sz(发送),传输文件。

Bash
# 接收设备发送的配置文件  
rz -b  

# 发送服务器固件至设备  
sz -b firmware.bin  

🔍 2. 自动化传输脚本(批量任务)

场景:每日凌晨批量下载服务器日志(/var/log/*.log)至本地备份目录。 脚本示例

Bash
#!/bin/bash  
LOG_DIR=/var/log  
LOCAL_DIR=/backup/logs  

# 切换至日志目录  
cd $LOG_DIR  

# 批量发送日志文件(显示进度,间隔1秒防卡顿)  
for file in *.log; do  
  sz -v "$file"  
  sleep 1  
done  

# 同步至本地备份目录(需提前挂载本地磁盘)  
cp /var/log/*.log $LOCAL_DIR  

🔄 3. 远程命令执行(高风险,谨慎使用)

场景:通过文件传输触发远程命令执行(默认禁用,需接收端启用-C)。 操作

Bash
# 发送命令(需接收端支持-C选项)  
sz -c "echo 'Hello from lrzsz' > /tmp/test.txt"  

⚡ 4. 性能优化(大文件传输)

场景:传输100MB以上大文件时,通过调整参数提升速度。 优化命令

Bash
# 启用Turbo模式(减少转义字符)+ 8KB缓冲区  
sz -T --bufsize 8192 large_file.bin  

🔐 5. 限制模式配置(防误操作)

场景:禁止传输绝对路径文件,避免安全风险。 操作: 设置环境变量ZMODEM_RESTRICTED=1,强制启用限制模式。

Bash
export ZMODEM_RESTRICTED=1  
rz -R  # 此时无法接收绝对路径文件  

六、注意事项:避坑指南

  1. 终端兼容性:优先选择Xshell/SecureCRT,Windows Terminal需借助第三方工具转发ZMODEM协议。
  2. 串口权限:串口设备(如/dev/ttyUSB0)需chmod 666授权,否则会报“Permission denied”。
  3. 安全风险:禁用限制模式(-U)可能导致文件覆盖或命令注入,仅建议在可信环境使用。
  4. 波特率匹配:串口传输时,需确保终端软件波特率(如115200)与设备一致,否则传输失败。
  5. 大文件传输:大文件可能占用高CPU,建议调整--bufsize(缓冲区大小)或--windowsize(窗口大小)。

总结

lrzsz是运维工具箱中“小而美”的存在,尤其在网络受限或轻量传输场景下,其高效、跨平台的特性无可替代。从嵌入式开发到远程服务器维护,从批量日志下载到自动化脚本集成,掌握rz/sz命令搭配Xshell等兼容终端,能让运维人员在应急场景中事半功倍。下次遇到无FTP环境的传输需求,不妨试试lrzsz!

首页分类标签