Как я могу tar файлы больше физической памяти, используя Perl Archive :: Tar? - PullRequest
6 голосов
/ 17 марта 2009

Я использую модуль Perl Archive :: Tar . Проблема в том, что он вытягивает все в память и выполняет архивирование, а затем записывает в файловую систему, поэтому существует ограничение на максимальный размер файла, который может быть заархивирован. В большинстве случаев это говорит из памяти. В случае GNU tar он берет кусок файла, архивирует его и записывает в память, чтобы он мог обрабатывать файлы любого размера. Как я могу это сделать с помощью модуля Perl Archive :: Tar.

Ответы [ 2 ]

12 голосов
/ 17 марта 2009

Похоже, Архив :: Tar :: Wrapper - ваша лучшая ставка. Я сам не пробовал, но он использует исполняемый файл вашей системы tar и не хранит файлы в памяти.

В отличие от Час. Ответ Оуэна: Archive :: Tar :: Streamed сохраняет файлов в памяти, а не использует tar вашей системы. На самом деле он использует Archive :: Tar для внутреннего использования, но обрабатывает по одному файлу за раз (используя тот факт, что архивы tar могут быть объединены). Это означает, что Archive :: Tar :: Streamed может обрабатывать архивы больше памяти, если каждый отдельный файл в архиве помещается в памяти. Но это не то, что вы просили.

6 голосов
/ 17 марта 2009

Похоже, есть другой модуль, который не использует структуру в памяти: Archive :: Tar :: Streamed . Недостатком является то, что требуется, чтобы tar был доступен в системе, в которой он запущен. Тем не менее, это лучше, чем смола для марионеток.

...