Команда tar: архивация, распаковка и сжатие файлов в Linux

По умолчанию в системах Unix/Linux включен встроенный архиватор tar, позволяющий запаковывать/распаковывать архив и выполнять много других операций с заархивированными файлами. В его функционал не входит компрессия, но он отлично работает с такими утилитами, как Gzip и BZip2 – с помощью них и выполняется сжатие файлов.
В сегодняшней статье мы подробно разберем основные функции команды tar, а также рассмотрим, как работать с архивами в Linux-системе.
Tar: основные функции и синтаксис
Начнем с синтаксиса – он довольно прост. Если вы когда-либо работали в консольном окне, то вопросов возникнуть не должно. Создание нового архива выполняется следующей строчкой кода:
Распаковка файлов тоже выполняется просто:
Основные опции:
- -A, —concatenate – позволяет добавить уже существующий архив к другому;
- -c, —create – создает новый архив и записывает в него файлы;
- -d – расшифровывается как -diff или -delete, где первая команда проверяет различия между архивами, вторая – удаляет данных из архива;
- -r, append – добавляет новые файлы в конец заархивированного документа;
- -t, —list – разрешает посмотреть содержимое архива, формат аналогичен ls –l; если файлы не указаны, то выводит информацию обо всех файлах;
- -u, —update – обновление файлов в созданном архиве с тем же наименованием;
- -x, —extract – распаковывает файлы из заархивированного документа.
Мы также можем использовать особые параметры, относящиеся к каждой опции:
- -c dir, —directory=DIR – перед тем как выполнить операцию, директория будет изменена на dir;
- -f file, —file – выводит результат в file;
- -p, —bzip2 – сохраняет все права доступа;
- -v – расшифровывается как -verbose или -totals: выводит всю информацию о текущем процессе и показывает сведения об уже завершенном процессе.
Как мы говорили ранее, tar также хорошо взаимодействует с утилитами сжатия. Для их использования предназначены отдельные опции:
- -a, -auto-compress – выбирает программу для сжатия данных;
- -I, -use-compress-program=PROG – позволяет фильтровать архив с помощью утилиты PROG, для которой требуется использование опции -d;
- -j, -bzip2 – сжимает архив с помощью программы bzip2;
- -J, -xz – сжимает архив с помощью программы XZ;
- -Izip – сжимает архив с помощью программы Lzip;
- -Izma – сжимает архив с помощью программы Izma;
- -z, -gzip, -gunzip, -ungzip – сжимает архив с помощью программы GZIP;
- -Z, -compress, -uncompress – использование компрессии.
У команды tar есть еще много возможностей – чтобы их посмотреть, достаточно в консольном окне ввести команду tar —help. О том, как воспользоваться наиболее важными опциями и поработать с архивацией данных, мы поговорим в следующем разделе.
Как воспользоваться архиватором tar
Для работы с архиватором будем использовать сборку Kali Linux. Данный алгоритм подойдет и для других версий Unix/Linux, поэтому можете просто следовать инструкциям, чтобы прийти к тому же результату.
Создать новый архив или распаковать уже созданный мы можем двумя путями: воспользоваться необходимыми командами через консоль либо использовать встроенный архиватор ручным способом. Давайте рассмотрим оба варианта и посмотрим, как с их помощью можно создать новый архив, посмотреть его содержимое, распаковать данные и провести их сжатие.
Архивируем файлы
Чтобы добавить один или несколько файлов в архив через консольное окно, нам потребуется сначала прописать пути, чтобы система понимала, откуда брать файлы. Сделать это довольно просто: указываем в консоли путь до директории, в которой находятся файлы. В нашем случае это /home/kali/.

Для архивации вводим команду типа:

В результате будет создан архив в исходной папке – перейдем в нее и убедимся, что все прошло корректно:

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

Как видите, создать tar-архив в Linux совсем не сложно. Если вам нужно заархивировать несколько документов через консоль, то просто пропишите их имена с использованием пробела.
Распаковываем tar-файлы
В данном случае нам также потребуется в консольном окне перейти в нужную директорию. Как только пути будут прописаны, можно вводить команду для разархивации:

Таким образом будут получены файлы, находящиеся в архиве. Также мы можем их достать и ручным способом – для этого достаточно кликнуть правой кнопкой мыши по файлу и нажать на «Извлечь здесь».
Как работать со сжатием файлов
Напоминаю, что tar не сжимает файлы, а только добавляет их в архив. Для уменьшения размера архивируемых файлов потребуется дополнительно воспользоваться такими утилитами, как bzip2 и gzip. Они хорошо взаимодействуют с tar, поэтому в консольном окне достаточно прописать несколько новых значений. В ручном режиме сжатие файлов выполняется с помощью расширения .tar.bz2 или .tar.gz.
Итак, для сжатия в bzip2 переходим через консоль в нужную директорию и прописываем следующую команду:

Чтобы использовать gzip, другую утилиту для сжатия, вводим следующее:

Для распаковки файлов такого типа используйте:
Ручной способ аналогичен созданию обычного архива, только необходимо указать расширение .tar.bz2 либо .tar.gz.

Распаковать файлы самостоятельно тоже просто – для этого нужно кликнуть правой кнопкой по архиву и выбрать «Извлечь здесь».
Как посмотреть содержимое архива
Мы можем посмотреть, что находится в архиве без его распаковки. В консоли для этого необходимо ввести команду такого типа:

Обратите внимание, что под командой отобразилось название «document1» – это файл, находящийся в архиве. Если файлов несколько, то каждый будет прописан в новой строке.
Для просмотра архива без использования консоли достаточно кликнуть двойным щелчком мыши по архиву. После этого отобразится новое окно, в котором будет показан весь список файлов.
Заключение
Сегодня мы рассмотрели основные методы архивации, распаковки и сжатия файлов с помощью команды tar. Это простой инструмент, который отлично взаимодействует с утилитами сжатия bzip2 и gzip. Надеюсь, что теперь вам будет легко работать с архивами в системе Linux. Спасибо за внимание!
Использование tar в Linux и FreeBSD для работы с архивами
Утилита командной строки tar используется для работы с архивами в операционных системах на базе UNIX. С ее помощью можно архивировать данные и оптимизировать использование дискового пространства.
Создание и распаковка архивов
Рассмотрим общий синтаксис для создания и распаковки архивов.
Создать
Создание выполняется с ключом c. Синтаксис следующий:
tar -c<опции> <новый архивный файл> <что сжимаем>
tar -czvf archive.tar.gz /home/dmosk
* в данном примере будет создан архив archive.tar.gz домашней директории пользователя (/home/dmosk)
** где z — сжать архив в gzip (без этого параметра, tar не сжимает, а создает так называемый тарбол); c — ключ на создание архива; v — verbose режим, то есть с выводом на экран процесса (очень удобно для наблюдением за ходом работы, но в скриптах можно упустить); f — использовать файл (обязательно указываем, так как в большей степени работаем именно с файлами).
Распаковать
Распаковка выполняется с ключом x с синтаксисом:
tar -x<опции> <архивный файл>
tar -xvf archive.tar.gz
Форматы
Утилита tar позволяет работать с архивами различных форматов. Рассмотрим их кратко.
tar -cf archive.tar.gz /files
Распаковка .gz файла:
tar -xf archive.tar.gz
* при возникновении ошибки This does not look like a tar archive, можно воспользоваться командой gzip -d archive.tar.gz.
tar -xvjf archive.tar.bz2
* ключ j отвечает за работу с bz2.
Если система ругается на bzip2, значит нужно его установить:
yum install bzip2
apt-get install bzip2
pkg install bzip2
* соответственно, для CentOS (RPM based), Ubuntu (deb based), FreeBSD (BSD based).
Если видим ошибку tar: Unrecognized archive format, воспользуемся следующей командой:
bzip2 -d archive.tar.bz2
tar -xvzf archive.tar.gzip
* ключ z отвечает за работу с gzip.
TGZ — tar-архив, сжатый с помощью утилиты gzip. По сути, это тот же tar.gz, и работа с ним ведется такими же командами. Рассмотрим примеры работы с данным форматом.
Для создания архива tgz выполняем:
tar -czf archive.tgz /files
Распаковывается, как gzip:
tar -xzf archive.tgz
Это формат сжатия данных с помощью алгоритма LZMA. Для работы с ним устанавливаем:
apt install xz-utils
* на Debian / Ubuntu.
* на Rocky Linux / CentOS.
Теперь можно пользоваться.
tar -cpJf archive.tar.xz /home/user
tar -xpJf archive.tar.xz
Описание ключей tar
Команды для действия
| Ключ | Описание |
|---|---|
| -A | Добавление файлов в архив. |
| -c | Создание нового архивного файла. |
| -d | Показать отличающиеся данные между каталогом-исходником и содержимым архива. |
| —delete | Удалить файлы внутри архива. |
| -r | Добавить файлы в конец архива. |
| -t | Показать содержимое архива. |
| -u | Добавить файлы, которых нет в архиве. |
| -x | Извлечь файлы из архива. |
* нельзя использовать несколько вышеперечисленных ключей в одной команде.
Дополнительные опции
| Ключ | Описание |
|---|---|
| —atime-preserve | Оставить прежнюю метку времени доступа для файла. |
| -b N | Задать размер блока N x 512. |
| -C | Смена каталога. По умолчанию, используется тот, в котором мы находимся. |
| —checkpoint | Показать имена папок при чтении архивного файла. |
| -G | Использование старого формата инкрементального резервирования при отображении или извлечения. |
| -g | Использование нового формата инкрементального резервирования при отображении или извлечения. |
| -h | Не дублировать символьные ссылки. Только файлы, на которые указывают эти симлинки. |
| -i | Игнорировать блоки нулей. |
| -j | Использование bzip2. |
| —ignore-failed-read | Игнорировать не читаемые файлы. |
| -k | При распаковке, существующие файлы не заменяются соответствующими файлами из архива. |
| -L N | Смена магнитной ленты после N*1024 байт. |
| -m | При извлечении игнорировать время модификации объекта. |
| -M | Многотомные архивы. |
| -N DATE | Сохранять только более новые файлы относительно DATE |
| -O | Направление извлекаемого на стандартный вывод. |
| -p | Извлечение защищенной информации. |
| -P | Не отбрасывает начальный слэш (/) из имен. |
| -s | Сортировка файлов при извлечении. |
| —preserve | Аналогично -ps |
| —remove-files | Удалить исходные файлы после добавления в архив. |
| —same-owner | Сохранить владельца при извлечении. |
| —totals | Вывод байт при создании архива. |
| -v | Протоколирование действий — отображение списка объектов, над которыми происходит действие. |
| -V NAME | Создание архива на томе с меткой NAME. |
| —version | Показать версию tar. |
| -w | Требовать подтверждения для каждого действия. |
| -W | Проверка архива после записи. |
| —exclude FILE | Исключить файл FILE. |
| -X FILE | Исключить файлы FILE. |
| -Z | Фильтрует архив с помощью compress. |
| -z | Использование gzip. |
* актуальный список опций можно получить командой man tar.
Примеры
Рассмотрим некоторые сценарии использования tar.
Распаковать в определенную папку
tar -C /home/user -xvf archive.tar.gz
* ключ -C используется для указания папки, куда необходимо распаковать файлы из архива.
Распаковка без вложенной папки
Такой способ можно использовать для распаковки в заранее подготовленный каталог. Будет некий эффект переименовывания каталога или аналог «Распаковать здесь»:
tar -C /home/admin/mytar -xvf admin.tar.gz —strip-components 1
* каталог /home/admin/mytar заранее должен быть создан; —strip-components 1 пропустит одну вложенную папку внутри архива.
Указать конкретный файл или каталог для распаковки
Если у нас большой архив, но извлечь нужно конкретный файл или каталог, то можно указать его через пробел после указания файла с архивом. Синтаксис:
tar zxf <путь до архива> <что извлечь>
Рассмотрим пример. Напомним, что можно посмотреть содержимое архива с помощью опции t:
tar tf /backup/samba.tar.gz
Теперь можно распаковать архив:
tar -zxf /backup/samba.tar.gz mail
* предположим, что внутри архива samba.tar.gz есть что-то и каталог mail. Извлечем мы только последний.
Исключение файлов по маске
Если необходимо пропустить некоторые файлы, вводим команду с ключом —exclude:
tar —exclude='sess_*' -czvf archive.tar.gz /wwwsite
* в данном примере мы создадим архив archive.tar.gz, в котором не будет файлов, начинающихся на sess_.
Также можно исключить несколько файлов или папок, добавляя несколько опций exclude:
tar —exclude='/data/recycle' —exclude='*.tmp' -zcf /backup/samba/2021-08-29.tar.gz /data/
* в данном примере мы исключим папку recycle и файлы, которые заканчиваются на .tmp
Работа с архивами, разбитыми на части
Разбить архив на части может понадобиться по разным причинам — нехватка места на носителе, необходимость отправки файлов по почте и так далее.
Чтобы создать архив, разбитый на части, вводим команду:
tar -zcvf — /root | split -b 100M — root_home.tar.gz
* данная команда создаст архив каталога /root и разобьет его на части по 100 Мб.
В итоге мы получим, примерно, такую картину:
root_home.tar.gzaa root_home.tar.gzac root_home.tar.gzae
root_home.tar.gzag root_home.tar.gzai root_home.tar.gzab
root_home.tar.gzad root_home.tar.gzaf root_home.tar.gzah
Чтобы собрать архив и восстановить его, вводим команду:
cat root_home.tar.gz* | tar -zxv
Создание tar из отдельных файлов с последующим его архивированием
Мы можем собрать файл tar, добавляя по очереди в него файлы, после чего создать сжатый архив. Предположим, у нас 3 файла: file1, file2, file3.
Сначала создадим tar-файл с первым файлом внутри:
tar -cf ./my_archive.tar ./file1
Следующими двумя командами мы добавим в архив файлы file2 и file3:
tar -rf ./my_archive.tar ./file2
tar -rf ./my_archive.tar ./file3
Сожмем содержимое tar-файла:
gzip < ./my_archive.tar > ./my_archive.tar.gz
Файл tar можно удалить:
rm -f my_archive.tar
Tar не работает с zip-архивами. В системах UNIX для этого используем утилиты zip и unzip. Для начала, ставим нужные пакеты:
yum install zip unzip
apt-get install zip unzip
pkg install zip unzip
* соответственно, для RPM based, deb based, BSD based.
zip -r archive.zip /home/dmosk
* создает архив каталога /home/dmosk в файл archive.zip.
Windows
В системе на базе Windows встроенными средствами можно распаковать только ZIP-архивы. Для работы с разными архивами рекомендуется поставить архиватор, например 7-Zip.
How to Extract/Unzip Tar Gz File in Linux

In this article, we will explain how to extract tar.gz files using the tar command.
Tar is an abbreviation for tape archive , and it is one of the most commonly used commands for dealing with compressed archive files.
Gz is an abbreviation for gunzip. It is a particular compression algorithm. Most Linux distributions have the tar command pre-installed. The tar program compresses and extracts files using various methods.
Tar supports a broad range of compression methods, including gzip, bzip2, xz, lzip, and others.
Table of Contents
Extract a tar.gz file quickly
In this section, we’ll show you a simple method to extract any tar.gz file. In the later sections, you will get to know the tar command in a little bit more detail.
To extract all the files inside of a tar.gz file, use the -xf flag with the tar command:
Here, x stands for extract and f stands for the archive file. The tar command detects the compression type automatically and extracts it. You don’t need to specify the file/compression type to extract. For example, you could extract a tar.gz file with the same command.
Alternatively, you can also use the graphical user interface (GUI) instead of the command line. Just right click on the tar gz archive file you want to extract and click on the Extract option.
Basic usage of tar command
The basic syntax of the tar command is as follows:
The tar command has a plethora of options in the help menu. You can access it by typing in tar —help .
We’ll be using the main operation mode most of the time. This mode has some basic options for creating and extracting archives. Below are three of these options:
You’ve already seen the usage of the -x flag for extracting an archive. Let’s take a look at some other options now.
Listing the contents of a tar gz archive
If you just wanted to take a look at the contents of an archive, you would use the -t or —list flag:
We can get more details about the archive using the -v or —verbose flag with the command. The output will include file/folder details such as owner, permissions, etc. Let’s see it in action:
As you can see, the file permissions and owner along with the file size is shown in the output.
Extract specific files/folders from a tar gz archive
Imagine you need a specific file from a large archive. In this case, you might want to only extract that specific file from the archive. This can be done by simply specifying the filename (and file path) followed by the extract command.
Let’s see how to extract only the required files:
Check what files are in the working directory with the ls command:
I have already shown you the content of the compressed_file.tar.gz in the previous section (listing files). Now let’s extract file and file.log from this archive. We’ll be using the following command:
Here, we used the -xf flag with the command to extract the compressed_file.tar.gz archive. We also mentioned file and file.log indicating which files to extract. Now let’s check our working directory again with the ls command:
As you can see, the file and file.log have been extracted from the compressed_file.tar.gz archive. You can also extract specific directories/folders by using this method. The command would look like the following:
Here, dir1, dir2, and dir3 are the names of the directories/folders you want to extract from the archive.
Use wildcards for specific file extensions
Let’s say you want to extract all the files that have the same extension from inside of an archive. In this case, you could use a wildcard like *.extension format. Here, you can use your specific extension. For example, if you wanted to extract all the text files, you would use *.txt . Let’s see this in action:
First, let’s take a look at our current directory:
Let’s take a look at the files inside the test.tar.gz archive:
Now, we have two text files that end in .txt extension. Let’s extract these two files with the *.txt wildcard. We also need to use the —wildcards flag to enable the wildcard option:
Now let’s check our current directory to see if it worked:
From the output, we can see that those two text files were extracted. This is how you can use wildcards to extract all the files with a specific extension.
Change the location of extraction
If you want to change the location where the extracted files will occupy, you can use the -C flag and specify the location of your choice. Here’s an example of how to do it:
Here, after the -C flag, I’ve specified the path for saving the extracted files. The path /home/new/ is marked in color. Let’s take a look at the contents of the directory:
As you can see, the compressed_file.tar.gz file extracted in the /home/new/ location.
Conclusion
We demonstrated how to extract a tar.gz archive in this lesson. In summary, you can extract the archive with the tar command with the -xf parameter. When possible, utilize the graphical user interface if you’re still unclear how to use the tar command.
Some examples may be found in the tar command’s help menu. If you have any queries, please leave them in the comments section.
Как распаковать 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
Пояснение опций
x — распаковать архив.
v — Verbose-режим (вывод на экран дополнительной информации во время распаковки).
f — выполнить распаковку архива из файла.
j — вызвать bzip2 для распаковки архива.
z — вызвать gzip
J — вызвать xz
Распаковка в определенную директорию
Чтобы распаковать архив в определенную директорию используется опция -C или —directory , например:
Примечание: директория должна существовать.
Заключение
Мы рассмотрели базовый набор команд, который можно использовать для распаковки различных видов tar-архивов. Существуют также еще некоторые типы архивов, но они менее распространены.