我想知道如何在创建后与原始目录验证tarball备份的校验和。
是否有可能这样做,而不提取它,例如,如果它是一个大的20GB备份?
示例,包含两个文件的目录:
mkdir test &&
echo "one" > test/one.txt &&
echo "two" > test/two.txt
获取目录的校验和:
find test/ -type f -print0 | sort -z | xargs -0 shasum | shasum
目录内容的校验和:
d191c793cacc4bec1f070eb96fa68524cca566f8 -
创建压缩文件:
tar -czf test.tar.gz test/
目录内容的校验和保持不变
但是当创建存档并获取存档的校验和时,我注意到结果有所不同。为什么呢?
如何获取tarball内容的校验和以与目录内容校验和进行比较?
或者有什么更好的解决方案来检查归档文件是否包含原始目录中的所有必要内容(如果目录很大,则不提取它)?您的目录校验和正在计算每个文件内容的SHA-1。您需要读取并解压缩整个tar存档来进行相同的计算。这并不意味着您需要将存档的内容保存在任何地方。您只需要按顺序将其读入内存,并在那里进行计算。