一键批量校验文件完整性(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的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

Java如何从Redis中批量读取数据

《Java如何从Redis中批量读取数据》:本文主要介绍Java如何从Redis中批量读取数据的情况,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一.背景概述二.分析与实现三.发现问题与屡次改进3.1.QPS过高而且波动很大3.2.程序中断,抛异常3.3.内存消