如何使用Perl的Archive :: Tar来tar文件大于物理内存的文件?

时间:2009-03-17 05:53:25

标签: perl archive tar

我正在使用Perl的Archive::Tar模块。它的问题在于它将所有内容都拉到内存并进行归档,然后写入文件系统,因此可以归档的最大文件大小有限制。大多数时候,它说内存不足。在GNU tar的情况下,它需要文件块,将其存档并将其写入内存,以便它可以处理任何大小的文件。我怎么能用Perl的Archive :: Tar模块做到这一点。

2 个答案:

答案 0 :(得分:12)

看起来Archive::Tar::Wrapper是你最好的选择。我自己没有尝试过,但它使用了系统的tar可执行文件,并没有将文件保存在内存中。

与Chas相反。 Owen的回答是,Archive::Tar::Streamed 确实将文件保存在内存中,使用系统的tar。它实际上在内部使用Archive::Tar,但它一次处理一个文件(利用tar档案可以连接的事实)。这意味着Archive :: Tar :: Streamed可以处理大于内存的归档,只要归档中的每个单独文件都适合内存。但这不是你要求的。

答案 1 :(得分:6)

看起来有一个不同的模块不使用内存结构:Archive::Tar::Streamed。缺点是它需要在运行的系统上使用tar。不过,它本身就比傀儡穿上tar更好。