В этой статье мы покажем вам, как использовать утилиту Tar для извлечения и создания tar-архивов с помощью практических примеров и подробных объяснений наиболее распространенных параметров Tar.
Что такое Tar?
Команда tar
используется для создания архивов tar, путем преобразования группы файлов в архив. Она также имеет возможность извлекать архивы tar, отображать список файлов, включенных в архив, добавлять дополнительные файлы в существующий архив, а также различные другие виды операций.
Tar поддерживает широкий спектр программ сжатия , таких как gzip
, bzip2
, lzip
, lzma
, lzop
, xz
и compress
. При создании сжатых tar-архивов принято считать добавление суффикса компрессора к имени файла архива. Например, если архив был сжат с помощью gzip, он должен быть назван archive.tar.gz.
Tar был первоначально разработан для создания архивов при хранения файлов на магнитной ленте, поэтому он имеет свое название « T ape AR chive».
Существуют две версии tar, BSD tar и GNU tar с некоторыми функциональными отличиями. Большинство систем Linux поставляются с предустановленной GNU tar по умолчанию. Если у вас не установлен tar, рекомендуем сначало установить его следую нашей статьи как установить tar.gz в CentOS.
Синтаксис командной строки
Прежде чем перейти к использованию команды 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 Archive
Используйте оператор -c
для создания архива tar. Например, чтобы создать архивный файл с именем archive.tar
из файлов с именем file1
, file2
, file3
выполните следующую команду:
tar -cf archive.tar file1 file2 file3
Вот эквивалентная команда, использующая параметры длинной формы:
tar --create --file=archive.tar file1 file2 file3
В следующем примере будет создан архив backup.tar
из каталога /home/username
:
tar -cf backup.tar /home/username
Вы можете создавать архивы из содержимого одного или нескольких каталогов или файлов. По умолчанию каталоги архивируются рекурсивно, если не указан параметр --no-recursion
. Используйте параметр -v
, если хотите просмотреть файлы, которые обрабатываются.
Создание архива Tar Gz
Gzip – самый популярный алгоритм сжатия tar-файлов. При сжатии архивов tar с gzip имя архива должно заканчиваться либо tar.gz
или tgz
.
Чтобы создать архив tar.gz из заданных файлов, вы можете использовать следующую команду:
tar -czf archive.tar.gz file1 file2
Опция -z
сообщает tar сжать архив, используя алгоритм gzip
.
Создание архива Tar Bz2
Другим популярным алгоритмом сжатия tar-файлов является bzip2. При сжатии архивов tar с bzip2 имя архива должно заканчиваться либо tar.bz2
либо tbz
.
Когда указана опция -j
, tar будет использовать алгоритм bzip2
сжатия архива.
Следующая команда создаст архив tar.bz2
из заданных файлов:
tar -cjf archive.tar.bz2 file1 file2
Листинг архива Tar
Чтобы перечислить содержимое tar-архива, используйте операцию --list
( -t
).
tar -tf archive.tar
file1 file2 file3
Если вы укажете содержимое архива с помощью параметра --verbose
( -v
), tar будет печатать больше информации, например, владельца, размера файла, метки времени и т.д.:
tar -tvf archive.tar
-rw-r--r-- linuxize/users 0 2018-09-08 20:15 file1 -rw-r--r-- linuxize/users 0 2018-09-08 20:15 file2 -rw-r--r-- linuxize/users 0 2018-09-08 20:15 file3
Извлечение архива Tar
Для извлечения tar-архива используйте оператор --extract
( -x
) и укажите имя файла архива:
tar -xf archive.tar
Также обычно добавляется опция -v
для печати имен извлеченных файлов.
tar -xvf archive.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, используйте операцию --append
( -r
).
Например, чтобы добавить файл с именем newfile
в archive.tar, вы можете использовать:
tar -rvf archive.tar newfile
Удаление файлов из tar-архива
Используйте операцию --delete
для удаления файлов из архива.
Например, чтобы удалить файл с именем file1
из archive.tar, вы можете использовать:
tar --delete -f archive.tar file1
Вывод
К настоящему времени у вас должно быть хорошее понимание того, как создавать и извлекать архивы tar.