方案设计
- 计算哈希值:在每个节点上,对文本文件集合中的每个文件分别计算其MD5和SHA256哈希值。
- 汇总哈希值:将计算得到的哈希值汇总成一个文件,例如
hash_summary.txt
,文件格式可以是每行一个文件路径及其对应的MD5和SHA256哈希值,格式如:文件路径 MD5哈希值 SHA256哈希值
。
- 比较哈希值:将各个节点的
hash_summary.txt
文件收集到一个中央节点(或使用分布式比较算法),逐行比较这些文件中的内容,若完全一致则说明文件是一致的,否则不一致。
Bash脚本框架
#!/bin/bash
# 定义存储哈希值汇总文件的路径
HASH_SUMMARY_FILE="hash_summary.txt"
# 清空哈希值汇总文件(如果存在)
> $HASH_SUMMARY_FILE
# 遍历当前目录及其子目录下的所有文本文件
find . -type f -name "*.txt" | while read -r file; do
# 计算MD5哈希值
md5_hash=$(md5sum "$file" | awk '{print $1}')
# 计算SHA256哈希值
sha256_hash=$(sha256sum "$file" | awk '{print $1}')
# 将文件路径、MD5哈希值和SHA256哈希值写入汇总文件
echo "$file $md5_hash $sha256_hash" >> $HASH_SUMMARY_FILE
done
关键步骤说明
- 初始化:定义并清空用于存储哈希值汇总的文件
hash_summary.txt
。
- 文件查找:使用
find
命令查找当前目录及其子目录下所有的文本文件(假设文本文件后缀为.txt
,可根据实际情况调整)。
- 哈希值计算:对于每个找到的文件,分别使用
md5sum
和sha256sum
命令计算其MD5和SHA256哈希值,并通过awk
命令提取哈希值部分。
- 汇总记录:将文件路径、MD5哈希值和SHA256哈希值按指定格式写入
hash_summary.txt
文件。后续在中央节点比较各个节点生成的hash_summary.txt
文件内容即可判断文件一致性。