Linux 和 Windows 系统间文件传输 🔄
使用 rz 和 sz 命令轻松在 Linux 和 Windows 系统之间传输文件。本指南涵盖安装、配置、使用技巧以及替代方案,助您实现高效跨平台文件传输!🚀
📖 导航目录
–
🌟 简介
rz 和 sz 是 Linux 系统中常用的文件传输命令,它们使用 ZMODEM 协议 通过终端连接(如 SSH)在本地计算机和远程服务器之间传输文件。这两个命令是 lrzsz 软件包的一部分,非常适合在命令行环境下进行简单的文件交换。✨
主要优势:
- 简单易用 🎯: 只需两个命令即可完成上传下载
- 无需额外配置 ⚡: 大多数 SSH 客户端原生支持
- 跨平台兼容 🔄: 支持多种 Linux 发行版和 Windows 终端
- 无需另开连接 🖥️: 在现有 SSH 会话中直接传输文件
📦 一、安装 lrzsz
在不同 Linux 发行版上安装 lrzsz 包:
1. Debian/Ubuntu 系统
1
2
|
sudo apt-get update
sudo apt-get install lrzsz -y
|
2. Red Hat/CentOS/Rocky Linux
1
2
3
4
5
|
# 对于较新版本(使用 dnf)
sudo dnf install lrzsz -y
# 对于较旧版本(使用 yum)
sudo yum install lrzsz -y
|
3. Alpine Linux
4. openSUSE
1
|
sudo zypper install lrzsz
|
5. Arch Linux
6. 验证安装
1
2
3
4
5
6
7
|
# 检查 rz 和 sz 命令是否可用
which rz sz
# 预期输出: /usr/bin/rz 和 /usr/bin/sz
# 查看版本信息
rz --version
sz --version
|
🖥️ 二、Windows 端配置
rz/sz 需要终端软件支持 ZMODEM 协议。以下是支持的终端软件及其配置方法:
支持的终端软件
- ✅ PuTTY(需要额外配置)
- ✅ Xshell(内置支持,开箱即用)
- ✅ MobaXterm(内置支持,推荐使用)
- ✅ SecureCRT(内置支持)
- ✅ Windows Terminal(配合 WSL 使用)
PuTTY 配置步骤
-
下载并安装 PuTTY:
https://www.chiark.greenend.org.uk/~sgtatham/putty/
-
配置 ZMODEM 支持:
- 打开 PuTTY,连接到您的 Linux 服务器
- 转到 Connection > SSH > X11
- 确保 “Enable X11 forwarding” 已勾选
- 在"X display location"中填写
localhost:0
-
设置默认下载路径:
- 转到 Connection > SSH > Tunnels
- 添加新的转发:Source port: 0, Destination: localhost:0
MobaXterm 配置(推荐)
MobaXterm 内置了对 ZMODEM 协议的支持,无需额外配置:
- 下载并安装 MobaXterm:
https://mobaxterm.mobatek.net/
- 创建 SSH 会话连接到 Linux 服务器
- 直接使用 rz/sz 命令即可
📤 三、从 Windows 上传文件到 Linux (rz)
rz 命令用于从本地 Windows 计算机上传文件到远程 Linux 服务器。
基本命令
1
2
3
4
5
6
7
8
|
# 上传文件到当前目录
rz
# 上传文件并指定保存文件名
rz -y newfilename.txt
# 上传多个文件
rz -y
|
详细步骤
- 连接到 Linux 服务器 通过 SSH
- 导航到目标目录:
1
|
cd /path/to/destination
|
- 执行 rz 命令:
- 选择文件:
- 终端软件会弹出文件选择对话框
- 选择要上传的一个或多个文件
- 监控传输进度:
- 传输开始后,终端会显示进度信息
- 传输完成后,文件会保存在当前目录
高级选项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 强制覆盖已存在文件
rz -y
# 选择特定文件类型
rz -E "*.txt"
# 显示详细传输信息
rz -v
# 二进制模式传输(适用于非文本文件)
rz -b
# 转义控制字符(适用于特殊文件)
rz -e
|
📥 四、从 Linux 下载文件到 Windows (sz)
sz 命令用于从远程 Linux 服务器下载文件到本地 Windows 计算机。
基本命令
1
2
3
4
5
6
7
8
9
10
11
|
# 下载单个文件
sz filename.txt
# 下载多个文件
sz file1.txt file2.jpg file3.zip
# 使用通配符下载多个文件
sz *.log
# 下载并重命名文件
sz -y original.txt newname.txt
|
详细步骤
- 在 Linux 服务器上,导航到包含要下载文件的目录
- 输入 sz 命令 加上文件名:
- 选择保存位置:
- 终端软件会自动弹出保存对话框
- 选择本地保存位置和文件名
- 监控传输进度:
- 传输开始后,终端会显示进度信息
- 传输完成后,文件会保存在指定位置
高级选项
1
2
3
4
5
6
7
8
9
10
11
|
# 下载整个目录(需要先压缩)
tar czf - directory/ | sz -y directory.tar.gz
# 限制传输速率(KB/s,适用于大文件或慢速连接)
sz -l 1024 largefile.iso
# 显示详细输出
sz -v filename.txt
# 强制使用二进制模式
sz -b image.jpg
|
🔧 五、常用参数说明
参数 |
说明 |
示例 |
-y |
覆盖已存在文件 |
sz -y file.txt |
-e |
转义控制字符 |
rz -e |
-E |
强制使用特定扩展名 |
rz -E "*.txt" |
-b |
二进制模式传输 |
sz -b image.jpg |
-v |
显示详细输出 |
rz -v |
-l |
限制传输速率(KB/s) |
sz -l 512 bigfile.iso |
-q |
安静模式,减少输出 |
rz -q |
-c |
发送命令而不是文件 |
高级用法 |
–
💡 六、实用技巧和示例
1. 传输大文件
1
2
3
4
5
6
7
8
|
# 分卷传输大文件(在 Linux 上分割)
split -b 100M largefile.iso largefile_part.
# 传输所有分卷
sz largefile_part.*
# 在接收端合并分卷(Windows 上)
copy /b largefile_part.* largefile.iso
|
2. 传输整个目录
1
2
3
4
5
6
|
# 压缩后传输
tar czf - mydirectory/ | sz -y mydirectory.tar.gz
# 在接收端解压
rz # 接收 tar.gz 文件
tar xzf mydirectory.tar.gz
|
3. 自动化传输脚本
1
2
3
4
5
6
7
8
|
#!/bin/bash
# 自动备份并传输脚本
BACKUP_FILE="backup_$(date +%Y%m%d_%H%M%S).tar.gz"
tar czf /tmp/$BACKUP_FILE /important/data/
echo "📦 开始传输备份文件: $BACKUP_FILE"
sz /tmp/$BACKUP_FILE
rm /tmp/$BACKUP_FILE
echo "✅ 备份传输完成!"
|
4. 检查传输完整性
1
2
3
4
5
6
|
# 发送端生成校验和
md5sum bigfile.iso > bigfile.iso.md5
sz bigfile.iso bigfile.iso.md5
# 接收端验证
md5sum -c bigfile.iso.md5
|
5. 批量传输脚本
1
2
3
4
5
|
#!/bin/bash
# 批量传输所有图片文件
echo "🖼️ 开始传输图片文件..."
sz *.jpg *.png *.gif
echo "✅ 图片传输完成!"
|
–
⚠️ 七、常见问题与解决方案
❌ 问题 1: rz/sz 命令未找到
解决方案:
1
2
3
4
|
# 安装 lrzsz 包
sudo apt-get install lrzsz # Ubuntu/Debian
sudo yum install lrzsz # CentOS/RHEL
sudo dnf install lrzsz # Fedora/CentOS 8+
|
❌ 问题 2: 传输中断或不稳定
解决方案:
1
2
3
4
5
6
|
# 使用速率限制提高稳定性
sz -l 512 largefile.iso # 限制为 512KB/s
# 或者使用分卷传输
split -b 50M largefile.iso largefile_part.
sz largefile_part*
|
❌ 问题 3: 中文文件名乱码
解决方案:
1
2
3
4
5
6
|
# 设置正确的字符编码
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
# 然后传输文件
sz 中文文件.txt
|
❌ 问题 4: 权限不足
解决方案:
1
2
3
4
5
|
# 上传到有写入权限的目录
cd /tmp
rz
# 或者使用 sudo(但需要配置 sudo 允许 rz/sz)
|
❌ 问题 5: 终端软件不支持 ZMODEM
解决方案:
- 换用支持 ZMODEM 的终端软件(如 MobaXterm、Xshell)
- 或者使用替代传输方法(SCP、SFTP)
❌ 问题 6: 防火墙阻止传输
解决方案:
- 检查防火墙设置,确保 ZMODEM 端口未被阻止
- 或者使用替代传输方法(SCP 使用 SSH 端口)
🔄 八、替代方案
虽然 rz/sz 很方便,但还有其他文件传输方法可供选择:
1. SCP (Secure Copy)
1
2
3
4
5
6
7
8
|
# 从 Windows 到 Linux
scp file.txt user@linux-server:/path/
# 从 Linux 到 Windows
scp user@linux-server:/path/file.txt .
# 递归复制目录
scp -r directory/ user@linux-server:/path/
|
2. SFTP (SSH File Transfer Protocol)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 启动 SFTP 会话
sftp user@linux-server
# 上传文件
put localfile.txt
# 下载文件
get remotefile.txt
# 列出远程文件
ls
# 退出
exit
|
3. Rsync (高效同步)
1
2
3
4
5
6
7
8
|
# 同步本地目录到远程
rsync -avz /local/path/ user@linux-server:/remote/path/
# 从远程同步到本地
rsync -avz user@linux-server:/remote/path/ /local/path/
# 部分同步(仅更新变化部分)
rsync -avz --progress user@linux-server:/remote/path/ /local/path/
|
4. HTTP 下载
1
2
3
4
5
|
# 在 Linux 上启动简单 HTTP 服务器
python3 -m http.server 8000
# 然后在 Windows 浏览器中访问
# http://linux-server-ip:8000
|
5. 共享文件夹/NFS
1
2
3
4
5
6
7
8
9
10
11
12
|
# 在 Linux 上设置 NFS 共享
sudo apt-get install nfs-kernel-server # Ubuntu/Debian
sudo yum install nfs-utils # CentOS/RHEL
# 配置导出目录
sudo nano /etc/exports
# 添加: /path/to/share *(rw,sync,no_subtree_check)
# 重启服务
sudo systemctl restart nfs-server
# 在 Windows 上映射网络驱动器
|
–
📊 九、rz/sz 与其他工具对比
特性 |
rz/sz |
SCP |
SFTP |
Rsync |
易用性 |
⭐⭐⭐⭐⭐ |
⭐⭐⭐⭐ |
⭐⭐⭐ |
⭐⭐⭐ |
速度 |
⭐⭐⭐ |
⭐⭐⭐⭐ |
⭐⭐⭐⭐ |
⭐⭐⭐⭐⭐ |
断点续传 |
✅ |
❌ |
✅ |
✅ |
目录同步 |
❌ |
❌ |
✅ |
✅ |
无需额外配置 |
✅ |
❌ |
❌ |
❌ |
图形界面支持 |
❌ |
✅ |
✅ |
❌ |
🎯 十、最佳实践建议
- 小文件优先 📁: rz/sz 最适合中小型文件传输(< 1GB)
- 稳定性优先 🌐: 对于不稳定连接,使用速率限制参数
-l
- 验证完整性 ✅: 重要文件传输后验证 MD5 校验和
- 安全性考虑 🔒: 敏感文件考虑使用加密传输替代方案
- 备份重要数据 💾: 重要操作前做好备份
- 选择合适的工具 🛠️: 根据文件大小和网络条件选择最佳传输方式
- 监控传输过程 👀: 大型文件传输时保持会话活跃,避免超时
传输策略选择指南
- 小文件 (<100MB): 直接使用 rz/sz
- 中等文件 (100MB-1GB): 使用 rz/sz 带速率限制或 SCP
- 大文件 (>1GB): 使用 Rsync 或分卷传输
- 目录同步: 使用 Rsync 或 SFTP
- 自动化脚本: 使用 SCP 或 Rsync
💡 提示: 对于日常使用,rz/sz 提供了最快捷方便的文件传输方式,特别是在没有图形界面的服务器环境中。但对于大规模或自动化文件传输,建议考虑 SCP 或 Rsync 等更可靠的方案。
希望本指南帮助您轻松在 Linux 和 Windows 系统之间传输文件!如有其他问题,请参考各终端软件的官方文档。🎉