Linux基础 -- SSH 流式烧录与压缩传输笔记

Linux SSH 流式烧录与压缩传输指南

一、背景介绍

在嵌入式开发和维护中,常常需要通过 SSH 从 PC 向设备端传输大文件(如系统镜像、固件)并将其直接烧录到指定磁盘(如 /dev/mmcblk2)。然而,设备端存储空间有限,无法直接存储整个大文件。这种情况下,采用流式传输和解压的方式成为最佳选择。


二、基本原理

  • 流式传输:PC 端数据通过 SSH 管道直接传输到设备端,不在设备端保存临时文件。
  • 压缩与解压:PC 端压缩数据流,设备端解压并直接写入磁盘。
  • 并行传输:启用多线程压缩/解压提升速度。

三、流式传输与烧录方法

3.1 基本流式烧录(无压缩)

bash 复制代码
ssh remote_user@device_ip "dd of=/dev/mmcblk2 bs=4M" < cm100s_mmcblk2p2
  • 直接将本地文件流式传输并写入设备磁盘。

3.2 启用压缩传输(gzip)

bash 复制代码
gzip -c cm100s_mmcblk2p2 | ssh remote_user@device_ip "gzip -d | dd of=/dev/mmcblk2 bs=4M status=progress"
  • 本地压缩数据,设备端解压并写入。

3.3 多线程压缩传输(pigz)

bash 复制代码
pigz -p $(nproc) < cm100s_mmcblk2p2 | ssh remote_user@device_ip "pigz -d | dd of=/dev/mmcblk2 bs=4M status=progress"
  • 使用 pigz 多线程压缩,提升传输速率。

3.4 直接传输压缩文件(.gz、.xz、.lz4)

  • 如果文件已压缩,无需解压:
bash 复制代码
cat cm100s_mmcblk2p2.gz | ssh remote_user@device_ip "gzip -d | dd of=/dev/mmcblk2 bs=4M status=progress"

3.5 使用 rsync 支持断点续传

bash 复制代码
rsync --partial --progress -e ssh cm100s_mmcblk2p2 remote_user@device_ip:/dev/stdout | ssh remote_user@device_ip "dd of=/dev/mmcblk2 bs=4M"
  • --partial:中断后可继续。

四、提高写入可靠性

4.1 启用写入校验

bash 复制代码
ssh remote_user@device_ip "sync && hexdump -C /dev/mmcblk2 | head"

4.2 自动化脚本

  • 自动选择压缩格式(gzip/xz/lz4)。
  • 自动检测写入完整性。
  • 断点续传自动重试。

五、故障排查

  • SSH 连接中断 :确保网络稳定,使用 rsync --partial
  • 设备空间不足:采用流式传输(如 gzip -d | dd)。
  • 数据校验失败 :确保块大小与传输方式一致(bs=4M)。

六、附录:优化建议

  • 启用多线程压缩(pigz)。
  • 确保 PC 端和设备端 CPU 性能匹配。
  • 使用专用网络(千兆网)提高传输速度。
相关推荐
Johny_Zhao2 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
小毛驴8502 小时前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
DKPT3 小时前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式
好好学习啊天天向上3 小时前
世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程
linux·运维·ubuntu·自动性能优化
tan180°4 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
巴伦是只猫5 小时前
【机器学习笔记Ⅰ】13 正则化代价函数
人工智能·笔记·机器学习
典学长编程5 小时前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome
wuk9985 小时前
基于MATLAB编制的锂离子电池伪二维模型
linux·windows·github
独行soc8 小时前
#渗透测试#批量漏洞挖掘#HSC Mailinspector 任意文件读取漏洞(CVE-2024-34470)
linux·科技·安全·网络安全·面试·渗透测试
BD_Marathon8 小时前
Ubuntu下Tomcat的配置
linux·ubuntu·tomcat