Администрирование FreeBSD, Linux, ... tar: практика использования Wed, November 13 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


tar: практика использования Печать
Добавил(а) microsin   

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

[Упаковка и распаковка]

Ниже показана команда упаковки файлов и папок в архив gzip, без сохранения атрибутов доступа. Вместо имен файлов и папок можно указывать wildcard-шаблоны наподобие *.c, *, *.h?? и т. п. Опция c задает создание архива (compress), z тип компрессии (.gz), f указывает файл как места назначения (file).

$ tar -czf имя_архива.tar.gz файл1 файл2 папка1 папка2 ...

Ниже показана распаковка. Запомнить команду просто, здесь вместо c указывается x, что означает извлечение из архива (eXtraction). Если путь_назначения не указан, то содержимое архива будет извлечено в текущий каталог.

$ tar -xzf имя_архива.tar.gz путь_назначения

Можно вместо z можно указать другой вид компрессии: маленькая j задает bzip2 (.bz2), заглавная J задает xz (.xz). Дефис '-' при для опций можно не указывать.

Распаковка с выводом списка распакованных файлов:

$ tar -xvf img.tar
fwu.sh rootfs uImage fwu_ver hw_ver md5.txt

[Как вывести содержимое архива tar.gz]

Иногда бывает необходимо "заглянуть" в архив, чтобы найти какой-то конкретный файл. Сделать это можно следующими командами, в которых указана опция t [1]. Опция v задает подробный вывод информации (verbose):

$ tar -ztvf имя_архива.tar.gz
$ tar -tvf имя_архива.tar.gz
$ tar -tvf имя_архива.tar.gz шаблон_поиска

Если нужно просмотреть содержимое не сжатого tar-архива, то можно пропустить некоторые опции.

Пример 1. Просмотр списка содержимого не сжатого tar-архива file.tar:

$ tar -tvf file.tar

Пример 2. Просмотр списка содержимого архива file.tar.gz:

$ tar -ztvf file.tar.gz

Пример 3. Просмотр списка содержимого архива file.tar.bz2:

$ tar -jtvf file.tar.bz2

Пример 4. Поиск определенных файлов. Ниже в примере показан поиск файлов на языке C, у которых расширение *.c в архиве projects.tar.bz2.

$ tar -tvf projects.tar.bz2 --wildcards '*.c'

Конечно, выводимый список можно фильтровать с помощью | grep маска, например:

$ tar -tvf projects.tar.bz2 | grep '*.c'

[Как распаковать только один файл (или только одну папку)]

Иногда архив большой, распаковывается целиком долго, а нужно извлечь только один файл (или папку с файлами). Сначала командой с опцией t и фильтрацией grep надо узнать полное имя файла, как он сохранен в архиве [1]. Например, нас интересует папка rtl819x:

$ tar -jtvf file.tar.bz2 | grep rtl819x

Предположим, что путь до нужной нам папки sdk/rtl819x, тогда извлечь её можно командой [2]:

$ tar -zxvf file.tar.gz sdk/rtl819x

[Краткий справочник]

-f filename : использовать имя архива filename.

-j : фильтрация архива по bzip2, используется для распаковки tar-файлов .bz2.

-J (заглавная J): фильтрация архива по xz, используется для распаковки tar-файлов .xz.

-t : вывести список содержимого архива.

-v : вывод подробного списка обрабатываемых файлов.

--wildcards : использовать шаблон для сопоставления с именами файлов. Вместе с wildcards dы должны использовать одну из опций из '-Acdtrux', '--delete' или '--test-label'.

-x filename : распаковка архива.

-z : фильтрация архива по gzip, с которой мы можем открыть сжатый (т. е. распаковать) tar-файл .gz.

Краткую справку по всем опциям можно получить командой tar --help, подробную справку командой man tar.

[Ссылки]

1. List the contents of a tar or tar.gz file site:cyberciti.biz.
2. How to extract specific file(s) from tar.gz site:stackexchange.com.

 

Добавить комментарий


Защитный код
Обновить

Top of Page