![快速列出大型 tar 档案的内容](https://linux22.com/image/1396482/%E5%BF%AB%E9%80%9F%E5%88%97%E5%87%BA%E5%A4%A7%E5%9E%8B%20tar%20%E6%A1%A3%E6%A1%88%E7%9A%84%E5%86%85%E5%AE%B9.png)
我需要列出一个相当大的(gzip 压缩)tar 存档(大约 37GiB)的内容。这tar -ztvf archive
需要很长时间。有什么方法可以快速获取此列表?可能只列出特定目录深度的内容吗?
在打包档案时我可以做些什么来更快地列出内容吗?
答案1
因此,您有一组文件,您已使用它们创建了一个档案“柏油”,这将创建一个输出文件。然后,你使用了“gzip”压缩那个“。柏油”文件放入“。压缩”。
如果是这种情况,那么获取“。柏油”文件,要求“。柏油”文件必须完整解压来自“。压缩”文件,在内容之前“。柏油”可以列出文件。
这总是比获取“直接”存储在“。压缩”文件。如果文件很大,这个时间可能会相当长。
如果您想减少列出压缩存档文件中的文件所需的时间,那么:
解压缩(解压缩)“。柏油”文件来自“。压缩”文件,并展开结果“。柏油”文件放入底层文件集
创建一个“。压缩”直接从文件集中获取文件。
这样,无需解压缩档案即可列出档案文件中的文件。
答案2
-z
表示压缩ungzip
或gzip
tar 文件。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
符合这种描述。
最近,人们开始使用sha1sum
或md5sum
这是一个比常规 MANIFEST 更好的计划。
find destination/ -type f -exec sha1sum {} +; > sha1sum
这也可以很容易地检查,但没有必要,因为两个都tar 和 gzip 内部提供校验和,
sha1sum -c ./sha1sum