tar -- управление ленточными архивами

Версия для печатиОтправить другуPDF version
BSDTAR(1)               Справочник основных команд FreeBSD              BSDTAR(1)

НАЗВАНИЕ
	tar -работа и манипуляция ленточными архивами
СИНТАКИС
	tar [bundled-flags <args>] [<file> | <pattern> ...]
	tar {-c} [options] [files | directories]
	tar {-r | -u} -f archive-file [options] [files | directories]
	tar {-t | -x} [options] [patterns]

ОПИСАНИЕ
	tar создает и манипулирует потоковыми архивными файлами. Первая форма комманд содержит
	опцию ``bundled''. Такое использование делается в целях совместимости по историческим
	соображениям. За подробной информацией обращайтесь к разделу COMPATIBILITY. Остальные
	формы команд показывают предпочтительное использвание. 

	Первая опция tar это индикатор состояния из следующего списка:

	-c	Создает новый архив содержащий указанные файлы.
	-r	Похож на -c, только новые строки добавляются к архиву. Учтите, что опция
		работает только с некомпрессироваными архивами содержащихся в регулярных
		файлах. Требует опции -f.
	-t	Выводит содержимое архива на стандартный вывод.
	-u	Похож на -r, но новые строки добавляются только в том случае если они содержат
		дату изменения более новую, нежели находящаяся в архиве. Данная опция работает
		только в нескомпрессированых архивах хранящихся в регулярных файлах. Требует 
		опции -f.
	-x	Распаковывает на диск из архива. Если файл с тем же именем содержится более
		одного раза в архиве, каждая копия будет распакована, причем более поздняя
		копия заместит собой более ранние.
	В -c, -r, или -u режимах, каждай указанный файл или директория добавляется к архиву в
	порядке указания в командной строке. По умолчанию, содержимое каждой директории так же
	архивируется.

	В режиме распаковки или списка, вся командная строка читается и парсируется прежде, чем
	архив будет открыт. Имена путей или шаблонов в командной строке показывают,какие файлы
	в архиве должны быть обработаны. Стиль шаблонов схож со стилем шаблонов shell'а как
	описано в документе на tcsh(1).
ОПЦИИ
	Если не указано иначе, опции применяются во всех режимах.

	@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''. Другие
		форматы могут так же поддерживаться; смотрите libarchive-formats(5) для
		получения детальной информации о неподдерживаемых, в настоящее время, форматах.

	-f file
		Читать архив или записать архив в указанный файл. Именем файла может быть "-"
		для стандартного вывода или ввода. Если опция не определена, по умолчанию 
		будет использован ленточный накопитель. (Во FreeBSD, ленточный накопитель по
		умолчанию это /dev/sa0)
	--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(1). В
		режиме извлечения или списка, эта опция игнорируется. Учтите следующее,
		в отличии от других tar утилит, эта распознает компрессию 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) Только включая файлы и директории более новые чем
		указанная дата. Эта опция сравнивает записи ctimes.
	--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	Соблюдать имена пути. По умолчанию абсолютное имя пути (то которое начинается
		с символа /) имеет впереди слеш, который удаляется при создании архива или при
		распаковке. Так же tar откажется распаковывать записи в архиве, чьи имена пути
		содержат .. или чьи целевые директории будут изменены символической ссылкой.
		Эта опция отменяет данное поведение.

	-p	(только режим x) Соблюдать файловые разрешения. Попытки восстановить полные
		разрешения, включая владельца, режимы файлов, флаги файлов и ACL, если они
		доступны для каждой записи извлекаемой из архива. По умолчанию, только что
		созданные файлы, принадлежат пользователю запустившему tar, режимы файла
		восстанавливаются для только что созданых регулярных файлов, и все другие типы
		записей получают разрешения по умолчанию. Если tar запущен пользователем root,
		по умолчанию будет восстановлен владелец, если опция -o не определена.
	--strip-components count (-W strip-components=count)
		(только режимы x и t) Удаляет указанные номера из элементов пути. Имена пути
		с меньшим количеством элементов будут пропущены. Учтите, что имена пути
		редактируются после проверки включений/исключений шаблонов, но до проверок
		безопасности.

	-T filename
		В режиме x или t, tar будет читать список имен которые должны быть распакованы
		из filename. В режиме c, tar будет читать имена которые заарихиврованы из
		filename. Специальное имя ``-C'' в строке вызовет изменение директории
		указанной следующей строкой. Имена заканчиваются символом новой строки, если
		не указана опция --null. Опция --null так же выключит спецальную обработку
		строк содержащих ``-C''.
	-U	(только режим x) Разлинковать файлы перед их созданием. Без этой опции, tar
		перезапишет существующие файлы без сохранения существующий жестких ссылок. С
		этой опцией существующие жесткие ссылки будут сломаны, так же как и любые
		символические ссылки могут изменить местонахождение распаковываемых файлов.

	-v	Подробный вывод. В режимах создания и распаковки, tar покажет каждое имя файла
		который читается или записывается в архив. В режиме списка, tar произведет вывод
		соответствующий команде ls(1). Дополнительные опции -v предоставят дополнительный
		вывод.
	-W longopt=value
		Длиная опция (предваряемая --) напрямую поддерживается только в системах которые
		имеют функцию getopt_long(3). Опция -W может использоваться для доступа к длиным 
		операциям в системах, которые не поддерживают эту функцию.

	-w	Спрашивает подтверждение для каждого действия.
	-X filename
		Читает список исключаемых шаблонов, из указанного файла. смотрите опцию --exclude
		для более детальной информации об обработке исключений.

	-y	(только режим c) Сжимает получившийся архив с помощью bzip2(1). Режиме распаковки
		или списка, эта опция игнорируется. учтите следующее, в отличие от других
		реализаций tar, эта утилита распознает компрессию bzip2 автоматически, когда
		читает архив.
	-z	(только режим c) Сжимает получившийся архив с помощью gzip2(1). Режиме распаковки
		или списка, эта опция игнорируется. учтите следующее, в отличие от других
		реализаций tar, эта утилита распознает компрессию gzip2 автоматически, когда
		читает архив.

ОКРУЖЕНИЕ
	Следующие переменные изменят запуск tar:

	LANG	Используемая локаль. Смотрите environ(7) для более детальной информации.
	POSIXLY_CORRECT
		Если эта переменная окружения определена, опция -l интерпретируется в 
		соответствии с ISO/IEC 9945-1:1996 (``POSIX.1'').

	TAPE	Ленточный накопитель по умолчанию. опция -f отменяет эту переменную.
	TZ	Временая зона используемая при отображении дат. Смотрите environ(7) для
		дополнительной информации.

ФАЙЛЫ
	/dev/sa0 ленточный накопитель по умолчанию. если не отменено окружение TAPE опцией -f.
СТАТУС ВЫХОДА
	Утилита tar завершается с 0 при успешном выходе, и >0 если возникли ошибки.

ПРИМЕРЫ
	Следующий пример создает новый архив, назваемый 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'', 
	и ``19:14 PST May 1''.

СОВМЕСТИМОСТЬ
	Формат связанных аргументов поддерживается для совместимости с историческими реализациями.
	Он содержит инициируемое слово (без символа - в начале) в котором каждый символ указывает
	на опцию. Аргументы следуют как раздельные слова. Порядок документов должен совпадать с
	порядком следования символов в связаном слове. Например,
		tar tbf 32 file.tar
	определяет флаги t, b, and f. Флаги b и f - оба требуют аргументов, поэтому должны быть
	2 дополнительных аргумента в командной строке. Аргумент 32[color] аргумент
	флага [color=brown]b, и file.tar аргумент флага f. Опции режима c, r, t, u, и x, и
	опции b, f, l, m, o, v, и w выполняют с SUSv2.
	Для максимальной переносимости, скрипты которые вызывают tar должны использовать связные
	аргументы описаные выше, должны ограничить себя режимами c, t, и x и 
	опциями b, f, m, v, и w.

	В системах, которые поддерживают getopt_long(), дополнительные длиные опции
	могут увеличить совместимость с другими реализациями tar.
БЕЗОПАСНОСТЬ
	Определенные проблемы безопасности рапространены во многих архиваторах, включая tar. 
	Частично, тщательно обработанные архивы могут попросить извлеч файлы в место отличное
	от целевой директории. Потенциально это может быть использовано для того что бы невольно
	заставить пользователя перезаписать файлы, которые он не хотел перезаписывать. Если
	архив извлекается суперпользователем, любой файл в системе может быть потенциально
	перезаписан. Это может случиться по трем причинам. Хотя tar и имеет механизмы для защиты
	друг друга, здравомыслящие пользователи должны знать о реализациях:

	o	Записи в архивах имеют абсолютные имена пути. По умолчанию, tar удаляет
		начальные / символы из имен файлов прежде чем восстановит их, для предотвращения
		этой проблемы.

	o	Записи в архивах могут иметь имена пути которые содержать .. . По умолчанию, tar
		не распакует файлы содержащие такие .. компоненты в именах пути.

	о	Записи в архивах могут могут использовать символические ссылки для восстановления
		файлов в других директориях. Архив может восстановить символическую ссылку в
		другую директорию, затем использовать эту ссылку для восстановления файла в эту
		директорию. Для защиты от этого, tar проверяет каждый распакованый путь на
		символические ссылки. Если последний элемент пути является символической ссылкой,
		он будет удален и замещен записью в архиве. Если указана опция -U, любая
		промежуточная символическая ссылка будет так же удалена. Если опции -U или -P не
		указаны, tar откажется распаковывать строку. Для защиты себя, вы должны опасаться
		любых архивов, которые поступают из недостоверных источников. Вы должны проверять
		содержимое архива
			tar -tf filename
		прежде, чем начнете распаковку. Вы должны использовать опцию -k для того что бы
		быть увереным что tar не перезапишет существующие файлы или опцию -U для удаления
		всех существующих файлов. Обычно вы не должны распаковывать архивы пока используете
		привелегии суперпользователя. Учтите, что опция -P отключает проверки безопасности
		tar'а и позволяет распаковать архивы с сохранением абсолютных имен пути, ..
		компонентами, или символическими ссылками на другие директории.

СМОТРИ ТАКЖЕ
	bzip2(1), cpio(1), gzip(1), mt(1), pax(1), shar(1), libarchive(3), 
	libarchive-formats(5), tar(5)
СТАНДАРТЫ
	На данный момент нет стандарта POSIX для команды tar он появился 
	в ISO/IEC 9945-1:1996 (``POSIX.1'') но был выброшен из IEEE Std 1003.1-2001 (``POSIX.1''). 
	Опции используемые данной реализацией были разработаны с учетом множества реализаций tar, 
	так же как и с учетом старой спецификации POSIX и текущей спецификации POSIX.

	Ustar и pax файловые форматы обмена были определены IEEE Std
	1003.1-2001 (``POSIX.1'') для команды pax.
ИСТОРИЯ
	Команда tar появилась в Седьмой Редакции Unix. Были некоторые другие реализации, многие из
	них расширяли формат файла. Реализация John Gilmore'а pdtar находящаяся в общем владении,
	в некотором роде повлияла и сформировала основы GNU tar. GNU tar был включен как часть
	стандартной системы tar в FreeBSD начиная с FreeBSD 1.0.Это полная новая реализация
	основанная на библиотеке libarchive(3).

ОШИБКИ
	POSIX и GNU жестко расходятся в том, какое значение несет опция -l. Из-за потенциальной
	угрозы, когда кто-то ожидает одного поведения а получает другое, опция -l преднамеренно
	отсутствует в данной реализации.
	Опция -C dir может отличатся от исторической реализации.

	Весь вывод архива написан в блоках корректного размера, даже если вывод был сжат. 
	Дополняет ли последний блок полный размер блока, зависит от формата выходного устройства.
	Для tar и cpio, последний выходной блок добавляется к полному размеру блока, если вывод
	был произведен на стандартный вывод или в символьное или блочное устройство, такое как
	ленточный накопитель. Если вывод был записан в файл, последний блок не добавляется.
	Многие утилиты сжатия, включая gzip(1) и bzip2(1) жалуются об отсутствии нулевого добавления
	в момент декомпрессии архива созданного tar'ом, но они распакуют его правильно. 

	Сжатие и 	декомпрессия реализовано внутри, поэтому много существенных отличий между сжатым
	выводом созданным
		tar -czf - file
	и созданым
		tar -cf - file | gzip
	
	По умолчанию нужно читать и записывать архивы на стандартный ввод/вывод, но традиция
	(и POSIX) утверждают другое. Режимы r и u требуют что бы архив был несжатым и находился в
	файле на диске. Другие архивы могут быть модифицированы используя режим c, с расширением
	@archive-file.
	
	Для архивации файла называемого @foo или -foo вы должны указать их как ./@foo или
	./-foo, соответственно.

	В режиме создания первые ./ всегда удаляются. Первый / удаляется, пока не будет
	указана опция -P.

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

	Конвертирование между различными архивными форматами (таких как tar или cpio) используя
	опцию @- может вызвать потерю информации (последствие несовместимых путей благодаря
	которым различные форматы архивов хранят информацию о жестких ссылках.
	Есть альтернативные длиные опции, для многих коротких опций которые преднамеренно
	не задокументированы.

FreeBSD 6.2                      15 Мая 2008                      FreeBSD 6.2
Ваша оценка: Нет Средняя: 5 (1 голос)

Вставай, Україно!

Литература

"Такой большой, а в SCSI веpишь" :)))