OTA三种差分算法安装使用。bsdiff,hdiffpatch,xdelta3
目前在做OTA差分算法研究,基于baidu.google, gayhub各种资料和途径,整理出来了三种OTA算法的安装步骤及使用方法。
1.bsdiff
我就不简介了,网上百度巴拉巴拉一大堆,我就把如何安装还有使用命令的教程给列出来。
a 依赖的tar bsdiff-4.3.tar.gz bzip2-1.0.6.tar.gz
解压: tar –zxvf bsdiff-4.3.tar.gz
解压: tar –zxvf bzip2-1.0.6.tar.gz
重命名: mv bzip2-1.0.6.tar.gz bzip2
将bzip2文件夹移动到 /usr/local/include : sudo cp –r bzip2 /usr/local/include
b 依赖的源
yum install bzip2-devel.x86_64 进行下载
c修改 bsdiff-4.3 文件夹里面的 bsdiff.c 和bspatch.c
在include 头里添加
#include "bzip2/bzlib.c"
#include "bzip2/crctable.c"
#include "bzip2/compress.c"
#include "bzip2/decompress.c"
#include "bzip2/randtable.c"
#include "bzip2/blocksort.c"
#include "bzip2/huffman.c"
如图:
修改Makefile
在.ifndef和.endif 前面加一个 tab 空出距离,否则报错
如图:
准备工作完成以后 进行编译 : make
1.1运行命令
两个绿色的就是编译出的命令行
差分: ./bsdiff [oldfile] [newfile] [patchName]
合成: ./bspatch [oldfile] [newFileName] [patchName]
对比文件是否有差异: sha1sum [fileName] 检验文件完整性和hash值。
2.hdiffpatch
a 需要用到的zip包: HDiffPatch-master.zip , lz4-dev.zip, zstd-dev.zip, lzma-master.zip
b解压
unzip HDiffPatch-master.zip
unzip lz4-dev.zip
unzip zstd-dev.zip
unzip lzma-master.zip
重命名
mv HDiffPatch-master hdiffpatch
mv lz4-dev lz4
mv zstd-dev zstd
mv lzma-master lzma
在/usr/local/include/bzip2 目录下 将 bzlib.h 复制到 /usr/local/include
sudo cp bzlib.h ../
安装 zlib: yum install -y zlib zlib-devel (如果是ubuntu的话 需要 apt-get install zlib1g zlib1g-dev)
c 编译:
成功结果:
2.1使用命令
执行命令的语法:
拆分: ./hdiffz [oldFile] [newFile] [patchName]
合成: ./hpatchz [oldFile] [patchName][oldFileName]
命令详解:
hdiffz [-m[-matchScore]|-s[-matchBlockSize]] [-c-compressType[-compressLevel]] [-o] oldFile newFile outDiffFile
hpatchz [-m|-s[-s-cacheSize]] [-o] oldFile diffFile outNewFile
建议命令参数:
hdiffz run by: -s-128 -c-bzip2-9 [oldFile] [newFile] [outDiffFile]
hpatchz run by: -s-4m [oldFile] [diffFile] [outNewFile]
对比文件是否有差异: sha1sum [fileName] 检验文件完整性和hash值。
2.2hdiffz 参数简介
-m matchScore
使用matchScore将所有文件加载到内存中,默认是difffileSize 这种方式不推荐.
-s-matchBlockSize
所有文件加载为流式处理,参数由matchBlockSize决定,参数设置例如 128 128K 128M
默认128,建议32 - 16K 64K 1M等。
特殊选项:
C-压缩-压缩能级
设置差分文件的压缩类型和级别,默认不压缩;
支持压缩类型和级别:
(参考:HTTPS://Github. COM/SISON/LZTAMP/BROB/MARST/LZTAT17171SORTED.D)
-zlib[-{1..9}] DEFAULT level 9
-bzip2[-{1..9}] DEFAULT level 9
-lzma[-{0..9}[-dictSize]] DEFAULT level 7
dictSize(==decompress stream size) can like 4096 or 4k or 4m or 128m etc..., DEFAULT 4m
-lz4 no level
-lz4hc[-{3..12}] DEFAULT level 11
-zstd[-{0..22}] DEFAULT level 20
2.3hpatchz 参数简介
内存参数:
-m 旧文件全部加载入内存
-s-cacheSize 旧文件以流的方式加载。
cacheSize can like 262144 or 256k or 512m or 2g etc..., DEFAULT 128m
3.Xdelta3
- 依赖的包 xdelta-gpl-release3_1.zip
- 解压,unzip xdelta-gpl-release3_1.zip
cd xdelta-gpl-release3_1/xdelta3
在当前文件夹执行命令: ./run_release.sh
autoscan .
aclocal
autoheader
automake –add-missing
./configure
make
3.1命令
执行命令的方法
拆分 : ./xdelta3 -v -e -s [oldFile] [newFile] [patchName]
合成 : ./xdelta3 -v -d -s [oldFile] [patchName] [newFileName]
对比文件是否有差异: sha1sum [fileName] 检验文件完整性和hash值。
命令详细参数
用法: xdelta3 [命令/选项] [input [output]]
特殊命令名:
config 输出 xdelta3 配置信息
decode 解压缩 input
encode 压缩 input
test 运行内置的测试
为 VCDIFF 输入所用的特殊命令:
printdelta 输出整个变化的信息
printhdr 输出第一个窗口的信息
printhdrs 输出所有窗口的信息
标准选项:
-0 .. -9 压缩等级
-c 使用 stdout
-d 解压缩
-e 压缩
-f 强制覆盖
-h 显示帮助
-q 静默模式
-v 使用详细信息(最大2)
-V 显示版本
内存选项:
-B bytes 源窗口大小
-W bytes 输入窗口大小
压缩选项:
-s source 如果存在,选择来源文件从哪儿复制
-S [djw|fgk] 启用/弃用二级压缩
-N 弃用小字符串匹配压缩
-D 弃用外部解压缩 (压缩/解压缩)
-R 弃用外部重压缩 (压缩)
-n 弃用校验 (压缩/解压缩)
-C 软配置 (压缩, 无文档的)
-A [apphead] 弃用/提供程序头部 (压缩)
4.系统环境
系统:centos7
依赖:C++ gcc –v和 g++ -v 如果没有显示出对应的版本,则需要
执行 :yum groupinstall "Development Tools"
安装一些常用的开发者开发命令
OTA三种差分算法安装使用。bsdiff,hdiffpatch,xdelta3相关推荐
- Xdelta3 bsdiff Courgette三种差分算法比较
今天介绍常用的三种差分算法,分别是Xdelta3 bsdiff Courgette. Xdelta3 官网地址: http://xdelta.org 源码地址:https://github.com/j ...
- python 三种聚类算法(K-means,AGNES,DBScan)
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan) 更新时间:2019年06月27日 14:44:44 作者:weixin_42134141 这篇文章主要介绍了pyth ...
- 近似装箱问题(三种联机算法实现)
[0]README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 "近似装箱问题(三种联机算法实现)" 的idea 并用源代码加以实现: 0.2) 近似 ...
- 三种Hash算法对比以及秒传原理.
三种Hash算法对比以及秒传原理 CRC (32/64) MD5 Sha1 分5个点来说 1.校验值长度 2.校验值类别 3.安全级别 4.应用场景 1).校验值长度 CRC(32/64) 分别 ...
- 常用的三种线性模型算法--线性回归模型、岭回归模型、套索回归模型
常用的三种线性模型算法–线性回归模型.岭回归模型.套索回归模型 线性模型基本概念 线性模型的一般预测模型是下面这个样子的,一般有多个变量,也可以称为多个特征x1.x2.x3 - 最简单的线性模型就是一 ...
- 20172328 蓝墨云实验——三种查找算法练习
20172328 蓝墨云实验--三种查找算法练习 课程:<软件结构与数据结构> 班级: 1723 姓名: 李馨雨 学号:20172328 实验教师:王志强老师 实验日期:2018年10月1 ...
- 直立车模控制中三种滤波算法简单分析(清华卓晴)
摘自:https://mp.weixin.qq.com/s/WbCh0NFAnsf9y2blQenf7g 让我想起余义的一篇文章也是说到平衡车有三种滤波,我想和卓晴说的是一样的吧. https://b ...
- 谱估计matlab,利用MATLAB工具箱比较三种谱估计算法
总第175期2009年第1期 舰船电子工程 Ship Electr onic Engineering V o l.29No.1 96 利用MATLAB工具箱比较三种谱估计算法* 盖明明1)郗海龙2)姜 ...
- 【JVM】四种GC算法(分代收集+三种标记算法)
目录 参考文章 四种GC算法 分代收集算法(理论) 标记清除算法 标记整理算法 标记复制算法 三种算法的优缺点 参考文章 JVM的4种垃圾回收算法.垃圾回收机制与总结_我是guyue,guyue就是我 ...
- 基于内容的推荐java代码_三种推荐算法简介:基于用户的协同过滤、基于物品的协同过滤、基于内容的推荐...
1.推荐算法 1.1.协同过滤 协同过滤是目前应用最广泛的推荐算法,它仅仅通过了解用户与物品之间的关系进行推荐,而根本不会考虑到物品本身的属性. 可分成两类: 1.基于用户(user-based)的协 ...
最新文章
- 图解Hbase--大数据平台技术栈07
- report service常见处理办法
- css阻止input select默认事件
- python 列表常用操作(二)
- dpkg: 錯誤: 分析檔案 '/var/lib/dpkg/updates/0001' 的第 0 行附近: 欄位名稱 `#padding' 中有換行
- interface-C#接口-统一的标准
- LeetCode 1222. 可以攻击国王的皇后(set)
- 15款值得开发者一试的最新的前端框架
- 使用Delphi创建,解析,操纵XML文档
- Pyhon 获取文件夹的大小统计
- libvlc获取一帧_用VLC 实现获取播放每帧视频的时间(UTC)
- Linux之postfix邮件服务器搭建
- 浅谈无人值守改造技术在矿山供电系统的应用研究
- RPA案例 | 电商使用超自动化平台提升运营精细化
- 大数据:一张图让你明白什么是大数据
- 2019阿里云峰会·北京 | 十年再出发
- C语言编程实例—输出指定图形
- 共享栈的简单实现(C语言)
- Ubuntu20.04安装visit可视化软件
- 燃气热水器出现e4故障是怎么回事?
热门文章
- 深度学习二分类问题--IMDB数据集
- diy 单片机 自动浇花_基于51单片机的自动浇花装置(很详细)
- web页面上联系QQ客服功能实现——一行代码搞定
- 百度AI车牌识别测试
- gitter 卸载_最佳Gitter渠道:Node.js
- HTTPS 自签名证书 实现边下边播 方案
- Python - 列表解析式( List_Comprehension)
- 【论文翻译】:(arxiv 2022)PS-NeRV: Patch-wise Stylized Neural Representations for Videos
- 用python预测超车是否危险_用Python预测泰坦尼克号乘客生存情况
- 升级sp1后文档无法编辑