¿Cómo puedo tar archivos más grandes que la memoria física usando Perl's Archive :: Tar?

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

  •  19-08-2019
  •  | 
  •  

Pregunta

Estoy usando el módulo Archive :: Tar de Perl. El problema es que extrae todo a la memoria y lo archiva y luego escribe en el sistema de archivos, por lo que existe una limitación en el tamaño máximo de archivo que se puede archivar. La mayoría de las veces dice sin memoria. En el caso de GNU tar, toma una porción de archivo, lo archiva y lo escribe en la memoria para que pueda manejar archivos de cualquier tamaño. ¿Cómo puedo hacer eso usando el módulo Perl's Archive :: Tar?

¿Fue útil?

Solución

Parece que hay un módulo diferente que no utiliza una estructura en memoria: Archivo :: Tar :: Transmitido . La desventaja es que requiere que tar esté disponible en el sistema en el que se ejecuta. Aún así, es mejor que el alquitrán de títeres.

Otros consejos

Parece que Archive :: Tar :: Wrapper es tu mejor apuesta. No lo he probado yo mismo, pero utiliza el ejecutable tar de su sistema y no mantiene los archivos en la memoria.

Contrariamente a Chas. La respuesta de Owen, Archive :: Tar :: Streamed does mantiene los archivos en la memoria y no usa el tar de su sistema. En realidad, utiliza Archive :: Tar internamente, pero procesa un archivo a la vez ( aprovechando el hecho de que los archivos de alquitrán pueden concatenarse). Esto significa que Archive :: Tar :: Streamed puede manejar archivos más grandes que la memoria, siempre que cada archivo individual en el archivo quepa en la memoria. Pero eso no es lo que pediste.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top