使用 md5 哈希重新创建文件夹结构

使用 md5 哈希重新创建文件夹结构

给定一长串 md5 校验和以及这些文件的副本(重命名并位于不同的文件夹结构中):如何重新创建或恢复原始文件系统结构?假设没有哈希冲突。

be70e389a9e000a85826a1a80488e1e1  path/A/2/2.bin
96a48d4706ec8eafff7e56f6784bb6b4  path/B/b1.bin
ffd2e58da118ba6c85de29c4c5b4c1f8  path/C/c1.bin
dbde0b664f88d8027e5cb7efb2cd1060  path/C/2/c2.bin
...```

答案1

bash我会:

  1. 迭代文件并将read每个哈希存储到关联数组
  2. 将所有本地文件名存储到临时文件中(使用find应该没问题)。
  3. 迭代在每个文件上运行的本地文件列表md5sum,检查哈希值是否作为键在数组中,如果是,则将其重命名为目标名称。

答案2

我最终使用了join一个快速而肮脏的解决方案,假设用于恢复文件夹的文件名没有空白字符:

md5sum * | sort -u -k 1,1 | join - ../restore.s | \
  while read h r t; do \
    mkdir -p $(dirname "tmp/$t"); cp "$r" "tmp/$t"; \
  done

连接的输入需要排序,我删除了相同的文件。连接的输出是hash source target用于恢复文件的行。

相关内容