本文主要是介绍一键批量校验文件完整性(Win+Linux脚本),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一键批量校验文件完整性(Win+Linux脚本)
在Windows和Linux都有专门计算文件hash的命令,但格式都类似于[command] [file] [algorithm],然后输出长串数字。一是无法直接比较文件出结果,二是比较大量文件时,人工对比异常繁琐。本文就是解决此难题。
需求
-
多个软件固件(比如image、OTA包、差分包、定制包)由Jenkins编译产生,存放在Linux服务器上,需要将所有固件发布给测试、市场、运营等相关同事。由于公司服务器在境外,网络会偶尔丢包,偶尔下载的固件会损坏,丢失部分数据,遇到的频率还不低。
-
服务器端每次生成固件,会用脚本生成对比的hash并存在某个文本文件中。提供给相关同事,一般同事用Windows系统,他们不一定很擅长使用cmd或者powershell,为了提高效率,需要提供一个快速校验所有固件完整性的方案,尽可能简单(Windows/Linux一键执行、批量、递归遍历)。
需求是不难,但是要怎么做的傻瓜/轻便/高效/稳定性强呢?
前言
系统命令
计算hash的算法有很多,例如MD5
、SHA1
、SHA256
、SHA512
等,我们以sha256
算法举例。
-
Windows计算
sha256
用Windows传统的cmd.exe:
certutil -hashfile xxxx.zip SHA256
用Windows近几年推出的powershell.exe:
Get-FileHash xxxx.zip -Algorithm SHA256
-
Linux计算
sha256
用Linux自带命令:
sha256sum xxxx.zip
虽然都可以直接计算出hash值,但大多都是针对单个文件进行设计的,如果文件很多,还得人工校对。
尝试方案
免费软件HashTools
https://www.binaryfortress.com/HashTools/Download/
这个是国外开发的Windows exe工具。
优点是可以批量计算文件的各种算法的hash值;
缺点也很明显,没法批量对比各个文件的hash,而需要手动一个一个点开输入需要对比的hash值。
而且作为商业级应用的软件,最好是要安全可控,所以还是建议工程师自行开发。
方案选择
- python脚本
python有丰富的命令集,实现这个需求应该不难。
但是核心问题是不是所有的工程师都有python环境,总不能带上一个python库吧,而且还要同事、客户需要怎么用python。
- java脚本
java的语法也很方便,实现这个需求应该不难,但每次都要借助java虚拟机运行,也要带上jre,也容易出问题。
此外,java和python运行效率都不高。
- 一键执行的脚本
Linux有丰富的shell脚本, Windows也有Powershell,对于这个需求,基本也可以实现。
最大的优势是,脚本文件很轻便,执行快速
这篇关于一键批量校验文件完整性(Win+Linux脚本)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!