6

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

4

2 回答 2

12

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

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

于 2009-03-17T16:43:38.607 回答
6

看起来有一个不同的模块不使用内存结构:Archive::Tar::Streamed。缺点是它需要 tar 在运行它的系统上可用。尽管如此,它还是比你自己用木偶串焦油要好。

于 2009-03-17T07:24:05.567 回答