验证 tar.gz 没有损坏

Verifying a tar.gz is not corrupt

我有脚本来验证 tar 文件是否有效。我在此示例中使用 cat,但实际上我正在验证流式传输的亚马逊 s3 文件。

#!/bin/bash
cat   | tar zxf  -  > /dev/null
if [ $? -eq 0 ]; then
  echo  "File is ok ... "
else
  echo  "File is corrupted ... "
fi

问题是 tar 文件提取了 .tar.gz 中的文件。我尝试了不同的变体,例如 tar -C /dev/null 但没有成功。它要么失败,要么将文件输出到磁盘。

如何在不写入文件的情况下提取 tar 文件?其他一些帖子建议 tar t 获取文件列表。但我不能 100% 确定只获取文件列表就能验证 tar 包含的文件的完整性。

如果可能,我会在您的 S3 存储桶上的文件上生成一个哈希值,然后在您下载文件后将其与哈希值进行比较。