Введение
Команда tar
используется для создания tar-архивов путем преобразования группы файлов в архив. Он также имеет возможность извлекать tar-архивы, просматривать список файлов, включенных в архив, добавлять дополнительные файлы в существующий архив, а также выполнять различные другие операции.
Изначально Tar был разработан для создания архивных файловых архивов на магнитной ленте, поэтому он и получил свое название Tape ARchive.
В этом руководстве мы покажем вам, как использовать команду tar
для извлечения, составления списка и создания tar-архивов с помощью практических примеров и подробных объяснений наиболее распространенных параметров tar.
Синтаксис команды Tar
Есть две версии tar, tar BSD и tar GNU с некоторыми функциональными различиями между ними. Большинство систем Linux поставляются с предустановленной по умолчанию GNU tar.
Общий синтаксис команды tar
следующий:
tar [OPERATION_AND_OPTIONS] [ARCHIVE_NAME] [FILE_NAME(s)]
OPERATION
- Допускается и требуется только один аргумент операции. Наиболее часто используемые операции:
--create
(-c
) — Создать новый tar-архив.--extract
(-x
): извлечь из архива весь архив или один или несколько файлов.--list
(-t
) — Отображает список файлов, включенных в архив
OPTIONS
. Наиболее часто используемые операции:
--verbose
(-v
) — Показать файлы, обработанные командой tar.--file=archive=name
(-f archive-name
) — указывает имя файла архива.ARCHIVE_NAME
— имя архива.FILE_NAME(s)
— разделенный пробелами список имен файлов для извлечения из архива. Если не указан, извлекается весь архив.
При запуске команд tar вы можете использовать длинную или короткую форму операций и параметров tar
. Длинные формы более удобочитаемы, а короткие формы быстрее набираются. Параметрам длинной формы предшествует двойное тире ( --
). Вариантам краткой формы предшествует одиночный тире ( -
), который можно опустить.
Создание архива Tar
Tar поддерживает широкий спектр программ сжатия, таких как gzip
, bzip2
, lzip
, lzma
, lzop
, xz
и compress
. При создании сжатых tar-архивов принято добавлять суффикс компрессора к имени файла архива. Например, если архив был gzip
с помощью gzip, он должен называться archive.tar.gz.
Чтобы создать tar-архив, используйте параметр -c
, за которым следует параметр -f
и имя архива.
Например, чтобы создать архив с именем archive.tar
, состоящий из файлов с именами file1
, file2
, file3
, вы должны выполнить следующую команду:
tar -cf archive.tar file1 file2 file3
Вот эквивалентная команда, использующая параметры длинного формата:
tar --create --file=archive.tar file1 file2 file3
Архивы могут быть созданы из содержимого одного или нескольких каталогов или файлов. По умолчанию каталоги рекурсивно архивируются, если не указан параметр --no-recursion
.
В следующем примере будет создан архив с именем user_backup.tar
в каталоге /home/user
:
tar -cf backup.tar /home/user
Используйте параметр -v
, если вы хотите увидеть обрабатываемые файлы.
Создание архива Tar Gz
Gzip — самый популярный алгоритм сжатия tar-файлов. При сжатии архивов tar с помощью gzip имя архива должно заканчиваться на tar.gz
или tgz
.
Опция -z
указывает tar сжимать архив с использованием алгоритма gzip
по мере его создания. Например, чтобы создать архив tar.gz из определенных файлов, используйте следующую команду:
tar -czf archive.tar.gz file1 file2
Создание архива Tar Bz2
Другой популярный алгоритм сжатия tar-файлов — bzip2. При сжатии tar-архивов с помощью bzip2 имя архива должно заканчиваться на tar.bz2
или tbz
.
Когда указана опция -j
, tar будет использовать алгоритм bzip2
для сжатия архива. Следующая команда создаст архив tar.bz2
из указанных файлов:
tar -cjf archive.tar.bz2 file1 file2
Список tar-архивов
При использовании с параметром --list
( -t
) команда tar
будет отображать содержимое архива tar без его извлечения. Команда ниже выведет список содержимого файла archive.tar
:
tar -tf archive.tar
На выходе будут перечислены имена всех файлов в архиве:
file1
file2
file3
Чтобы получить дополнительную информацию, такую как владелец файла, размер файла, временная метка, используйте параметр --verbose
( -v
):
tar -tvf archive.tar
-rw-r--r-- noviello/users 0 2018-09-08 01:19 file1
-rw-r--r-- noviello/users 0 2018-09-08 01:19 file2
-rw-r--r-- noviello/users 0 2018-09-08 01:19 file3
Извлечение архива Tar
Большинство файлов, хранящихся в Linux, заархивированы и сжаты в формате tar или tar.gz. Важно знать, как извлечь эти файлы из командной строки.
Чтобы извлечь tar-архив, используйте параметр --extract
( -x
), за которым следует имя архива:
tar -xf archive.tar
Также принято добавлять параметр -v
для печати имен файлов, которые необходимо извлечь.
tar -xvf archive.tar
Извлеките архив Tar в другой каталог
По умолчанию tar извлекает содержимое архива в текущий рабочий каталог. Используйте параметр --directory
( -C
), чтобы извлечь архивные файлы в определенный каталог:
Например, для извлечения содержимого архива в каталог /opt/files
можно использовать:
tar -xf archive.tar -C /opt/files
Извлечение архивов Tar Gz и Tar Bz2
При извлечении сжатых архивов, таких как tar.gz
или tar.bz2
, нет необходимости указывать параметр распаковки. Команда аналогична извлечению с помощью команды tar
:
tar -xf archive.tar.gz
tar -xf archive.tar.bz2
Извлечь определенные файлы из архива Tar
Иногда вместо извлечения всего архива может потребоваться извлечь из него только несколько файлов.
Чтобы извлечь один или несколько конкретных файлов из tar-архива, добавьте через пробел список имен файлов для извлечения после имени архива:
tar -xf archive.tar file1 file2
При извлечении файлов вам необходимо указать точные имена, включая путь, напечатанный --list
( -t
).
Извлечение одного или нескольких каталогов из архива эквивалентно извлечению файлов:
tar -xf archive.tar dir1 dir2
Если вы попытаетесь извлечь несуществующий файл, появится сообщение об ошибке, подобное следующему:
tar -xf archive.tar README
tar: README: Not found in archive
tar: Exiting with failure status due to previous errors
Извлечение файлов из архива Tar с использованием подстановочного знака
Чтобы извлечь файлы из архива на основе шаблона подстановочных знаков, используйте параметр --wildcards
и укажите шаблон в кавычках, чтобы он не интерпретировался оболочкой.
Например, чтобы извлечь файлы, имена которых заканчиваются на .js
(файл Javascript), вы можете использовать:
tar -xf archive.tar --wildcards '*.js'
Добавление файлов в существующий tar-архив
Чтобы добавить файлы или каталоги в существующий tar-архив, используйте --append
( -r
).
Например, чтобы добавить файл с именем newfile
в archive.tar, выполните:
tar -rvf archive.tar newfile
Удаление файлов из архива Tar
Используйте операцию --delete
для удаления файлов из архива.
В следующем примере показано, как удалить файл file1
из archive.tar:
tar --delete -f archive.tar file1
Вывод
Чаще всего команда tar
используется для создания и извлечения архива tar. При извлечении архива используйте команду tar -xf
, за которой следует имя архива, а для создания нового используйте tar -czf
и имя архива.
Дополнительные сведения о команде tar см. на странице документации Gnu tar.