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

shell脚本实现sha256sum校验并拷贝校验通过的文件

#!/bin/bash# 目标目录
TARGET_DIR="/appdata/jn1m/versions/old/bin"# 校验文件
CHECKSUM_FILE="checksum.txt"# 检查目标目录是否存在
if [ ! -d "$TARGET_DIR" ]; thenecho "错误:目标目录 $TARGET_DIR 不存在"exit 1
fi# 检查校验文件是否存在
if [ ! -f "$CHECKSUM_FILE" ]; thenecho "错误:校验文件 $CHECKSUM_FILE 不存在"exit 1
fi# 创建目标目录(如果不存在)
mkdir -p "$TARGET_DIR"echo "开始验证文件完整性并复制验证通过的文件..."
echo "目标目录: $TARGET_DIR"
echo "---------------------------------"# 计数器
total_files=0
copied_files=0# 逐行处理校验文件
while IFS= read -r line; do# 跳过空行if [ -z "$line" ]; thencontinuefitotal_files=$((total_files + 1))# 提取文件名(去除开头的"./")filename=$(echo "$line" | awk '{print $2}' | sed 's|^\./||')# 检查文件是否存在if [ ! -f "$filename" ]; thenecho "× 文件不存在: $filename"continuefi# 创建临时校验文件temp_checksum=$(mktemp)echo "$line" > "$temp_checksum"# 验证单个文件if sha256sum -c "$temp_checksum" >/dev/null 2>&1; thenecho "√ 验证通过: $filename"# 复制文件到目标目录if cp -v "$filename" "$TARGET_DIR/"; thenecho "  已复制到: $TARGET_DIR/"copied_files=$((copied_files + 1))elseecho "  复制失败: $filename"fielseecho "× 验证失败: $filename"fi# 清理临时文件rm -f "$temp_checksum"echo "---------------------------------"
done < "$CHECKSUM_FILE"# 显示最终结果
echo "验证完成!"
echo "总计文件: $total_files"
echo "验证通过并复制: $copied_files"if [ "$total_files" -ne "$copied_files" ]; thenecho "警告: 部分文件未通过验证或复制失败"exit 2
elseecho "√ 所有文件验证通过并成功复制"
fi

脚本功能说明:

  1. 验证与复制流程

    • 逐行读取checksum.txt文件

    • 对每个文件单独进行SHA256校验

    • 只复制验证通过的文件到目标目录

    • 显示详细的验证和复制结果

  2. 目标目录处理

    • 自动创建目标目录(如果不存在)

    • 目标路径设置为:/appdata/jn1m/versions/old/bin

  3. 错误处理

    • 检查目标目录是否存在

    • 检查校验文件是否存在

    • 处理文件不存在的情况

    • 显示复制失败的文件

    • 最终统计成功/失败数量

http://www.dtcms.com/a/333359.html

相关文章:

  • 从模拟实现插入去理解AVL树的旋转平衡
  • 波浪模型SWAN学习(1)——模型编译与波浪折射模拟(Test of the refraction formulation)
  • 为什么哈希表(字典)的查询速度有时会突然变慢
  • 2025世界职业院校技能大赛汽车制造与维修赛道(中职组)参赛指南
  • 提升化工制造质量的 7 种方法
  • 制造企业仓储管理焕新!金指云 “一物一码” 破解混乱难题,库存成本直降 30%
  • Spring 条件注解与 SPI 机制(深度解析)
  • 焊接机器人保护气体效率优化
  • 0100题解
  • 【大模型评估体系简介】
  • Linux 系统中网络管理
  • 企业现金流综合分析报告
  • Mybatis简单练习注解sql和配置文件sql+注解形式加载+配置文件加载
  • KNN算法:从电影分类到鸢尾花识别
  • Linux运维新手的修炼手扎之第29天
  • C++中的适配器模式:灵活应对接口不兼容问题
  • JSX 与 JavaScript 的关系:从语法糖到生态系统
  • JavaWeb 欢迎页设置详解
  • 从 “碳足迹“ 到 “零碳圈“:上海零碳园区的改造密码
  • 容器技术:轻量虚拟化的未来
  • 状态流程框架(cola-component-statemachine)
  • 基于机器视觉的车道线检测与跟踪关键技术研究
  • GitHub 上 Star 数量前 18 的开源 AI Agent 项目
  • k8s注意事项
  • el-tree 编辑后保持现有展开状态
  • 【多模态大模型】--BLIP3
  • Backblaze 2025 Q2硬盘故障率报告解读
  • [TryHackMe](知识学习)缓冲区溢出
  • week1-[顺序结构]大海
  • 继续记录面试题