Вперед Назад Содержание

7. КОНТРОЛИРОВАНИЕ ФОРМАТА АРХИВА

7.1 Обработка атрибутов файла *

--atime-preserve

Не изменяет время доступа к дампированным файлам.

-m

--modification-time

Не меняет время модификации файлов. При использовании этой опции tar оставляет время модификации файлов, которые он извлекает, соответствующим времени, когда файлы были извлечены, вместо того, чтобы присваивать ему время, записанное в архиве. Эта опция не имеет смысла с '--list'.

--same-owner

Сохраняет извлеченные файлы с тем же правом собственности.

-p

--same-permissions

--preserve-permissions

Извлекает всю информацию о защите. Эта опция заставляет tar устанавливать режимы (разрешения доступа) извлеченных файлов, как было записано в архиве. Если эта опция не используется, текущий umask устанавливает ограничения возможностей извлеченных файлов. Эта опция не имеет смысла с '--list'.

-s

--same-order

--preserve-order

Сортирует имена для извлечения в соответствующий архив. Эта опция сообщает tar, что список имен файлов, которые нужно занести в список или извлечь, сортируется в том же порядке, что и файлы в архиве. Это позволяет использовать большой список имен даже на маленькой машине, которая в другом случае не будет способна держать все эти имена в памяти. Такой отсортированный список можно легко создать с помощью применения 'tar -t' к архиву и редактирования его вывода. В современных компьютерных системах эта опция, наверно, не нужна.

--preserve

То же, что '--same-permissions' и '--same-order' одновременно. Опция '--preserve' не имеет краткого имени. Она эквивалентна '--same-permissions' и '--same-order' одновременно.

7.2 Выбор формата архива *

-V имя

--label=имя

Создает архив с именем тома "имя". Эта опция заставляет tar писать заголовок тоа в начале архива. Если используется '--multi-volume' ('-M'), каждый том архива имеет заголовок 'имя Volume n', где 1 соответствует первому тому, 2 - второму, и т.д.

-z

--gzip

--ungzip

Фильтрует архив через gzip. Эта опция работает на физических устройствах (ленточных и т.д.) и отдаленных файлах как на нормальных файлах, данные на такие устройства или с них или отдаленных файлов переблокируются другой копией программы tar для проведения заданного размера блока. По умолчанию используются коипрессионные параметры: если вам нужно их отменить, используйте опцию '--gzip' и выполните gzip. (Или задайте переменную среды 'GZIP'.) Если опция '--gzip' дана дважды, или используется опция '--compress-blocks', tar перемещает архив на границу следующего блока.

Это может использоваться на нескольких устройствах, что требует, чтобы все операции были умещались в определенный размер. Опция '--gzip' не работает с опцией '--multi-volume' или c командами '--update', '--append', '--concatenate', '--delete'. Будет неточностью сказать, что GNU tar работает во взаимодействии с gzip с помощью метода, похожего на zip. Естественно, tar и gzjp могут работать вместе с одного вызова, например:

tar cfz archive.tar gz subdir
для сохранения всего 'subdir' в gzip-ированный архив. Затем вы можете набрать:

tar xfz archive.tar.gz
для расширения и распаковки. Отличие в том, что уплотнен весь архив. С помощью zip члены архива архивируются индивидуально, а метод tar дает лучшее уплотнение. С другой стороны, можно посмотреть содержимое архива zip без его распаковки. А при использовании тандема tar и gzip вы должны распаковывать архив для того, чтобы посмотреть его содержимое. Однако это можно делать без места на диске, при помощи каналов:

tar tfz archive.tar gz
О разрушенных уплотненных архивах: у gzip'ированных файлов нет излишка для максимального уплотнения. Адаптивная природа схемы уплотнения значит, что таблицы уплотнения неявно распространены на весь архив. Если вы потеряли несколько блоков, динамичная конструкция таблиц уплотнения становится несинхронизированной, и невелик шанс, что вы сможете впоследствии обновить архив. Существуют предложения о потомном или пофайловом уплотнении в GNU tar. Это позволит просмотр содержимого без распаковки и десинхронизированное уплотнение каждого тома или файла в случае разрушенных архивов. Действуя так, мы можем освободить определенную часть уплотнения. Но тогда обновление может быть легче. Итак, есть и за, и против. Посмотрим.

-Z

--compress

--uncompress

Фильтрует архив через compress. Иначе - как '--gzip' ('-z').

--use-compress-program=программа

Фильтрует через prog (может принимать '-d').

7.3 Использование меньшего количества места при уплотнении.

Создание и чтение уплотненных архивов

'--compress'является индикатором архивов, хранящихся в уплотненном формате. Опция '--compress' используется при сохранении времени в сети и места в каналах, и когда мало памати. '--compress' заставляет tar уплотнять архив при его записи и распаковывать при чтении.

Чтобы выполнить уплотнение, tar выполняет утилиту compress. По умолчанию tar использует определенные параметры уплотнения. Если вы хотите их отменить, отмените опцию '--compress' и выполните утилиту compress. Используется вызов утилиты compress из самого tar, т.к. у нее нет доступа к удаленным ленточным устройствам.

Если недоступна утилита уплотнения, tar сообщает об ошибке.

'--compress-blocks' работает как '--compress', но при использовании в сочетании с '--create' также заставляет tar перемещать последний блок архива к границе следующего блока. Это используется на определенных устройствах при требовании, чтобы все операции умещались в заданный оазмер.

Заметьте: программа уплотнения может быть запатентована, и поэтому мы рекомендуем вам прекратить ее использовать. Мы надеемся, что в будущем будут другие программы уплотнения. Тогда мы изменим имя этой опции.

-Z

--compress

--uncompress

-z

Когда задана эта опция, tar уплотняет архив (при его записи) или распаковывает (при его чтении). Используется в сочетании с '--create', '--extract', '--list' и '--compare'.

'--compress-block'

'-z -z'

Действует как '--compress', но

Вы можете уплотнить архивы с помощью '--gzip'. tar использует программу gzip для уплотнения или распаковки архива при его записи или распаковке.

'--compress'. GNU Project не рекомендует вам использовать compress, потому что алгоритм его использования запатентован. Просто это будет посягательством на авторские права.

Вместо использования реальных ленточных устройств исользуйте '--gzip-block' или '--compress-block'.

Файл разрежен, если он содержит блоки нулей, существование которых записано, но для них не выделяется места на диске. Когда вы задаете опцию '--sparse' в сочетании с операцией '--create', tar при архивировании проверяет все файлы на разреженность. Если он находит разреженный файл, то использует разреженное представление файла в архиве.

dbm, содержащих много нулей. Эта опция сильно уменьшает место, необходимое для хранения такого архива.

Пожалуйста, всегда используйте '--sparse' при выполнении резервного копирования системы, чтобы избежать архивирования расширенных форм файлов, хранящихся в разреженном виде в системе. Даже если в вашей системе в данный момент нет разреженных файлов, они могут появиться в будущем. Если вы используете '--sparse' во время резервного копирования, вы можете быть уверены, что архив никогда не займет больше места на носителе, чем то, что файлы занимают на диске (в противном случае архивирование диска с разаеженными файлами может потребовать сотен лент.

tar игнорирует опцию '--sparse' при чтении архива.

'--sparse' '-S'

опцию '--label=архивная_метка' ('-V 'архивная_метка'). Появится специальная запись, идентифицирующая метка_тома как имя архива перед архивом, которая будет выводиться при использовании опции '--list'. Если вы создаете многотоиный архив при помощи '--multi-volume',

то метка тома будет иметь 'Volume nnn', добавленное к имени, которое вы даете, где n - номер тома архива. (Если вы используете опцию '--label=архивная_метка' при чтении архива, она проверяет соответствие метки на ленте той, что вы дали.

участок содержимого файла, который никогда не записывается. Содержимое дырки читается как нули. Во многих операционных системах память диска не рассчитана на дырки, но они включаются в длину файла. Если вы архивируете такой файл, tar может создать архив, который длиннее изначального. Чтобы tar попытался идентифицироватть дырки в файле, используйте '--sparse'. Когда вы используете опцию '--sparse', то для любых файлов, использующих меньше места на диске, чем ожидается, tar ищет файл для последовательных массивов нулей. Затем у файла, в котором находятся последовательные массивы нулей, он архивирует только "истинное содержимое". При извлечении (использование '--sparse' не является необходимым для извлечения) любые такие файлы и cозданные там, где были найдены продолжительные массивы нулей. Таким образом, если вы используете '--sparse', архивы tar занимают не больше места, чем изначальные.

Когда tar читает файлы, он вызывает модификацию их времени. Чтобы tar пытался оставить время таким, каким оно было перед тем, как файл был прочитан, используйте опцию '--atime-preserve'. Она не работает с файлами, которые не являются вашими собственными, и не работает интерактивно с пошаговой разгрузкой,

но достаточно хороша для некоторых других целей.

7.4 Структура архива *

Хотя архив может содержать много файлов, он сам - тоже не более чем просто обыкновенный файл. Подобно другим файлам, архивный файл может быть записан на устройство для хранения, на ленту или диск, его можно посылать через канал или по сети, хранить в архивной системе файлов и даже хранить в другом архиве. Архивным файлов нелегко манипулировать (и даже читать) без использования утилиты tar или режима Tar в Emacs.

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

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

Кроме элементов, описывающих члены архива, архив может содержать элементы, которыe tar использует для хранения информации.

Там приводится пример такого архивного элемента.

7.5 Оперирование режимными модификаторами *

-W

--verify

Пытается проверить архив после его записи. Эта опция заставляет tar проверять архив после его записи. Каждый том проверяется после того, как он был записан, и все несоответствия записываются на стандартный вывод ошибки. Для проверки требуется, чтобы архив был на носителе, на котором возможен возврат назад. Это значит, что каналы, некоторые картриджные устройства и еще некоторые устройства не могут быть проверены.

--remove-files

Удаляет файлы, занося их в архив.

-k

--keep-old-files

Не заменяет файлы, существующие в архиве, новыми. Опция --keep-old-files предохраняет tar от замены существующих файлов на новые с теми же именами. Опция --keep-old-files не имеет смысла в сочетании с '--list'.

-S

--sparse

Обрабатывает поврежденные файлы. Эта опция проверяет файлы, подлежащие занесению в архив, на повреждения и, если они есть, специально их обрабатывает. Опция '--sparse' используется, когда много файлов dbm, например, подвергнутых резервному копированию. Использование этой опции очень уменьшает количество памяти, необходимое для хранения таких файлов. В более поздних версиях эту опцию, наверное, можно будет удалить, и проверка и обработка поврежденных файлов будет происходить автоматически специальными опциями GNU. На данном этапе эта опция нужна для задания на командной строке при создании или модификации архива.

-O

--to-stdout

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

--ignore-failed-read

Не существует на нечитаемых файлах.

При использовании совместимости указателей файлов Unix для обновления каталоговых структур указанные файлы идут в один каталог и затем этот каталог tar'ируется.

Привести более новый пример, использующий абсолютные имена.

Пайпирование одного tar к другому - простой способ копирования содержимого каталога с одного диска на другой при сохранении дат, режимов, хозяев и структуры указателей всех этих файлов.

cd sourcedirectory; tar сf - . | (cd targetdir; tar xf -)
или

cd sourcedirectory; tar --create --file=- . | (cd targetdir; tar --extract --file=-)
Архивные файлы могут использоваться для транспортировки группы файлов из одной системы в другую: занесите все нужные файлы в архив в компьютерной системе, перенесите архив в другой и извлеките оттуда содержимое. Основным носителем переноса может быть магнитная лента, Internet FTP или даже электронная почта (вы должны закодировать архив с помощью uuencode для того, чтобы переслать его по почте). Обе машины не должны использовать одну операционную систему, когда они обеспечивают программу tar.


Вперед Назад Содержание