![使用 Pixz 减少压缩文件查找时间的策略?](https://linux22.com/image/1481510/%E4%BD%BF%E7%94%A8%20Pixz%20%E5%87%8F%E5%B0%91%E5%8E%8B%E7%BC%A9%E6%96%87%E4%BB%B6%E6%9F%A5%E6%89%BE%E6%97%B6%E9%97%B4%E7%9A%84%E7%AD%96%E7%95%A5%EF%BC%9F.png)
我有一个 PIXZ 压缩的(级别-9
)tarball,其中包含大约 4000 个文件(有序,像书中的页面一样):压缩大小约为 670M。目前,我使用标准方式以编程方式访问这些文件,即
pixz -x <compressed_file_name> < tarball.tpxz | tar x -O
根据使用的指标time
,提取文件平均需要 1.7 秒。由于这是程序化过程的一部分,我希望尽可能缩短时间,因此我考虑将档tpxz
案分成三个较小的 ~200M 段(每个段包含 ~1000 个文件),并期望pixz -x
对这三个段中的任何一个的运行速度都比对 ~600M 的原始段的运行速度快得多。(我可以预测三个段中的哪一个包含该过程所需的文件。)
然而令我惊讶的是,200M 段的时间指标与原始段相同:查找/解压缩平均仍需 1.7 秒。由于这与直觉和极端情况下的结果相矛盾 - 查找/解压缩包含-9
单个文件的文件压缩包只需很短的时间即可完成 - 我很好奇我的分段策略为何失败,以及大家是否可以推荐其他策略来提高查找较大文件的性能pixz
:1.7 秒当然是可以接受的,特别是考虑到您节省的存储成本,但更快的时间会更好。
如果存在某个 tarball 大小和/或存档文件数量阈值,超过该阈值,pixz
查找/解压缩作业的完成时间将大致保持恒定,那么了解这一点会很有趣也很有用,因此提前感谢任何建议。
答案1
我是 pixz 的作者。Pixz 已经使用内部阻止来查找文件,这就是为什么使用“pixz -x file < my.tpxz”往往比“tar -xJf my.tpxz file”更快的原因。
当您使用高压缩率时,块大小会变得非常大,这使得提取单个文件的速度比提取低压缩率设置的速度要慢。您可以在 .tpxz 文件上使用“xz -lv”来查看块的大小。