Como posso tar arquivos maiores do que a memória física usando do Perl Archive :: Tar?

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

  •  19-08-2019
  •  | 
  •  

Pergunta

Eu estou usando Perl do Archive :: Tar módulo. Problema com ele é que puxa tudo para a memória ea não arquivar e, em seguida, escreve para o sistema de arquivos para que haja limitação no tamanho máximo de arquivo que podem ser arquivados. Na maioria das vezes ele diz sem memória. Em caso de GNU tar, leva pedaço de arquivo, arquiva e escreve-lo para a memória para que ele possa lidar com arquivos de qualquer tamanho. Como posso fazer isso usando o módulo Archive :: Tar do Perl.

Foi útil?

Solução

Parece que há um módulo diferente que não usa uma estrutura na memória: Archive :: Tar :: Streamed . A desvantagem é que ele requer tar a estar disponível no sistema é executado em. Ainda assim, é melhor do que tar-amarrando fantoche si mesmo.

Outras dicas

Parece que Archive :: Tar :: Wrapper é o seu melhor aposta. Eu não tentei isso sozinho, mas ele usa executável tar do seu sistema e não guarda os arquivos na memória.

Ao contrário do Chas. A resposta de Owen, Archive :: Tar :: Streamed não manter arquivos na memória e não usar tar do seu sistema. Ele realmente usa Archive :: Tar internamente, mas ele processa um arquivo de cada vez ( aproveitando-se do fato de que arquivos tar podem ser concatenadas). Isto significa que Archive :: Tar :: Streamed podem lidar com arquivos maiores do que a memória, contanto que cada arquivo individual no arquivo vai caber na memória. Mas isso não é o que você pediu.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top