如何使用Perl';对大于物理内存的文件进行tar;s档案::焦油?

如何使用Perl';对大于物理内存的文件进行tar;s档案::焦油?,perl,archive,tar,Perl,Archive,Tar,我正在使用Perl的模块。它的问题是,它将所有内容都拖到内存中,然后进行归档,然后写入文件系统,因此可以归档的最大文件大小受到限制。大多数时候,它说的是记忆不足。在GNUTAR的情况下,它获取文件块,将其归档并写入内存,以便处理任何大小的文件。如何使用Perl的Archive::Tar模块实现这一点。看起来有一个不同的模块不使用内存中的结构:。缺点是它要求tar在运行它的系统上可用。不过,这总比你自己用木偶串焦油要好。看来这是你最好的选择。我自己也没有试过,但它使用了系统的tar可执行文件,并且

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

看起来有一个不同的模块不使用内存中的结构:。缺点是它要求tar在运行它的系统上可用。不过,这总比你自己用木偶串焦油要好。

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


与查斯相反。欧文的回答是,会将文件保存在内存中,不会使用系统的
tar
。它实际上在内部使用,但一次只处理一个文件(利用了tar存档可以连接的优势)。这意味着归档::Tar::Streamed可以处理比内存大的归档,只要归档中的每个文件都适合内存。但这并不是你想要的。

如果我没有弄错的话,我认为对某些人来说,一个主要的缺点是包装类在Windows下不工作,因为它没有命令行
tar
函数。在这种情况下,流式传输是更好的选择。
Archive::Tar::Streamed
的文档中说“它的目标也是可移植的,并且在没有本机Tar的平台上可用”。由于您的答案是公认的,您可能需要更新它。