2014-11-13 2 views
0

Я хочу прочитать содержимое одного файла из tar-файла .tar.gz. Файл находится в корневом каталоге tarball. Есть ли простой способ сделать это? Я думал о чем-то вроде data = Tarball.open('myfile.tar.gz').entry('/myentry').content Есть ли такая вещь?Ruby: Прочтите один файл из tarball

+0

Отъезд [TarReader] (http://www.ruby-doc.org/stdlib-1.9.3/libdoc/rubygems/rdoc/Gem/Package/TarReader/Entry.html) – NorCalKnockOut

+0

Я видел это, но на самом деле не узнал, как его использовать, проверит его, хотя – Kilobyte

ответ

0

Проблема в том, что .tar.gz не является структурированным файлом; это всего лишь файл .tar, который прошел через алгоритм сжатия, который ничего не знает о tar. Таким образом, единственный способ вернуть данные из него - сначала разобрать все.

Как альтернатива с меньшим пространством, но более эффективная с точки зрения времени, вы можете рассмотреть возможность взлома tar-файла, повторного сжимания каждого файла по отдельности и последующего переноса их в архив (несжатый). Затем извлечение отдельных файлов легко с помощью жгута archive-tar, и вы можете просто добавить шаг декомпрессии для восстановления оригиналов.

+0

Проблема: у меня есть tarball, сделанный другим приложением, и я хочу извлечь метаданные, которые хранятся в одном файле внутри него - как можно быстрее , так как я выполняю пакетную обработку – Kilobyte

 Смежные вопросы

  • Нет связанных вопросов^_^