Ответ 1
На странице man, чтобы извлечь blah.txt из foo.tar.gz:
tar -xzf foo.tar.gz blah.txt
(И это касается суперпользователя, конечно, но эй, быстрые ответы тоже приятные.)
Можно ли программным образом вытащить один файл из файла с ограниченным размером .tar.gz, не извлекая весь архив на диск? По сути, мне нужно попасть в большие файлы tar.gz по сети и извлечь один маленький текстовый файл. Кажется, что несколько сверху, чтобы вытащить и извлечь tarball на диск, затем вытащить файл, а затем удалить все остальное. Кроме того, я буду делать это рекурсивно (например, зависимости пакетов, каждый текстовый файл указывает на большее количество tar.gz), поэтому чем меньше трафик сети и циклы процессора я могу избежать, тем лучше.
На странице man, чтобы извлечь blah.txt из foo.tar.gz:
tar -xzf foo.tar.gz blah.txt
(И это касается суперпользователя, конечно, но эй, быстрые ответы тоже приятные.)
Я повторяю ответ Jefromi, добавив в него путь к файлу, если у вас есть каталоги в файле tar (это может показаться некоторым очевидным, но мне было непонятно, как указать структуру каталогов),
Например, если вы сделали tar в каталоге src/, а blah.txt находилось в папке release1/shared/, вы вернетесь в каталог src/(если вы хотите, чтобы он не был открыт в одном месте)
tar -xzf tar.gz release1/shared/blah.txt
Если вы не помните структуру каталогов вашего файла tar (я немного дезорганизована и иногда забываю, где я сделал tar), вы всегда можете
tar -tzf tar.gz
чтобы увидеть содержимое, отменив его (Ctrl + C), как только вы узнаете о своей структуре каталогов.