快速列出大型 tar 档案的内容

快速列出大型 tar 档案的内容

我需要列出一个相当大的(gzip 压缩)tar 存档(大约 37GiB)的内容。这tar -ztvf archive需要很长时间。有什么方法可以快速获取此列表?可能只列出特定目录深度的内容吗?

在打包档案时我可以做些什么来更快地列出内容吗?

答案1

因此,您有一组文件,您已使用它们创建了一个档案“柏油”,这将创建一个输出文件。然后,你使用了“gzip”压缩那个“。柏油”文件放入“。压缩”

如果是这种情况,那么获取“。柏油”文件,要求“。柏油”文件必须完整解压来自“。压缩”文件,在内容之前“。柏油”可以列出文件。

这总是比获取“直接”存储在“。压缩”文件。如果文件很大,这个时间可能会相当长。

如果您想减少列出压缩存档文件中的文件所需的时间,那么:

  1. 解压缩(解压缩)“。柏油”文件来自“。压缩”文件,并展开结果“。柏油”文件放入底层文件集

  2. 创建一个“。压缩”直接从文件集中获取文件。

这样,无需解压缩档案即可列出档案文件中的文件。

答案2

-z表示压缩ungzipgziptar 文件。Tar 本身无需压缩即可打包。使用 gzip 压缩时,您无能为力,因为元数据位于压缩的 tar 文件中,

$ gunzip -l co.tar.gz 
         compressed        uncompressed  ratio uncompressed_name
             177183             1044480  83.0% file.tar

这就是 gzip 所看到的全部。您必须使用 gunzip 才能返回 tar。Unix 解决这个问题的方法是简单地生成清单,find . > MANIFEST然后随附清单。但是还有其他选择,例如,除了使用.tar.gz清单之外,还可以简单地发送不压缩元数据的其他格式。我认为7zip符合这种描述。

最近,人们开始使用sha1summd5sum这是一个比常规 MANIFEST 更好的计划。

find destination/ -type f -exec sha1sum {} +; > sha1sum

这也可以很容易地检查,但没有必要,因为两个都tar 和 gzip 内部提供校验和,

sha1sum -c ./sha1sum

相关内容