我正在使用Perl的Archive :: Tar模块.它的问题在于它将所有内容都拉到内存并进行归档,然后写入文件系统,因此可以归档的最大文件大小有限制.大多数时候,它说内存不足.在GNU tar的情况下,它需要文件块,将其存档并将其写入内存,以便它可以处理任何大小的文件.我怎么能用Perl的Archive :: Tar模块做到这一点.
看起来像Archive :: Tar :: Wrapper是你最好的选择.我自己没有尝试过,但它使用了系统的tar
可执行文件,并没有将文件保存在内存中.
与Chas相反.Owen的回答,Archive :: Tar :: Streamed 确实将文件保存在内存中,并且不使用您的系统tar
.它实际上在内部使用Archive :: Tar,但它一次处理一个文件(利用tar档案可以连接的事实).这意味着Archive :: Tar :: Streamed可以处理大于内存的归档,只要归档中的每个单独文件都适合内存.但这不是你要求的.
看起来有一个不同的模块不使用内存结构:Archive :: Tar :: Streamed.缺点是它需要在运行的系统上使用tar.不过,它本身就比傀儡穿上tar更好.