Извлеките 1 файл из tar.gz с ударом

Действительно ли возможно программно вытянуть единственный файл от прилично размерного .tar.gz, не извлекая весь tarball к диску? По существу я должен проникнуть внутрь больших tar.gz файлов по сети и извлечь 1 небольшой текстовый файл. Это кажется несколько чрезмерным, чтобы вытянуть и извлечь tarball к диску, затем вытащить файл, затем удалить все остальное. Также я собираюсь быть выполнением этого рекурсивно (например, зависимости от пакета, каждый текстовый файл указывает на большее количество tar.gz's), таким образом, чем меньше сетевого трафика и циклов CPU мне может сойти с рук, тем лучше.

13
задан tj111 12 August 2010 в 16:52
поделиться

2 ответа

Для извлечения файла blah.txt из foo.tar.gz из справочной страницы:

tar -xzf foo.tar.gz blah.txt

(И это, конечно, относится к суперпользователю, но, эй, быстрые ответы тоже хороши.)

21
ответ дан 1 December 2019 в 21:36
поделиться

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

Например, если вы сделали tar в каталоге src /, а файл blah.txt находился в каталоге release1 / shared /, вы вернетесь в каталог src / (если хотите, чтобы он был распакован в том же месте)

tar -xzf tar.gz release1/shared/blah.txt

Если вы не помните структуру каталогов вашего tar-файла (я немного дезорганизован и иногда забываю, где я сделал tar), вы всегда можете

tar -tzf tar.gz

увидеть содержимое, отменив (Ctrl + C) один раз вы получите представление о структуре ваших каталогов.

4
ответ дан 1 December 2019 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: