Программа обработки архивов tar

       

Основные операции TAR

В этой главе описываются основные операции, поддерживаемые
программой tar. Один вызов tar точно выполняет одну из этих операций.
Член архива обычно извлекается в файл с тем же именем, что и член
архива. Однако, вы можете использовать '--to-stdout' ('-O'), чтобы
заставить tar вывести извлеченные члены архива на стандартный вывод.
Если вы извлекаете много членов, они появляются на стандартном выводе
конкатенированными, в том порядке, в котором они были найдены в архиве.
Операция '--create' ('-c') записывает новый архив, а операция
'--extract' ('-x') читает файлы из архива и записывает их в систему
файлов. Вы можете использовать другие операции tar для записывания
новой информации в уже существующий архив (путем добавления в него
файлов, добавления к нему другого архива или удаления из него файлов),
и можете прочесть список файлов архива без их извлечения, используя


операцию '--list'.
Начальный аргумент tar - операция, которая задает действие, которое
tar должен произвести. tar можно использовать для:
* добавления файлов в уже существующий архив: '--append' ('-r').
* сравнения файлов в архиве с файлами системы файлов: '--compare'
('-d') или '--diff'.
* добавления к другому архиву: '--concatenate' ('-A').


* создания архива: '--create' ('-c').
* удаления файлов из архива: '--delete'.
* извлечения файлов из архива: '--extract' ('-x') или '--get'.
* вывода списка файлов архива: '--list' ('-t').
- 69 -
* модификации архива посредством добавлении более новых версий уже
хранящихся файлов: '--update' ('-u').
FIXME: xref reading and Writing
для получения более подробной информации об этих операциях.
Аргументы опций tar изменяют подробности операции, такие как формат
архива, имя архива или уровень диалога пользователя. Вы можете задать
более чем одну опцию. Все опции необязательны.
Аргументы имени файла задают файлы (включая каталоговые файлы) для
архивирования, извлечения, удаления или других операций.
Если вы не используете аргументов имени файла, '--append', 'update'
и '--delete' ничего не делают. Остальные операции tar что-нибудь
делают по умолчанию.
Когда вы используете аргумент имени файла, чтобы задать каталоговый
файл, tar работает со всеми файлами этого каталога, включая
подкаталоги.
Вы можете использовать опцию из нижеследующего списка. Эти опции
задают выполнение основных операций tar.
'--create'
'-c' Создает новый архив.
'--catenate'
'--concatenate'
'-A' Добавляет содержимое одного или более архивов к другому
архиву.
'--append'
'-a' Добавляет файлы в существующий архив.
- 70 -
'--list'
'-t' Выводит список файлов архива
'--delete'
Удаляет из архива его члены.
'--extract'
'--get'
'-x' Извлекает из архива его члены.
'--compare'
'-diff'
'-d' Сравнивает члены архива с файлами системы файлов.
'--update'
'-u' Модифицирует архив путем добавления новый версий уже
хранящихся файлов.
Остальные опции tar изменяют подробности выполнения операции, такие
как формат архива, имя архива или интерактивеый уровень пользователя.
Вы можете задать более чем одну опцию.
Остальные аргументы интерпретируются как имена файлов или имена
членов архива, зависящие от основной операции, выполняемой tar. Для
опций '--append' и '--create' эти аргументы задают имена файлов


(которые, может быть, уже существуют) для помещения в архив. Для
других типов операций дополнительные аргументы задают члены архива для
сравнения, удаления, извлечения, составления списка или
модифицирования. При назывании члена архива вы должны дать его точное
имя, проверив правильность с помощью '--list'.
Если вы не используете дополнительных аргументов, '--append',
- 71 -
'update' и '--delete' ничего не делают. '--create' создаст пустой
архив, если не задать файлы, которые нужно туда добавить. Другие
операции tar ('--list' ('-t'), '--extract' ('-x'). '--compare' ('-d')
и '--update' ('-u')) будут в этом случае работать со всем содержимым
архива.
Если вы даете имя каталога как имя файла или имя члена, tar работает
рекурсивно со всеми файлами и каталогами этого каталога. Например, имя
'/' идентифицирует все файлы системы файлов tar.
Аргумент операции tar задает, какое действие вы хотите произвести.
'-A'
Добавляет копии архива или архивы в конец другого файла.
'-c'
Создает новый архив.
'-d'
Сравнивает файлы архива с их противоположными частями в
системе файлов, и сообщает о различиях в размере, режиме,
имени хозяина, дате модификации и содержимом.
'-r'
Добавляет файлы в конец архива.
'-t'
Выдает список содержимого архива.
'-x'
Считывает файлы из архива и записывает их в действующую
систему файлов.
- 72 -
'-u'
Добавляет файлы в конец архива, но только если они более
новые, чем противоположные части уже в архиве, или их еще не
существует в архиве.
'--catenate'
Добавляет копии архива или архивы в конец другого архива.
'--append'
Добавляет файлы в конец архива.
'--compare'
Сравнивает файлы архива с их противоположными частями в
системе файлов, и сообщает о различиях в размере, режиме,
имени хозяина, дате модификации и содержимим.
'--concatenate'
Добавляет копии архива или архивы в конец другого архива.
'--create'
Создает новый архив.
'--delete'
Удаляет файлы из архива. Удаляются все версии файлов.
'--diff'
Сравнивает файлы архива с их противоположными частями в


системе файлов, и сообщает о различиях в размере, режиме,
имени хозяина, дате модификации и содержимим.
- 73 -
'--extract'
Считывает файлы из архива и записывает их в действующую
систему файлов.
'--get'
Считывает файлы из архива и записывает их в действующую
систему файлов.
'--list'
Выдает список содержимого архива.
'--update'
Добавляет файлы в конец архива, но только если они более
новые, чем противоположные части уже в архиве, или их еще не
существует в архиве.
'--version'
Выдает номер версии программы tar на стандартную ошибку.
Программа tar может создавать архив, извлекать файлы из архива,
модифицировать архив или составлять список его содержимого. Каждый
раз, когда вы работаете с tar, вы должны дать команду, чтобы задать,
что именно из этого вы хотите делать.
Команда должна всегда быть первым аргументом tar. Этот аргумент
может также содержать опции.
FIXME: pxref Invoking tar
Для согласованности с Unix tar первый аргумент всегда
рассматривается как содержащий буквы команд и опций, даже если он
- 74 -
начинается не с '-'. Таким образом, 'tar c' эквивалентно 'tar -c': и
то, и другое задает команду '--create' создания архива.
Кроме того, опции с длинными именами можно использовать, не смешивая
их с однобуквенными флагами. Опции с длинными именами легки для
запоминания и логичны, тогда как об однобуквенных флагах этого не
скажешь. Опции с длинными именами начинаются с '--'.
Аргументы начиная с первого - или опции, если они начинаются с '-'
или '--', или файлы, которыми нужно оперировать.
Имена файлов, которые вы даете как аргументы - файлы, с которыми tar
будет работать - например, это файлы для занесения в архив или для
извлечения из него. Если вы не даете аргументов имени файла, все
зависит от того, какую команду вы используете. Некоторые команды в
этом случае используют все файлы, а некоторые - сообщают об ошибке.
Если аргумент имени файла точно называет каталог, то используются
(рекурсивно) и этот каталог, и все его файлы и подкаталоги.


Список команд tar:
-c
--create Создает новый архив.
Эта команда заставляет tar создать новый архив, содержащий
файлы, заданные на командной строке. Если вы не задаете
файлы, используются все файлы текущего каталога. Если
архивный файл уже существует, на него записывается новый:
старое содержимое теряется.
'-x
--extract
--get
Извлекает файлы из архива.
Эта команда заставляет tar извлекать заданные файлы из
архива. Если не даны имена файлов, из архива извлекаются все
файлы.
- 75 -
-t
--list
Выводит список содержимого архива.
Эта команда заставляет tar вывести на экран список файлов
архива. Если вы задаете имена файлов, будут упомянуты только
заданные вами файлы (но каждый из них упоминается, только
если он есть в архиве).
-d
--diff
--compare
Находит различия между файлами архива и файлами, записанными
на строке. Эта команда заставляет tar сравнивать файл архива
с файлом системы файлов. Он сообщает о различиях в размере,
режиме, имени хозяина и содержимом. Если файл существует в
архиве, но не существует в системе файлов, tar сообщит об
этом. Если вы задаете имена файлов, эти файлы сравниваются,
и все они должны существовать в архиве. Если вы не задаете
файлы, сравниваются все файлы архива.
-r
--append
Добавляет файлы в конец архива.
Эта команда заставляет tar добавлять заданные файлы в конец
архива. Это предполагает, что архивный файл уже существует и
имеет надлежащий формат (что, по-видимому, значит, что он
был предварительно создан программой tar). Если архив имеет
формат, непонятный tar, результаты непредсказуемы.
Вы обязаны задать файлы, которые нужно использовать: по
умолчанию ничего не происходит).
-u
--update
Добавляет в архив более новые версии файлов, чем те, что уже
там находятся.
Эта команда заставляет tar добавлять заданные файлы в конец
архива, как '--append', но только если файла еще нет в
архиве или эта его версия более новая, чем имеющаяся в
- 76 -
архиве (сравнивается время последней модификации).
Добавление файлов в конец архива может быть очень медленным.


Вы обязаны задавать файлы, которые нужно использовать.
-A
--catenate
--concatenate
Добавляет существующие архивы к другому архиву.
Эта команда используется для конкатенирования нескольких
архивных файлов в один большой архивный файл. Все файлы для
этого должны быть архивными файлами. Они все добавляются к
концу архивного файла, с которым работает tar. (Другие файлы
не меняются).
Возникает желание использовать здесь cat, но обычно это не
работает. Архив tar содержит данные, указывающие конец
архива, т.ч. добавленный материал игнорируется. Эта команда
работает, потому что она перемещает маркеры конца архива из
середины.
--delete
Удаляет файлы из архива (если он не на ленте).
Эта команда заставляет tar удалять заданные файлы из архива.
Выполнение этой команды крайне медленно. Будьте осторожны:
использование этой команды для архивов, хранящихся на
магнитной ленте, может привести к их шифровке. Это неудачный
способ удаления файлов с магнитной ленты (за исключением
полной перезаписи архива).
Программа tar может создать архив, извлечь файлы из архива,
модифицировать архив или дать список его содержимого. Каждый раз,
когда вы работаете с tar, вы должны дать команду, чтобы задать, что
именно из этого вы хотите делать.
Команда должна всегда быть первым аргументом tar. Этот аргумент
может также содержать опции.
FIXME: pxref Invoking tar
Для согласованности с Unix tar первый аргумент всегда
- 77 -
рассматривается как содержащий буквы команд и опций, даже если он
начинается не с '-'. Таким образом, 'tar c' эквивалентно 'tar -c': и
то, и другое задает команду '--create' создания архива.
Кроме того, опции с длинными именами можно использовать, не смешивая
их с однобуквенными флагами. Опции с длинными именами легки для
запоминания и логичны, тогда как об однобуквенных флагах этого не
скажешь. Опции с длинными именами начинаются с '--'.
Аргументы после первого - или опции, если они начинаются с '-' или
'--', или файлы, которыми нужно оперировать.


Имена файлов, которые вы даете как аргументы - файлы, с которыми tar
будет работать, например, это файлы для занесения в архив или для
извлечения из него. Если вы не даете аргументов имени файла, все
зависит от того, какую команду вы используете. Некоторые команды в
таком случае используют все файлы, а некоторые сообщают об ошибке.
Если аргумент имени файла точно называет каталог, то используются
(рекурсивно) и этот каталог, и все его файлы и подкаталоги.
Модифицирование архивов.
При создании архива вы можете в него добавить члены,
содержимое другого архива или новые версии уже хранящихся членов, или
удалить уже имеющиеся члены архива.
Чтобы узнать, какие файлы уже хранятся в архиве, используйте 'tar
--list --file=имя_архива'.
FIXME: xref Listing Contents
4.1 Cоздание нового архива *
Опция '--create' ('-c') заставляет tar создавать новый архив. Файлы,
которые должны быть заархивированы, называются на командной строке.
Каждый файл добавится в архив под тем именем, которое дано на
- 78 -
командной строке. (Когда вы даете абсолютное имя файла, tar его
модифицирует).
FIXME: xref Absolute Names
Если вы не даете имена файлов для архивации, создается пустой архив.
Если файлов слишком много, чтобы разместить список на командной
строке, вы можете записать этот список в файл, и tar прочтет его.
FIXME: xref Reading Names from a File
Если вы назвали каталог, то tar заархивирует не только его, но -
рекурсивно - и его содержимое. Например, если вы назвали '/', tar
заархивирует всю систему файлов.
Не используйте опцию '--create' для добавления файлов в существующий
архив: он удалится, и на его место запишется новый. Вместо этого
используйте '--append'.
FIXME: xref Adding to an Existing Archive
Есть разные способы пропускать некоторые файлы и не архивировать их.
FIXME: xref Specifying Names to tar
FIXME: операции, наверно, должны иметь примеры.
Чтобы создать архив, используйте '--create' ('-c'). Чтобы назвать
архив - '--file=имя_архива' с операцией '--create'.


FIXME: pxref Archive Name
Если вы не называете архив, tar использует значение переменной среды
TAPE как имя файла для архива, или, если она недоступна, tar
использует имя по умолчанию.
- 79 -
FIXME: xref Archive Name
для получения более подробной информации о задании имени архива.
В нижеприведенном примере создается архив с именем 'stooges',
содержащий файлы 'larry', 'moe', и 'curley':
tar --create --file=stooges larry moe curley
Если вы задаете имя каталога как аргумент имени файла, tar
заархивирует все файлы в этом каталоге. В следующем примере создается
архив по имени 'hail/hail/fredonia', содержащий то же, что и каталог
'marx':
tar --create --file=hail/hail/fredonia marx
Если вы не задаете файлы, которые нужно положить в архив, tar
архивирует все файлы рабочего каталога. В следующем примере создается
архивный файл 'home', содержащий все файлы рабочего каталога:
tar --create --file=home
FIXME: xref File Name Lists
о других способах задания файлов для архивирования.
Заметьте: в вышеприведенном примере архив, содержавший все файлы
рабочего каталога, был записан в рабочий каталог. GNU tar сохраняет
файлы в рабочем каталоге архива, который сам находится в рабочем
каталоге, без вхождения в бесеконечный цикл. С другими версиями tar
такое может быть.
4.2 Добавление в существуюший архив *
Опция '--append' ('-r') заставляет tar добавлять новые файлы в
существующий архив. Она интерпретирует имена файлов и членов так же,
как '--create'. Если вы не задаете списка имен, ничего не случается.
- 80 -
Эта опция никогда не удаляет члены архива. Если новый член
добавляется под тем же именем, что и существующий член, то в архиве
останутся они оба - новый после старого. Для получения более подробной
информации о том, как это происходит,
FIXME: ref Multiple Members with the Same Name
Эта операция не может выполняться на некоторых ленточных драйверах
вследствие недостаточного формата, используемого этим драйвером.
Чтобы добавить файлы в архив, используется '--append' ('-r').


Архив,
который нужно добавить, должен уже существовать и быть в надлежащем
формате (обычно это значит, что он был предварительно создан с помощью
tar). Если архив был создан с не таким размером блока, какой был
задан, tar сообщит об ошибке.
FIXME: pxref Blocking Factor
Если архив не является допустимым архивом tar, результаты
непредсказуемы. Вы не можете добавить файлы в уплотненный архив,
однако вы можете добавить их в последний том многотомного архива.
FIXME: xref Matching Format Parameters
В следующем примере файл 'shemp' добавляется в архив 'stooges',
созданный выше:
tar --append --file=stooges shemp
Вы обязаны задавать файлы, которые нужно добавить.
'--update' действует так же, как '--append', но не добавляет файл в
архив, если там уже есть файл с таким именем, имеющий то же время
модификации.
И '--update', и '--append' существуют для добавления файлов в архив.
Когда вы извлекаете файл из архива, только версия, сохраненная
- 81 -
последней, попадает в систему файлов. Т.к. '--extract' извлекает файлы
из архива последовательно и записывает их под теми же именами в
систему файлов, то если имя файла возникает более чем однажды в
архиве, более поздняя версия этого файла записывается на более раннюю,
которая уже была извлечена. Вы можете избежать хранения старых версий
файла в архиве.
Заметьте: '--update' не приспособлена для выполнения резервного
копирования, потому что она не изменяет содержимое каталога, и потому,
что каждый раз при ее использовании удлиняется архив.
FIXME: xref сценарий резервного копирования для более подробной
информации о резервном копировании.
4.3 Модификация архива *
Опция '--update' модифицирует архив tar c помощью сравнения данных
заданных членов архива с данными файлов под теми же именами. Если файл
был модифицирован позже, чем член архива, то последний уничтожается
(как с помощью '--delete') и затем файл добавляется в архив (как с
помощью '--append'). На тех носителях, где не может выполняться опция
'--delete' (таких как магнитная лента), опция '--update' тоже ошибочна.


Если не названы члены архива (ни на командной строке, ни с помощью
'--files-from=файл_по_имени' ('-T файл_по_имени')), то процесс
охватывает весь архив.
4.4 Комбинирование архивов *
Опция '--concatenate' ('-A', '--catenate') заставляет tar добавлять
содержимое нескольких архивов к существующему архиву.
Назовите архивы для конкатенации на командной строке. (Ничего не
случится, если вы не станете их называть). Члены и их имена
скопируются из этих архивов дословно. Если появится много членов с
одинаковыми именами, ни один из них не уничтожится. Для того, чтобы
- 82 -
узнать, как это происходит,
FIXME: ref Multiple Members with the Same Name
Вы должны использовать эту опцию для конкатенации архивов. Если вы
комбинируете их с помощью cat, результатом может быть архив
недоступного tar формата.
Эту операцию, к сожалению, нельзя выполнять на некоторых ленточных
устройствах, из-за недостаточного формата, используемого ими.
Для того, чтобы добавить копии архива или архивы к концу другого
архива, используйте '--concatenate' ('-A'). Архив-источник и выходной
архив должны уже существовать и быть созданными с подходящими
параметрами формата.
FIXME: pxref Matching Format Parameters
tar остановит чтение архива, если он встретит маркер конца архива.
Утилита cat не уничтожает маркеры конца архива и, таким образом, она
не подходит для конкатенации архивов. '--concatenate' ('-A') удаляет
маркер конца архива из выходного архива перед добавлением каждого
нового архива.
FIXME: xref ignore-zeros
Вы должны задать архивы-источники с помощью '--file=имя_архива' ('-f
имя_архива').
FIXME: pxref Archive Name
Если вы не задаете выходной архив, tar использует значение
переменной среды TAPE, или, если она не задана, имя архива для
умолчания.
В следующем примере содержимое архива 'hail/hail/fredonia'
- 83 -
добавляется к архиву 'stooges' (оба были созданы ранее):
tar --catenate --file=stooges hail/hail/fredonia
Если вам нужно достать файлы из архива, который был добавлен с


помощью утилиты cat, используйте опцию '--ignore-zeros' ('-i').
FIXME: pxref Archive Reading Options
4.5 Удаление членов архива *
Вы можете использовать опцию '--delete' для удаления из архива его
членов. Назовите на командной строке имена членов, которые нужно
удалить. Эта опция переписывает архив, поэтому она не работает на
ленточных устройствах. Если вы не задали список членов, подлежащих
удалению, ничего не происходит.
Чтобы удалить члены архива из архива, используйте '--delete'. Вы
можете задать имена файлов или членов для удаления. Все члены архива
с заданными именами будут удалены из архива.
В нижеприведенном примере файл 'curley' удаляется из архива
'stooges':
tar --delete --file=stooges curley
Вы можете использовать '--delete' для архива, только если архивное
устройство позволяет вам осуществлять запись в любое место носителя.
Предостережение: Не пытайтесь удалить член архива с магнитной ленты,
чтобы не зашифровать архив. Это способ (не считая полного
переписывания архива) не подходит для удаления файлов с большинства
видов магнитных лент.
FIXME: Как насчет автоматического выявления носителя архива? Дает
ошибку, если архивное устройство или в необычном файле, или другой
ввод и вывод (-file=).
- 84 -
4.6 Вывод списка членов архива *
Опция '--list' ('-t') выводит список имен членов архива. Назовите
имена членов, которые нужно занести в список, на командной строке
(чтобы модифицировать способ интерпретации этих имен).
FIXME: pxref Specifying Names to
Если вы не называете имена членов, '--list' выведет список всех
членов архива.
Чтобы увидеть больше чем только имена членов, используйте опцию
'--verbose', чтобы заставить tar напечатать список, как при
использовании 'ls -l'.
Список содержимого архива
'--list' выводит список имен членов архива на стандартный вывод.
Если вы задаете на командной строке аргументы имени файла (или
используете опцию '--files-from=файлы_с_именами',
FIXME: pxref File Name Lists
только файлы, которые вы задаете, будут занесены в список (если они


существуют в архиве). Незаданные файлы игнорируются, даже если они
находятся в заданном каталоге.
Если вы включаете опцию '--verbose', tar печатает список архива, как
при 'ls -l'.
FIXME: pxref Additional
Information
для описания опции '--verbose'.
Если блочный фактор архива отличается от соответствующего
- 85 -
умолчанию, tar сообщает об этом.
FIXME: xref Blocking Factor
FIXME: xref Archive Reading Options
для получения списка, который можно использовать для модификации
операции '--list'.
В очередном примере выводится список членов архива 'stooges':
tar --list
--file=stooges
tar отвечает:
larry
moe
shemp
marx/julius
marx/alexander
marx/karl
В следующем примере генерируется список членов архивного файла 'dwarves',
имеющего блочный фактор два:
tar --list -v --file=blocks
tar отвечает:
tar: Blocksize = 2 records
-rw------- ringo/user 42 May 1 13:29 1990 .bashful
-rw-rw-rw- ringo/user 42 Oct 4 13:29 1990 doc
-rw-rw-rw- ringo/user 42 Jul 20 18:01 1969 dopey
-rw-rw-rw- ringo/user 42 Nov 26 13:42 1963 grumpy
-rw-rw-rw- ringo/user 42 May 5 13:29 1990 happy
-rw-rw-rw- ringo/user 42 May 1 12:00 1868 sleepy
- 86 -
-rw-rw-rw- ringo/user 42 Jul 4 17:29 1776 sneezy
4.7 Извлечение членов архива *
Используйте '--extract' или '--get' для извлечения из архива его
членов. Для каждого названного члена (или для всего архива, если не
названы члены) на командной строке - или с помощью
'files-from=файлы_с_именами' - создается файл с содержимым члена
архива. Имя файла то же, что и имя члена.
Некоторые опции заставляют tar извлекать больше, чем только
содержимое файла - имя хозяина, дату модификации и т.д.
FIXME: начало
Опции '--same-permissions' или '--preserve-permissions' заставляют
новый файл иметь те же возможности, что имел изначальный файл, когда
-находился в архиве. Без этих опций для этого используется текущий
umask.
При извлечении tar обычно присваивает времени модификации значение,
записанное в архиве. Это позволяет сделать опция '--modification-time'


('-m').
FIXME: конец
Чтобы считать члены архива и записать их в систему файлов,
используйте '--extract'. Сам архив остается неизмененным.
Если вы не задали файлы, подлежащие извлечению, tar извлечет все
файлы архива. Если вы задали имя каталога как аргумент имени файла,
tar извлечет все файлы, хранящиеся как часть этого каталога. Если файл
был сохранен с именем каталога, являющимся частью имени файла, tar
создаст каталог.
FIXME: xref Selecting Archive
Members
- 87 -
для получения более подробной информации о задании файлов для
извлечения.
В следующем примере показано извлечение архива 'stooges' в пустой
каталог:
tar --extract --file=stooges
Генерация списка каталога ('ls') дает:
larry
moe
shemp
marx
Подкаталог 'marx' содержит файлы 'julius', 'alexander' и 'karl'.
Если вы хотите только извлечь файлы в подкаталог 'marx', вы можете
задать этот каталог как аргумент имени файла в сочетании с операцией
'--extract':
tar --extract --file=stooges marx
Предостережение: При извлечении файлов на их место может что-нибудь
записаться. Чтобы избежать потери файлов системы файлов при их
извлечении из архива, используйте опцию '--keep-ol-files' ('-k').
FIXME: pxref File Writing Options
Если архив был создан с помощью '--block-size=512-размер' ('-b
512-размер), '--compress' ('-Z') или '--multi-voloume' ('-M'), вы
должны задать эти опции опять при извлечении файлов из архива.
FIXME: oxref Format Variations
4.7.1 Опции, помогающие чтению архива *
- 88 -
FIXME: Обзор опций после меню.
Обычно tar требует данных в полных блоках из устройства хранения
архива. Если устройство не может возвращать полный блок, tar сообщает
об ошибке. Однако некоторые устройства не всегда возвращают полные
блоки или не требуют, чтобы последний блок архива ложился к границе
следующего блока. Чтобы продолжать читать до тех пор, пока вы не
получите полный блок, или принять неполный блок, если он содержит
маркер конца архива, задайте опцию '--read-full-blocks' ('-B') в


сочетании с операциями '--extract' или '--list'.
FIXME: xref Listing Contents
Опция '--read-full- blocks включается по умолчанию, когда tar читает
архивы со стандартного ввода или с удаленной машины. Это из-за системы
BSD Unix. Если эта опция не включена, tar столкнется с ошибкой при
чтении неполного блока из канала.
Если вы не уверены в блокирующем факторе архива, вы можете прочитать
архив с помощью задания '--read-full-blocks' и
'--block-size=512-размер', используя блочный фактор больше, чем
использует архив. Это позволит вам избежать определения блочного
фактора архива.
FIXME: xref Blocking Factor
'--read-full-blocks'
'-B'
Используется в сочетании с '--extract' для чтения архива, содержащего
неполные блоки или имеющего блочный фактор меньше, чем заданный.
Обычно tar прекращает чтение, когда он сталкивается с блоком нулей
между элементами файла (который обычно обозначает конец архива).
'--ignore-zeros' ('-i') позволяет tar полностью читать архив,
содержащий блок нулей перед концом (т.е. архив, который был поврежден
или создан c помощью cat из нескольких архивов).
- 89 -
Опция '--ignore-zeros' выключает реакцию на умолчание, потому что во
многих версих tar после конца архива печатается ненужная информация,
из-за чего какая-то часть носителя никогда не будет прочитана. В GNU
tar в конце архива не пишется ничего, но между архивирующими утилитами
нужна согласованность.
'--ignore-zeros'
'-i'
Для игнорирования блоков нулей, с которыми можно столкнуться при
чтении архива. используется в сочетании с '--extract' или '--list'.
Если вы используете машину с небольшим количеством памяти и вам
нужно составить большой список имен, вы можете уменьшить место,
необходимое tar для этого. Чтобы это сделать, задайте опцию
'--same-order' ('-s') и обеспечьте упорядоченный список имен файлов.
Эта опция сообщает tar, что аргументы имени, данные на командной
строке или считанные из файла при помощи
'--files-from=файлы_с_именами', записаны в том же порядке, что и файлы


в архиве.
Вы можете создать файл, содержащий упорядоченный список файлов
архива с помощью 'tar --list --file=имя_архива'.
FIXME: xref Listing Contents
для информации об операции '--list'.
Эта опция в современных компьютерных системах, наверно, не нужна.
'--same-order'
'--preserve-order'
'-s'
Для составления длинных списков имен на машинах с небольшим
количеством памяти. Используется в сочетании с '--compare', '--list'
или '--extract'.
FIXME: даже хотя она нам не нужна - сохраним еще раз
- 90 -
4.7.2 Изменения в записи tar файлов *
FIXME: найти более подходящее название
Обычно tar записывает извлеченные файлы в систему файлов
безотносительно к тому, существуют ли они уже в системе файлов: файлы
с теми же именами, что уже имеющиеся, записываются на них. Чтобы
предотвратить извлечение tar из архива его членов при перезаписывании
файлов в систему файлов, используйте '--keep-old-files' в сочетании с
'--extract'. Когда задана эта опция, tar сообщает об ошибке,
констатирующей конфликт имен файлов вместо записи файлов из архива.
'--keep-old-files'
'-k'
Предотвращает записывание новых файлов на старые в системе файлов во
время извлечения файлов.
Обычно tar устанавливает время модификации извлекаемых файлов равным
времени модификации, записанному для файлов в архиве, но ограничивает
разрешения извлекаемых файлов с помощью umask.
Чтобы установить время модификации равным времени извлечения файлов,
используйте опцию '--modification-time' ('-m') в сочетании с
'--extract'.
'--modification-time'
'-m'
Устанавливает время модификации извлеченных членов архива
равным времени извлечения файлов, а не времени, записанному
для них в архиве. Используется в сочетании с '--extract'.
Чтобы установить режимы извлечения файлов к тем, что записаны для
них в архиве, используется опция 'same-permissions' в сочетании с
операцией '--extract'.
preserve-permission'
- 91 -
'--same-permission'
'--ignore-umask'
'-p'
Устанавливает режимы извлечения файлов к тем, что записаны для


них в архиве, вместо установления umask. Используется в
сочетании с '--extract'.
FIXME: следующий абзац нужно переписать: почему нельзя применить к
этим файлам cat? Можно ли это использовать для более чем одного
файла?
Чтобы вывести извлеченные файлы на стандартный вывод вместо создания
файлов в системе файлов, используйте '--to-stdout' ('-O') в сочетании
с '--extract'. Эта опция используется, если вы выводите файлы для
того, чтобы послать их через канал, и нет необходимости хранить их в
системе файлов.
'--to-stdout'
'-O'
Записывает файлы на стандартный вывод. Используется в сочетании
с '--extrsct'.
FIXME: Зачем нужно выводить отдельные файлы на стандартный вывод?
Используется ли это для более чем одного файла?
4.7.3 Извлечение с недостаточного пространства диска *
Если предыдущая попытка извлечь файлы потерпела неудачу вследствие
недостатка места на диске, вы можете использовать
'--starting-file=имя' ('-K имя) для того, чтобвы начать извлечение
только начиная с названного файла при извлечении файлов из архива.
Это, разумеется, предполагает, что или сейчас здесь есть свободное
место, или вы извлекаете файлы в другую систему файлов.
'--starting-file=имя_файла'
'-K имя_файла'
Начинает операцию в середине архива. Используется в сочетании с
- 92 -
'--extract' или '--list'.
Если вы замечаете, что во время операции извлечения вы находитесь
вне пространства диска, вы можете заставить tar удалить из системы
ненужные файлы и затем начать эту операцию заново. В этом случае в
'--starting-file=имя' нет необходимости.
FIXME: xref -incremental, xref -interactive, zref -exclude
4.8 Сравнение членов архива с файлами *
Опция '--compare' ('-d', '-diff') сравнивает содержимое заданных
членов архива с файлами под теми же именами, и сообщает о различиях,
которые находит. Если на командной строке или с помощью
'--files-from=файлы_с_именами' члены не заданы, сравнение происходит
для всех членов архива.
4.9 Согласование параметров формата *
Некоторые параметры формата должны быть взяты в рассмотрение при

Содержание раздела