tar 存档是否可寻址似乎在列出或提取少量文件时会产生很大影响。不幸的是,手册页上的信息非常稀少。似乎压缩存档不可寻址 [1],但该帖子没有提供任何证据。有没有更可靠的信息来源来了解有关此问题的信息?
答案1
每个文件的文件头都包含其在存档中的大小。这样,如果不需要,就可以跳过文件内容。Tar 只会查找文件内容后面的下一个文件头。有关文件头格式的文档。
压缩的 tar 文件就是这样。您可以使用适当的解压缩程序(通常是 gunzip)或压缩程序(gzip)自由地切换为未压缩和压缩的 tar 文件格式。对于某些 tar 程序,这是唯一的选择。即使 tar 文件被压缩,它本身仍然可以查找。
无法查找的是压缩格式。压缩的工作原理是找到相对较少的字节数来表示被压缩的数据。具有相对较少字节值或重复字节串的数据块压缩效果很好。具有大量不同字节值和少量重复字节串的数据块压缩效果不佳,甚至根本无法压缩。对于某些数据,压缩实际上会增加文件的大小。文件内块的压缩率各不相同。对于可能由非常可压缩的文件和相对不可压缩的文件组成的 tar 文件,差异可能很大。
压缩数据中没有机制来查找未压缩数据中的某个位置。虽然某些压缩程序允许查找带有压缩存档的单个文件,但压缩存档可以访问的唯一文件是 tar 文件。tar 文件很少用此类工具压缩,尽管在存档文件集时可能会包含压缩或未压缩的 tar 文件。