¿Cómo puedo tar archivos más grandes que la memoria física usando Perl's Archive :: Tar?
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?
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.