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

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.xdnf.cn/news/17869.html

相关文章:

  • OpenCV Python——图像查找(特征匹配 + 单应性矩阵)
  • Kotlin作用域函数全解:run/with/apply/let/also与this/it的魔法对决
  • fs模块_写入文件
  • Layers(图层)
  • OpenSCA开源社区每日安全漏洞及投毒情报资讯|14th Aug. , 2025
  • 【车联网kafka】常用参数及其命令总结(第八篇)
  • Backblaze 2025 Q2硬盘故障率报告解读
  • Web攻防-大模型应用LLM安全提示词注入不安全输出代码注入直接间接数据投毒
  • CAXA电子图板2026(国产CAD之光)
  • C# 中的 string / StringBuilder / 值类型 / 引用类型 / CLR 总结
  • Design Compiler:使用IC Compiler II Link
  • Tasking编译问题: E207: syntax error - token “<integer>“ delete的解决方案
  • 【机器学习】核心分类及详细介绍
  • 电视同轴电缆全面指南:从基础到应用,批量测量一键计量
  • 【博客系统测试报告】---web界面自动化测试
  • 使用PyTorch实现手写数字识别系统:从理论到实践
  • 附045.Kubernetes_v1.33.2高可用部署架构二
  • 介绍大根堆小根堆
  • C++——分布式
  • 从 0 到 1 玩转Claude code(蓝耘UI界面版本):AI 编程助手的服务器部署与实战指南
  • Unity 绳子插件 ObjRope 使用简记
  • C#文件复制异常深度剖析:解决“未能找到文件“之谜
  • 硬件开发_基于STM32单片机的热水壶系统
  • 领域防腐层(ACL)在遗留系统改造中的落地
  • 疯狂星期四文案网第40天运营日记
  • 分布式锁那些事
  • AI浪潮之巅:解码技术革命、重塑产业生态与构建责任未来
  • 超高车辆碰撞预警系统如何帮助提升城市立交隧道安全?
  • uniApp App 端日志本地存储方案:实现可靠的日志记录功能
  • 【python实用小脚本-187】Python一键批量改PDF文字:拖进来秒出新文件——再也不用Acrobat来回导