tar.gz 文件列表的速度是否取决于 tar 文件的大小?

3
我正在使用tf函数列出一个tar.gz文件的内容。它非常大,约1 GB。大约有1000个文件按年/月/日的结构组织。
列出操作需要相当长的时间。看起来像是应该很快的。有人能给我解释一下内部机制吗?
谢谢 -
2个回答

2

Tar具有简单的文件结构。如果你想要列出所有文件,必须解析全部文件。 如果你只想找到一个文件,可以停止进程。但必须确保归档文件只有一个文件版本。这在压缩存档中很常见,因为不支持添加文件。 例如,你可以这样做:

tar tvzf somefile.gz|grep for find something|\
while read file; do foundfile="$file"; last; done

这个循环将会中断并且不会读取所有内容,而只会从文件开始位置读取。

如果你需要对列表进行更多的操作,可以将其保存到任何临时文件中。如果需要节省空间,可以使用gzip压缩该文件:

tar tvzf somefile.gz|gzip >temporary_filelist.gz

2
例如,可以查看wikipedia,以验证tar文件中的每个文件是否都有一个头部。要验证tar中的所有文件,需要读取整个tar文件。
tar文件开头没有“索引”来指示其内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接