当前位置: 首页 > news >正文

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

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

一、背景介绍

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


二、基本原理

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

三、流式传输与烧录方法

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

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

3.2 启用压缩传输(gzip)

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

3.3 多线程压缩传输(pigz)

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)

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

3.5 使用 rsync 支持断点续传

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 启用写入校验

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 性能匹配。
  • 使用专用网络(千兆网)提高传输速度。
http://www.xdnf.cn/news/450595.html

相关文章:

  • Restfull API 风格规则以及特点
  • Linux运维高频词对照表
  • “小显存”也能启动大模型
  • [数据结构]5. 栈-Stack
  • 服务器数据恢复—XFS文件系统分区消失的数据恢复案例
  • 基于.Net开发的网络管理与监控工具
  • 【算法】版本号排序
  • C++笔记-AVL树(包括单旋和双旋等)
  • 微信小程序学习之轮播图swiper
  • DeepSeek:AI助力高效工作与智能管理
  • Qwen3如何强化推理能力?
  • AISBench benchmark评测工具实操-精度评测场景-采用命令行指定模型和数据集的方式
  • ESP系列单片机选择指南:结合实际场景的最优选择方案
  • Jmeter 安装包与界面汉化
  • 【大模型】LLM概念相关问题(中)
  • day014-服务管理
  • Python机器学习笔记(二十二、模型评估-交叉验证)
  • 润金店发布“爱有千斤重“30周年限定爱意礼盒:以东方美学诠释爱的重量
  • elementplus el-tree 二次封装支持配置删除后展示展开或折叠编辑复选框懒加载功能
  • js对象原型,原型链
  • 制作一款打飞机游戏48:敌人转向
  • 嵌入式学习笔记 D20 :单向链表的基本操作
  • 3DMAX脚本病毒Spy CA查杀方法
  • 计算机网络笔记(二十八)——4.10软件定义网络SDN简介
  • 【0415】Postgres内核 释放指定 memory context 中所有内存 ④
  • 5.14 BGP作业
  • Linux操作系统实战:进程创建的底层原理(转)
  • 朱老师, 3518e系列,第三季
  • 【Python】杂乱-[代码]Python 替换字符串中相关字符的方法
  • 容器安全-核心概述