Для создания архива нужно указать tar соответствующее действие, что делается с помощью ключа -c. Кроме того, для упаковки содержимого в файл необходим ключ -f. Далее укажем сначала имя будущего архива, а затем те файлы, которые хотим упаковать. tar -cf txt.tar *.txt Эта команда упакует все файлы с расширением txt в архив txt.tar. Так и создается простейший архив без сжатия. Для использования сжатия не нужно запускать что-либо еще, достаточно указать tar, каким архиватором следует сжать архив. Для двух самых популярных архиваторов gzip и bzip2 ключи будут -z и -j соответственно. tar -cvzf files.tar.gz ~/files упакует папку ~/files со всем содержимым в сжатый с помощью gzip архив. tar -cvjf files.tar.bz2 ~/files создаст аналогичный архив, используя для сжатия bzip2. Ключ -v включает вывод списка упакованных файлов в процессе работы. К сожалению, более продвинутой индикации хода процесса (например, указания степени готовности в процентах) в tar не предусмотрено. Для этого используйте графические архиваторы (например, Xarchiver) или пользуйтесь средствами файл-менеджера. Помимо gzip и bzip2 можно использовать, например, lzma (ключ –lzma) или xz (ключ -J), при этом соответствующий архиватор должен быть установлен в системе.
Действие «распаковка» задается с помощью ключа -x. И тут снова потребуется ключ -f для указания имени файла архива. Также добавим ключ -v для визуального отображения хода процесса. tar -xvf /path/to/archive.tar.bz2 распакует содержимое архива в текущую папку. Альтернативное место для распаковки можно указать с помощью ключа -C: tar -xvf archive.tar.lzma -C /path/to/folder
Просмотр содержимого архива Для просмотра содержимого архива используйте следующую команду: tar -tf archive.tar.gz Она выведет простой список файлов и каталогов в архиве. Если же добавить ключ -v, будет выведен подробный список с указанием размера, прав доступа и прочих параметров (так же, как по ls -l)
Прочие возможности tar предоставляет множество полезных возможностей. Например, можно указать файлы и каталоги, которые не будут включены в архив, добавить файлы в существующий архив, взять список объектов для запаковки из текстового файла и много что ещё. Во всем многообразии опций как всегда поможет разобраться man tar или же
tar –help
Опции tar tar создает и манипулирует потоковыми архивными файлами.
Первая опция tar это индикатор состояния: -c Создает новый архив содержащий указанные файлы.
-r Похож на -c, только новые строки добавляются к архиву (опция работает только с некомпрессироваными архивами содержащихся в регулярных файлах). Требует опции -f. -t Выводит содержимое архива на стандартный вывод. -u Похож на -r, но новые строки добавляются только в том случае если они содержат дату изменения более новую, нежели находящаяся в архиве. Данная опция работает только в нескомпрессированых архивах хранящихся в регулярных файлах. Требует опции -f. -x Распаковывает на диск из архива. Если файл с тем же именем содержится более одного раза в архиве, каждая копия будет распакована, причем более поздняя копия заместит собой более раннюю. В -c, -r, или -u режимах, каждой указанный файл или директория добавляется к архиву в порядке указания в командной строке. По умолчанию, содержимое каждой директории так же архивируется. В режиме распаковки или списка, вся командная строка читается и парсируется прежде, чем архив будет открыт. Имена путей или шаблонов в командной строке показывают, какие файлы в архиве должны быть обработаны. Стиль шаблонов схож со стилем шаблонов shell'а.
@archive (только c и r режим) Указаный архив открывается и записи в нем будут применены к текущему архиву. Простой пример: tar -c -f - newfile @original.tar записывает новый архив на стандартный вывод содержащий файл newfile и все записи из original.tar. Для контраста, tar -c -f - newfile original.tar создает новый архив только с двумя записями. Подобно, tar -czf - –format pax @- читает архив из стандартного ввода (чей формат определяется автоматически) и конвертирует его в компрессированый архив gzip pax формата на стандартный вывод. Таким образом tar может быть использован для конвертирования архивов из одного формата в другой.
-b blocksize Указывает размер блока, в 512 байтовых записях, для ленточного накопителя. Как правило, данный аргумент необходим только тогда, когда происходит чтение или запись на ленточный накопитель, и обычно не нужен даже тогда когда размер блока по умолчанию 20 записей(10240 байт) что очень распространено.
-C directory В режиме c и r, данная опция меняет директорию прежде чем добавит следующие файлы. В режиме x директория меняется после открытия архива, но прежде распаковки содержимого из архива.
–check-links (-W check-links)(только c и r режимы). Выводит предупреждающее сообщение до тех пор, пока все ссылки на каждый файл не будут заархивированы.
–exclude pattern (-W exclude=pattern) Не обрабатывать файлы или директории, которые совпадают с указанным шаблоном. исключения имеют приоритет над шаблонами или именами файлов, указанных в командной строке.
–format format (-W format=format)
(только режим c) Использует указанный формат для создания архива. Поддерживает все типы форматов включая ``cpio, ``pax
, ``shar, и ``ustar
. Другие форматы могут так же поддерживаться.
-f file Читать архив или записать архив в указанный файл. Именем файла может являться - для стандартного вывода или ввода.
–fast-read (-W fast-read)(только режимы x и t) Распаковывает или показывает только первое содержимое архива, которое совпадает с шаблоном или именем файла. Выходит сразу после того как совпал каждый указанный шаблон или имя файла. По умолчанию архив всегда читается до конца, с этого момента могут попадаться множественные записи с одинаковыми именами и, по соглашению, поздние записи перезапишут более ранние. Эта опция предоставляет оптимизацию производительности.
-H (только режим c и r) Следует по символическим ссылкам в командной строке; цель на которую указывает ссылка будет зархивирована, а не сама ссылка.
-h (только режим c и r) тоже что -L
-I тоже что -T.
–include pattern (-W include=pattern) Обрабатывать только файлы или директории которые совпадают с указанным шаблоном. все исключения указанные в опции –exclude, имеют преимущество над включениями. Если включения не указаны, все строки обрабатываются по умолчанию. Опция –include особенно полезна, при фильтрации архивов. Например, команда: tar -c -f new.tar –include='*foo*' @old.tgz создает новый архив new.tar содержащий только строки из old.tgz содержащий строку `foo'.
-j (только режим c) Сжимает получившийся архив при помощи bzip2. В режиме извлечения или списка, эта опция игнорируется. -k (только режим x) Не перезаписывать существующие файлы. В частности, если файл появляется чаще чем один раз в архиве, поздние копии будут перезаписаны более ранними копиями.
-L (только режим c и r) Следовать всем символическим ссылкам. Обычно, сами ссылки архивируются. С этой опцией, вместо этого, будет заархивирована цель ссылки.
-l Если указана опция окружения POSIXLY_CORRECT, это синоним для опции –check-links. Иначе, будет выведена ошибка. Пользователи, которые желают совместимости с GNU tar должны использовать вместо этого опцию –one-file-system.
-m (только режим x) Не извлекать время модификации. По умолчанию, время модификации установлено во время когда сохранялся архив.
-n (только режим c,r и u) Не архивировать содержимое директорий рекурсивно.
–newer date (-W newer=date) (только режим c,r и u) Только включая файлы и директории более новые чем указанная дата. –newer-mtime date (-W newer-mtime=date) (только режим c,r и u) Так же как –newer, за исключением того что опция сравнивает записи mtime вместо записей ctime.
–newer-than file (-W newer-than=file) (только режим c,r и u) Только включает файлы и директории более новые, чем указанный файл. Сравниваются записи ctimes.
–newer-mtime-than file (-W newer-mtime-than=file) (только режим c,r и u) Так же как и –newer-than, за исключением того что сравниваются записи mtime вместо ctimes
–nodump (-W nodump) (только режим c и r) Учитывает флаг файла nodump, пропуская этот файл. –null (-W null) (использовать с -I, -T, или -X) Имена файлов или шаблоны разделяются null символами, а не символом новой строки. Это часто используется для чтения вывода имен файлов опцией -print0 для find.
-O (только режимы x и t) В режиме распаковки (-x), файлы будут записаны на стандартный вывод вместо записи на диск. В режиме списка (-t) список файлов будет записан на stderr, вместо обычного стандартного вывода.
-o (только режим x) Использовать пользователя и группу пользователей запускающих программу, вместо тех которые указаны в архиве. Это не существенно, до тех пор пока опция -p не определена, и программа не запущена пользователем root. В этом случае, режимы файлов из архива будут восстановлены, но ACL или информация о владельце восстановлена не будет.
–one-file-system (-W one-file-system) (только режим c,r и u) Не пересекать точки монтирования.
-P Соблюдать имена пути. По умолчанию абсолютное имя пути (то которое начинается с символа /) имеет впереди слеш, который удаляется при создании архива или при распаковке. -p (только режим x) Соблюдать файловые разрешения. Попытки восстановить полные разрешения, включая владельца, режимы файлов, флаги файлов и ACL, если они доступны для каждой записи извлекаемой из архива. –strip-components count (-W strip-components=count) (только режимы x и t) Удаляет указанные номера из элементов пути. Имена пути с меньшим количеством элементов будут пропущены. -T filename В режиме x или t, tar будет читать список имен которые должны быть распакованы из filename. В режиме c, tar будет читать имена которые заархивированы из filename. -U (только режим x) Разлинковать файлы перед их созданием.
-v Подробный вывод. В режимах создания и распаковки, tar покажет каждое имя файла который читается или записывается в архив.
-W longopt=value Длинная опция (предваряемая –) напрямую поддерживается только в системах которые имеют функцию getopt_long.
-w Спрашивает подтверждение для каждого действия.
-X filename Читает список исключаемых шаблонов, из указанного файла. -y (только режим c) Сжимает получившийся архив с помощью bzip2.
-z (только режим c) Сжимает получившийся архив с помощью gzip2.
Следующий пример создает новый архив, назваемый file.tar.gz, который содержит 2 файла source.c и source.h: tar -czf file.tar.gz source.c source.h
Для просмотра подробной таблицы содержимого этого архива: tar -tvf file.tar.gz
Для извлечения всех записей из архива: tar -x
Для перемещения файловых иерархий, вызовите tar так tar -cf - -C srcdir . | tar -xpf - -C destdir либо более традиционно cd srcdir ; tar -cf - . | (cd destdir ; tar -xpf -) В режиме создания, список файлов и директорий которые должны быть так же заархивированы, могут включать команды смены директорий в форме -Cfoo/baz и включаемые архивы в форме @archive-file. например, командная строка tar -c -f new.tar foo1 [color=brown]@old.tgz[/color] -C/tmp foo2 создаст новый архив new.tar. tar прочитает файл foo1 из текущей директории и добавит его к выходному архиву. затем он прочтет каждую запись из файла old.tgz и добавит эти записи в выходной архив. Наконец, он сменит директорию /tmp и добавит foo2 к выходному архиву.
опции –newer и –newer-mtime поддерживают разнообразные спецификации времени и даты, включая ``12 Mar 2005 7:14:29pm, ``2005-03-12 19:14
, ``5 minutes ago, and ``19:14 PST May 1
.