PerlのArchive :: Tarを使用して物理メモリよりも大きいファイルをtarするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/653127

  •  19-08-2019
  •  | 
  •  

質問

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はメモリよりも大きいアーカイブを処理できます。しかし、それはあなたが求めたものではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top