9 примеров как использовать tar архиватор в Linux и Freebsd

2 марта 2016 г.

9 примеров как использовать tar архиватор в Linux и FreebsdНа Unix (это Linux, Freebsd и др.) системах команда tar является главной архивирующей утилитой. Понимание множества опций этой команды позволит вам мастерски манипулировать архивами.

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

Создание архива с использованием команды tar

Создание и распаковка tar архива производится с использованием опции cvf. Вот так выглядит базовая команда для создания архива:

$ tar cvf archive_name.tar dirname/ 

Разберем каждый ключ из опции по отдельности:

  • c – создание нового архива
  • v – вывод списка файлов к обработке
  • f – имя файла архива

Чтобы создать архив сжатый gzip нужно использовать опцию cvzf. Предыдущая опция cvf абсолютно не использует какого-либо сжатия. Чтобы использовать gzip сжатие добавьте опцию z как показано ниже:

$ tar cvzf archive_name.tar.gz dirname/
  • z – упаковывает архив используя gzip сжатие

Лично предпочитаю всегда оставлять опцию cvf без изменений и только лишь в конце дописывать необходимые ключи если потребуется сжатие. Например, cvfz или cvfj. Так легче запоминается.

Теперь давайте создадим архив используя bzip2 сжатие:

$ tar cvfj archive_name.tar.bz2 dirname/
  • j – упаковывает архив используя bzip2 сжатие

gzip или bzip2? Сжатие и распаковка архива при помощи bzip2 занимает несколько больше времени и сам архив получается меньшего размера.

Создание tar архива с текущей датой в имени архива

Если вы создаете бекап, то очень важно знать, когда именно он был создан. Проще всего узнать об этом можно из его имени.

tar -cvf archive-$(date +%Y%m%d).tar.gz dirname/

Распаковка архива с использованием команды tar

Для распаковки архива используется команда xvf:

$ tar xvf archive_name.tar
  • x – извлечение файлов из архива

Чтобы распаковать tar.gz используйте опцию xvfz:

$ tar xvfz archive_name.tar.gz

Чтобы распаковать архив сжатый bzip2 используйте опцию xvfj:

$ tar xvfj archive_name.tar.bz2

Просмотр файлов в архиве tar

Чтобы посмотреть содержимое tar архива используйте опцию tvf.

$ tar tvf archive_name.tar

Чтобы посмотреть содержимое архива сжатого при помощи gzip воспользуйтесь опцией tvfz

$ tar tvfz archive_name.tar.gz

Чтобы посмотреть содержимое архива сжатого при помощи bzip2 воспользуйтесь опцией tvfj

$ tar tvfj archive_name.tar.bz2

Извлечение отдельного файла из tar, tar.gz, tar.bz2 архивов

Бывают ситуации, когда из большого архива требуется извлечь только 1 файл:

$ tar xvf archive_file.tar path/to/file

Для сжатых gzip и bzip2 архивов соответственно используйте:

$ tar xvfz archive_file.tar.gz path/to/file

$ tar xvfj archive_file.tar.bz2 path/to/file

Извлечение отдельной папки из tar, tar.gz, tar.bz2 архивов

Извлечение отдельной папки, включая все подпапки и файлы, производится также, как и извлечение отдельного файла:

$ tar xvf archive_file.tar /path/to/dir/

Чтобы извлечь несколько папок из архива указывайте их имена по порядку:

$ tar xvf archive_file.tar /path/to/dir1/ /path/to/dir2/

Для сжатых архивов то же самое, только с использованием соответственно дополнительных ключей:

$ tar xvfz archive_file.tar.gz /path/to/dir/

$ tar xvfj archive_file.tar.bz2 /path/to/dir/

Извлечение группы файлов из tar, tar.gz, tar.bz2 архивов с использованием регулярных выражений

Чтобы извлечь группу файлов по определенных признакам в имени вы можете использовать регулярные выражения. К примеру, давайте извлечем из архива все файлы с расширением html.

$ tar xvf archive_file.tar --wildcards '*.pl'

Добавление файла или папки в существующий архив tar

Для добавления нового файла или папки в уже существующий архив используйте опцию -r:

$ tar rvf archive_name.tar newfile

Добавление папки проводится по аналогии:

$ tar rvf archive_name.tar newdir/

Помните, что операция добавления файлов и папок работает только для не сжатых tar архивов.

Определение tar размера архива перед его созданием

Следующая команда позволяет определить размер tar.gz или tar.bz2 архива перед его созданием (в KB)

tar -czf - /directory/to/archive/ | wc –c

$ tar -cjf - /directory/to/archive/ | wc -c
Теги: рубрика FreeBSD, Linux
  • Похожие статьи
  • Предыдущие из рубрики