一键批量校验文件完整性(Win+Linux脚本)

2024-03-18 01:36

本文主要是介绍一键批量校验文件完整性(Win+Linux脚本),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

check_sum

一键批量校验文件完整性(Win+Linux脚本)

在Windows和Linux都有专门计算文件hash的命令,但格式都类似于[command] [file] [algorithm],然后输出长串数字。一是无法直接比较文件出结果,二是比较大量文件时,人工对比异常繁琐。本文就是解决此难题。

需求

  • 多个软件固件(比如image、OTA包、差分包、定制包)由Jenkins编译产生,存放在Linux服务器上,需要将所有固件发布给测试、市场、运营等相关同事。由于公司服务器在境外,网络会偶尔丢包,偶尔下载的固件会损坏,丢失部分数据,遇到的频率还不低。

  • 服务器端每次生成固件,会用脚本生成对比的hash并存在某个文本文件中。提供给相关同事,一般同事用Windows系统,他们不一定很擅长使用cmd或者powershell,为了提高效率,需要提供一个快速校验所有固件完整性的方案,尽可能简单(Windows/Linux一键执行、批量、递归遍历)。

需求是不难,但是要怎么做的傻瓜/轻便/高效/稳定性强呢?

前言

系统命令

计算hash的算法有很多,例如MD5SHA1SHA256SHA512等,我们以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工具。

image-20240317162137640

image-20240317162003691

优点是可以批量计算文件的各种算法的hash值;

缺点也很明显,没法批量对比各个文件的hash,而需要手动一个一个点开输入需要对比的hash值。

而且作为商业级应用的软件,最好是要安全可控,所以还是建议工程师自行开发。

方案选择
  • python脚本

python有丰富的命令集,实现这个需求应该不难。

但是核心问题是不是所有的工程师都有python环境,总不能带上一个python库吧,而且还要同事、客户需要怎么用python。

  • java脚本

java的语法也很方便,实现这个需求应该不难,但每次都要借助java虚拟机运行,也要带上jre,也容易出问题。

此外,java和python运行效率都不高。

  • 一键执行的脚本

Linux有丰富的shell脚本, Windows也有Powershell,对于这个需求,基本也可以实现。

最大的优势是,脚本文件很轻便,执行快速

这篇关于一键批量校验文件完整性(Win+Linux脚本)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/820788

相关文章

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库