为什么 bzip2 和 gzip 会损坏大型堆转储文件,我可以解决这个问题吗?

为什么 bzip2 和 gzip 会损坏大型堆转储文件,我可以解决这个问题吗?

我正在尝试分析服务器上的堆转储,这些文件相当大(10-15 GB)。我在服务器上创建了这些文件,并想在我的计算机上分析它们,因此为了下载它们,我尝试使用 bzip 和 gzip 压缩它们。这两个程序始终生成无法再解压的损坏文件。

我使用的是块大小为 4 KiB 的 ext3,因此文件大小限制应为 2 TiB,因此对我而言无关紧要。我在 Ubuntu Jaunty 64 位服务器版本上使用 gzip 1.3.12 和 bzip 1.0.5,基本处于原始状态(仅添加了一些软件包,没有什么特别的)。

正在运行 RAID-1,但是没有报告同步问题或延迟。

转储是使用 jmap 创建的。

是否有某种特定类型的数据会导致这些程序阻塞?

尺寸有问题吗?

我可以尝试什么来了解更多信息或规避该问题?

答案1

如果有多个文件,请先尝试将它们放入 tar 存档中

tar czvf dumps.tar.gz file1 file2

或者用于 bzip 压缩

tar cjvf dumps.tar.bz2 file1 file2

在众多系统和文件系统上使用这两种方法我从未遇到过任何问题。

当然也适用于 1 个文件!

答案2

gzip 1.2.4 及更早版本在解压大于 4Gb 的文件时会出现问题(参见:http://www.gzip.org/#faq10

根据 bzip2 的更新日志,在 1.0.0 版本之前,它似乎在处理较大的文件时也遇到了一些问题

相关内容