PerlのArchive :: Tarを使用して物理メモリよりも大きいファイルをtarするにはどうすればよいですか?
質問
Perlの Archive :: Tar モジュールを使用しています。問題は、すべてをメモリにプルし、アーカイブを実行してからファイルシステムに書き込むため、アーカイブできる最大ファイルサイズに制限があることです。ほとんどの場合、メモリ不足です。 GNU tarの場合、任意のサイズのファイルを処理できるように、ファイルのチャンクを取得してアーカイブし、メモリに書き込みます。 PerlのArchive :: Tarモジュールを使用してこれを行うにはどうすればよいですか。
解決
メモリ内構造を使用しない別のモジュールがあるようです:アーカイブ:: Tar :: Streamed 。欠点は、実行するシステムでtarを使用可能にする必要があることです。それでも、それは自分でパペットを張るタールよりも優れています。
他のヒント
Archive :: Tar :: Wrapper は最善の策。私は自分で試したことはありませんが、システムのtar
実行可能ファイルを使用し、ファイルをメモリに保持しません。
チャスに反して。 Owenの回答、 Archive :: Tar :: Streamed does ファイルをメモリに保持し、システムの<=>を使用しません。実際には Archive :: Tar を内部的に使用しますが、一度に1つのファイルを処理します( tarアーカイブを連結できるという事実を利用して)。つまり、アーカイブ内の個々のファイルがメモリに収まる限り、Archive :: Tar :: Streamedはメモリよりも大きいアーカイブを処理できます。しかし、それはあなたが求めたものではありません。
所属していません StackOverflow