Linux tar unpack one file

Extract 1 file from tar.gz with bash

Is it possible to programmatically pull a single file from a decently sized .tar.gz without extracting the entire tarball to disk? Essentially I need to get inside large tar.gz files over the network and extract 1 small text file. It seems somewhat over-the-top to pull and extract the tarball to disk, then pull the file out, then delete everything else. Also I’m going to be doing this recursively (e.g. package dependencies, each text file points to more tar.gz’s), so the less network traffic and cpu cycles I can get away with, the better.

@Matt Joiner: It’s not really bash-related. It’s a usage question for a common system utility that can be called from any shell, not just bash. But yes, programming in bash is indeed program, despite what you may have heard sometimes here.

Yeah, I thought about SU but it’s inside a relatively complex bash script, and it’s going to be run via machine not by a user, so I figured it was a little more SO than SU.

Well, I don’t personally mind; not about to start a crusade or anything. But I’ve seen questions plenty more programming-related migrated to SU. (And really, though you’re using it for programming, the answer doesn’t depend on that.) Oh well. Rep for me!

2 Answers 2

From the man page, to extract blah.txt from foo.tar.gz:

(And this goes on superuser, of course, but hey, prompt answers are nice too.)

With modern versions of GNU tar, you don’t have to specify the ‘z’ option on extract — it will deduce that itself (and similarly with the ‘j’ option for bzip2 compressed files). When creating the file, you do need the option to tell tar what to create — so symmetry does no harm whatsoever.

@tj111: if the file name in the tar file is xyz/pqr/abc.txt , that is what you specify in the command line. You can use shell-style metacharacters too: xyz/pqr/* will extract all the files in all the sub-directories under xyz/pqr . Just be wary of whether the shell expands the ‘*’ for you — use quotes to stop it doing so.

I echo Jefromi’s answer, with the addition of including the path to the file if you have directories in the tar file (this may seem obvious to some, but it wasn’t initially clear to me how to specify the directory structure).

For example, if you did the tar at the src/ directory, and blah.txt was under release1/shared/, you would go back to the src/ directory (if you want it untarred at the same place)

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

If you don’t remember the directory structure of your tar file (I’m a little disorganized and sometimes forget where I did the tar), you can always

Читайте также:  Кэширующий прокси для linux

to see the contents, canceling out (Ctrl+C) once you get an idea of your directory structure.

Источник

How to Extract or Unzip tar.gz Files from Linux Command Line

A tar.gz file contains several compressed files to save storage space, as well as bandwidth during the downloading process. The .tar file acts as a portable container for other files and is sometimes called a tarball. The .gz part of the extension, stands for gzip, a commonly-used compression utility.

In this guide you will learn how to extract or unzip files from tar.gz files using command-line in Linux.

tutorial on extracting files using tar.gz from command line

  • Access to a command-line/terminal window
  • The tar utility (included by default)
  • The gzip utility (included by default)

Extracting tar.gz Files in Linux

Using gzip Utility

Gzip by default, extracts the file in the current directory. In this example the file is located in the Documents directory.

Below, we have used the file named test.txt. Use the name of the file you want to compress instead.

to compress a single file with gzip enter the command in your terminal window:

After zipping the file, enter the command ls to confirm that the file has been compressed. The output confirms that the file now has a .gz extension.

confirming that the file has been compressed

To decompress a file, use the gunzip command:

Again, use the ls command to confirm the extension of the file.

example file has been unzipped

To compress all the .txt files in a particular directory, type in:

The * sign is a wildcard, which means “any number of any characters.” This command would work on any (and all) filenames with the extension .txt.

This technique can be used on other file types including gzip.txt, .jpg, and .doc.

When you run gzip on multiple files at once, the system generates a compressed copy of each file. This can clutter up a directory quickly! Fortunately, there’s another tool to manage multiple files at once.

Using tar Utility

A tar.gz file is a combination of a .tar file and a .gz file. It is an archive file with several other files inside it, which is then compressed.

You can unzip these files the same way you would unzip a regular zipped file:

output in the linux terminal when extracting a tar.gz file

The basic command is tar , followed by four options:

  • x – instructs tar to extract the files from the zipped file
  • v – means verbose, or to list out the files it’s extracting
  • z – instructs tar to decompress the files – without this, you’d have a folder full of compressed files
  • f – tells tar the filename you want it to work on

To list the contents of a .tar file before you extract it, enter:

To instruct tar to put the extracted unzipped files into a specific directory, enter:

tar –xvzf documents.tar.gz –C /home/user/destination

how to unzip a tar.gz file to a specific destination in Linux

To create a tar.gz file, use the following command:

tar –cvzf documents.tar.gz ~/Documents

Similar to the tar command, it condenses all the content located in the /home/user/Documents directory into a single file, called documents.tar.gz. The addition of the –z option is what signals tar to compress the files.

Читайте также:  Убрать вывод команды linux

To add multiple files to a tar file, use the command:

tar -cvf documents.tar ~/Documents

This copies the contents of your Documents folder into a single file, called documents.tar. The options -cvf work as follows:

  • c – creates a new archive
  • v – verbose, meaning it lists the files it includes
  • f – specifies the name of the file

To extract the files from a .tar file, enter:

This command extracts and lists all files from the documents.tar file. The -x option tells tar to extract the files.

Command that extracts all files from a zipped document

You can also use xargs with tar to create a tar.gz archive and populate it with files from the find command.

Note: Some graphical interfaces include a tool for managing tar.gz files without the command-line. Simply right-click the item you want to compress, mouseover compress, and choose tar.gz. You can also right-click a tar.gz file, mouseover extract, and select an option to unpack the archive.

This tutorial explains how to use the tar tool, the gzip tool, and how to utilize them together to work with tar.gz files. You are now ready to extract or unzip any tar.gz file.

Источник

Как распаковать tar bz2 xz gz архивы в Linux

Для распаковки tar-архивов через командную строку используется утилита tar.

Полезно знать, что архивы в формате tar имеют расширение файлов .tar . Также в Linux распространены архивы, которые имеют дополнительное сжатие другими программами. Например, архивы .tar.bz2 , .tar.gz и другие. Все эти архивы можно распаковать утилитой tar.

Распаковка tar

Для распаковки архива в формате .tar в текущую директорию выполните команду:

Распаковка tar.bz2, tar.bzip2, tbz2, tb2, tbz

Распаковка tar.xz, txz

Распаковка tar.gz, tgz

Распаковка tar.lzma

tar --lzma -xvf archive.tar.lzma

Пояснение опций

x — распаковать архив.
v — Verbose-режим (вывод на экран дополнительной информации во время распаковки).
f — выполнить распаковку архива из файла.
j — вызвать bzip2 для распаковки архива.
z — вызвать gzip
J — вызвать xz

Распаковка в определенную директорию

Чтобы распаковать архив в определенную директорию используется опция -C или —directory , например:

tar xvf archive.tar -C /to/directory

Примечание: директория должна существовать.

Заключение

Мы рассмотрели базовый набор команд, который можно использовать для распаковки различных видов tar-архивов. Существуют также еще некоторые типы архивов, но они менее распространены.

Смотрите также

  • Gentoo
  • GNOME
  • GRUB
  • Ubuntu
  • Внешний вид
  • Игры Linux
  • Интернет и сети
  • Командная строка
  • Настройка Linux
  • Оборудование и драйвера
  • Программы Linux
  • Файловая система
  • Шрифты
  • Общие темы
  • Руководство по Ubuntu Linux для начинающих
  • Elementary OS
  • ArchLinux
  • Команды Linux

Новое в галерее

Новые комментарии

Комментарии

Постоянная ссылка на комментарий

Постоянная ссылка на комментарий

Постоянная ссылка на комментарий

Постоянная ссылка на комментарий

Читайте также:  Просмотр прав файла linux

Очевидно, эта статья не для завсегдатаев сайта, а для поисков и новичков, которые будут гуглить подобную информацию

Постоянная ссылка на комментарий

Постоянная ссылка на комментарий

-a, —auto-compress
Use archive suffix to determine the compression program.

Постоянная ссылка на комментарий Родительский комментарий aNDy

Ключ -a работает при создании архивов, например

tar -cvaf doc.tar.xz ~/Documents/

Тут главное не ошибиться с расширением. Например, если указать «.tar.bz» — создастся обычный tar без сжатия («.tar.bz2» — Ok)
Возможно, именно поэтому в своё время мне показалось, что оно меня игнорирует, и я решил, что это ключ для распаковки : )

А для распаковки дискового файла с правильным расширением достаточно просто

без указания метода сжатия.

Проверено для gz, bz2, xz, lz, lzma

Постоянная ссылка на комментарий

Юрий было бы не плохо опубликовать статью про температуру процессора, как её регулировать, или как она регулирается и т.п., много вопросов и мало ответов.

Постоянная ссылка на комментарий

Очень просто. Нажимаем правой кнопкой мыши на значок архива, появляется контекстное меню и в нем есть кнопка «Распаковать» (способ подходит для файловых менеджеров Dolphin и Thunar)

Постоянная ссылка на комментарий Родительский комментарий KittyBlanc

$ wget http://linux.palemoon.org/datastore/release/palemoon-unstable-latest.linux-x86_64-gtk2.tar.xz -qO- | tar -xvJ

Как сделать в Dolphin или Thunar?

Постоянная ссылка на комментарий Родительский комментарий aNDy

Постоянная ссылка на комментарий Родительский комментарий KittyBlanc

Врёшь. Не написал.
Нет ничего про распаковку скачиваемого потока.

Постоянная ссылка на комментарий Родительский комментарий aNDy

Постоянная ссылка на комментарий

Кхе кхе, прошу прощения в графическом режиме уже запретили?! огонь добывать с помощью палки и камня прикажите?

Постоянная ссылка на комментарий Родительский комментарий Незнайка

Постоянная ссылка на комментарий

unpack () <
if [[ -f $1 ]]; then
case $1 in
*.tar.bz2) tar xjfv $1 ;;
*.tar.gz) tar xzfv $1 ;;
*.tar.xz) tar xvJf $1 ;;
*.bz2) bunzip2 $1 ;;
*.gz) gunzip $1 ;;
*.rar) unrar x $1 ;;
*.tar) tar xf $1 ;;
*.tbz) tar xjvf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*) echo «I don’t know how to extract ‘$1′» ;;
esac
else
case $1 in
*help) echo «Usage: unpack ARCHIVE_NAME» ;;
*) echo «‘$1’ is not a valid file» ;;
esac
fi
>
# function to create archives
# EXAMPLE: pack tar file
pack () <
if [ $1 ]; then
case $1 in
tar.bz2) tar -cjvf $2.tar.bz2 $2 ;;
tar.gz) tar -czvf $2.tar.bz2 $2 ;;
tar.xz) tar -cf — $2 | xz -9 -c — > $2.tar.xz ;;
bz2) bzip $2 ;;
gz) gzip -c -9 -n $2 > $2.gz ;;
tar) tar cpvf $2.tar $2 ;;
tbz) tar cjvf $2.tar.bz2 $2 ;;
tgz) tar czvf $2.tar.gz $2 ;;
zip) zip -r $2.zip $2 ;;
7z) 7z a $2.7z $2 ;;
*help) echo «Usage: pack TYPE FILES» ;;
*) echo «‘$1’ cannot be packed via pack()» ;;
esac
else
echo «‘$1’ is not a valid file»
fi
>

Источник

Оцените статью
Adblock
detector