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

         

Задание имен TAR

5.1 Изменение имени архива *
По умолчанию tar использует имя архивного файла, откомпилированного
при установке tar. Обычно это относится к некоторым физическим
ленточным устройствам машины. Часто инсталлятор tar вообще не
устанавливает ничего по умолчанию.
В результате большинству пользователей tar приходится сообщать ему,
где искать архив. Опция '--file=имя_архива' выбирает для использования
в качестве архива другой файл.
Если в имени архивного файла есть двоеточие, то имеется в виду, что
он на другой машине. Если архивный файл - 'user@host:file', то файл
file используется на машине host. Отдаленная машина позволяет
использовать программу rsh с именем пользователя user. Если имя
пользователя не указывается (перед знаком @), используется ваше имя
(это обычное поведение rsh). Если необходимо для удаленной машины,
кроме разрешения вам доступа к rsh, устанавливается программа
'/usr/ucb/rmt'. Если вам нужно использовать файлы, в имена которых
входит двоеточие, то работу удаленного ленточного учтройства можно
заблокировать с помощью опции '--force-local'.
Если вы даете в качестве имени файла в '--file=имя_архива' тире, tar
читает архив со стандартного ввода (или записывает на стандартный


вывод).
Имя архива
Архив можно сохранить как файл в системе файлов, послать через канал
или сеть, или записать на устройство I/O как на ленту или диск. Чтобы
задать имя архива, испльзуйте опцию '--file=имя_архива'.
Имя архива может быть именем обыкновенного файла или устройства I/O.
tar всегда нужно имя архива: если вы его не задаете, используется
- 95 -
переменная среды TAPE или, если она не задана, имя архива для
умолчания - обычно это имя /dev/tu00.
Если вы используете тире в качестве имени архива, tar читает архив
со стандартного ввода (при составлении списка извлеченных файлов), или
записывает его на стандартный вывод (при создании архива). Если вы
используете тире как имя архива при модификации архива, tar читает
первоначальный архив со стандартного ввода и записывает весь новый
архив на стандартный вывод.
FIXME: производится ли переназначение стандартных ввода и вывода с
помощью всех операций? Нужно привести пример стандартного ввода
и вывода (экран и клавиатура?)
Чтобы задать архивный файл на устройстве, подсоединенном к
отдаленной машине, используйте следующее:
--file=имя_машины:/устройство/имя_файла
tar, если возможно, завершает дистанционную связь, выводит
приглашение имени пользователя и запрашивает пароль. Если вы
используете '--file=имя_машины:/устройство/имя_файла', tar завершает
дистанционную связь, используя ваше имя как пользователя на отдаленной
машине.
FIXME: Ясно ли это?
'--file=имя_архива'
'-f имя_архива'
Называет архив для создания или оперирования. Используется в
сочетании с другой операцией.
Выбор членов архива
Аргументы имени файла задают, с какими файлами системы файлов tar
должен работать при создании или добавлении архива, или то, с какими
членами архива tar должен работать при чтении архива или удалении
членов из него.
- 96 -
FIXME: pxref Reading and Writing
Чтобы задать имена файлов, вы можете напечатать их в качестве
последних аргументов на командной строке. Например:
tar операция [опция1 опция2 ...][имя_файла_1 имя_файла_2 ...]


Если вы задаете имя каталога как аргумент имени файла, tar оперирует
всеми файлами этого каталога.
Если вы не задаете файлы при вызове tar, он оперирует всеми
некаталоговыми файлами рабочего каталога (если операция - '--create'),
всеми членами архива (если задана операция чтения) или ничего не
делает (при задании всех остальных операций).
При задании имен файлов или членов, он по умолчанию берет имена
файлов с командной строки. Однако существуют другие способы задания
имен файлов или членов, или модификации, при которой tar выбирает
имена членов, которыми оперирует. Обычно эти методы работают для
задания и имен файлов, и членов архива.
5.2 Выбор файлов с определенными характеристиками
Чтобы избежать пересечения границ архива при архивировании частей
каталогового дерева, используется '--one-file-system' ('-l'). Эта
опция работает только с файлами, которые были заархивированы, потому
что находились в заархивированном каталоге. Файлы, названные на
командной строке, архивируются вне зависимости от того, где они
находятся.
Эта опция используется для выполнения полного или пошагового
резервного копирования системы файлов.
Если эта опция используется в сочетании с '--verbose' ('-v'),
выключенные файлы упоминаются на стандартной ошибке.
- 97 -
'--one-file-system'
'-l'
Предотвращает пересечение tar границ системы файлов при
архивировании. Используется в сочетании с другими операциями.
Чтобы избежать оперирования файлами, чьи имена соответствуют
шаблону, используйте опции '--exclude=шаблон' или
'--exclude-from='шаблон'.
Когда вы задаете опцию '--exclude=шаблон', tar игнорирует файлы,
соответствующие шаблону, который может быть отдельным файлом или более
сложным выражением. Таким образом, если вы вызываете tar с помощью
'tar --create --exclude=*/o', файлы, имена которых кончаются на '.o',
не включаются в архив.
FIXME: Что мы можем использовать вместо "*"?
'--exclude-from=шаблон' действует как '--exclude=шаблон', но задает
файл file, содержащий список шаблонов.


tar игнорирует файлы, чьи имена
соответствуют какому-нибудь из этих шаблонов.
Вы можете использовать опцию в одной команде более чем однажды.
'--exclude=шаблон'
Заставляет tar игнорировать файлы, соответствующие шаблону.
'--exclude-from=file'
Заставляет tar игнорировать файлы, соответствующие шаблонам,
указанным в file.
Чтобы оперировать файлами, чье время модификации или изменения
состояния - после указанной даты, используйте '--after-date=дата'. Вы
можете использовать эту опцию с '--create' или '--append', чтобы
убедиться, что архивируются только новые файлы, или с помощью
'--extract' для того, чтобы убедиться, что все недавние файлы
восстановлены.
FIXME: или -newer (дата)
- 98 -
'--newer-mtime=дата' действует как '--after-date=дата', но проверяет
только время модификации файлов, игнорируя время изменения состояния.
FIXME: Нужно привести пример на -newer-mtime с аргументом, взятым в
кавычки.
Помните, что весь аргумент должен быть взят в кавычки, если он
содержит пробел.
Заметьте: '--newer-mtime=дата' и '--after-date=дата' не используются
для пошагового резервного копирования. Некоторые файлы (например, в
переименованных каталогах) не выбираются при помощи этих опций.
FIXME: xref главу о пошаговом резервном копировании.
'--newer-mtime=дата'
Действует как '--after-date=дата', но обращает внимание
только на время модификации.
FIXME: нижеследующее нужно переписать и сделать здесь новый подраздел.
Принимаемые форматы времени (чисел),
пренебрегающие неясными конструкциями
Ввод состоит из одного или более параметров: время зона день_недели
дата год в любом порядке.
'|' и '/' значат 'или', a '[]' - 'необязательное'.
Время: Н am/pm | H:M [am/pm] пояс: название_часового_пояса |
название_часового_пояса dst день_недели | день_недели, | день_недели
число: M/D | M/D/Y | месяц D | месяц D, Y | D месяц Y год: Y
Вместо am также может быть a.m,вместо pm - p.m., пунктуация вокруг
пробелов не важна.
FIXME: месяц и день недели можно сократить.
- 99 -


5.2. 1 Чтение имен из файла *
Вместо того, чтобы давать имена файлов или членов архива на
командной строке, вы можете положить их в файл и затем использовать
опцию '--files--from=файл_по_имени'. Дайте имя файла, содержащее
список, как аргумент '--files--from=файл_по_имени'. Каждое имя файла
должно располагаться на новой строке. Если вы в качестае имени файла
даете тире, т.е. задаете '--files-from=-', то имена файлов читаются со
стандартного ввода.
Если вы хотите задать имена, которые могут содержать несколько
строк, используйте опцию '--null'. Тогда имена файлов, вместо того
чтобы начинаться каждое с новой строки, будут отделены нулями (ASCII
000). Кроме того, опция '--null' выключает опцию '--directory=каталог'.
FIXME: pxref Changing Directory
Чтение списка имен из файла *
Чтобы прочитать имена файлов не с командной строки, а из файла
системы файлов, используется опция '--files-from=файл_по__имени'. Если
вы задаете тире как файл, имена файлов читаются со стандартного ввода.
Заметьте, что при использовании и '--files-from=-', и '--file=-' в
одной команде, она не будет работать, если это не '--create' ('-c').
FIXME: xref Archive Name
для получения объяснения синтаксиса и значения регулярного выражения.
5.2.3 Оперирование только новыми файлами *
Опция '--after-date=дата' или '--newer=дата' ограничивает действие
tar только оперированием с файлами, которые были модифицированы после
указанной даты. Для получения более подробной информации о том, как
задать дату,
- 100 -
FIXME: xref Date Formats
Файл рассматривается, чтобы быть измененным, если было
модифицировано его содержимое или изменены хозяин, разрешения и т.д.
Если вы хотите только чтобы tar производил сравнение дат на
основании точного содержимого модификации файла, используйте опцию
'--newer-mtime=дата'.
Никогда не используйте эту опцию для выполнения пошаговой разгрузки.
Чтобы научиться использовать tar для осуществления резервного
копирования,
FIXME: ref Making backups
5.2.4 Пересечение границ системы файлов *


Опция '--one-file-system' заставляет tar модифицировать его обычное
поведение при архивировании содержимого каталогов. Если файл каталога
не в той системе файлов, что сам каталог, tar не архивирует этот файл
или (если он сам - каталог) все файлы, относящиеся к нему.
Это не обязательно ограничивает работу tar только архивированием
содержимого отдельной системы файлов, потому что все файлы, имена
которых даны на командной строке или в '--files-from=файлы_с_именами',
будут заархивированы.
5.3 Локальный отбор файлов *
Локальный отбор файлов
-C каталог
--directory каталог
Выполняет переход к каталогу с именем 'каталог'. Эту опцию
- 101 -
можно вставлять между файлами, с которыми tar должен
работать. Например:
tar -c iggy ziggy -C baz melvin
перемещает файлы 'iggy' и 'ziggy' из текущего каталога на
ленту. Эта опция в основном используется, когда есть
несколько отделенных друг от друга файлов, которые вы хотите
сохранить в одном каталоге архива. Здесь файл 'melvin'
записан в архиве под именем 'melvin', а не 'baz/melvin'.
Таким образом, архив будет содержать три файла, которые
появляются из одного каталога; если архив извлекается с
помощью 'tar -x', все эти файлы будут созданы в текущем
каталоге. Это отличается от команды
tar -c iggy ziggy bar/melvin
которая записывает третий файл в архив под именем
'bar/melvin', т.ч., если используется 'tar -x', третий файл
будет создан в подкаталоге 'bar'.
Предположим, что вы хотите без изменения вашего текущего
каталога вызвать tar, чтобы скинуть файлы с
'/users/ctd/dipp'. Тогда вам нужна '--directory=каталог'. Вы
можете сделать что-то вроде: tar cfC archive.tar
/users/ctd/dipp. (точка обозначает текущий каталог).
Некоторые люди хотят иметь какую-нибудь опцию для извлечения
чего-нибудь из архива в текущий каталог, игнорируя при этом
каталоговую структуру архива. Это так редко бывает нужно,
что я сомневаюсь, что такая опция действительно будет
использоваться. Она, может быть, только поощряла бы
неправильное использование tar.


Вообщем,
'--directory=каталог' можно использовать в первую очередь
для создания архивов с более ясной структурой.
-T имя_файла
--files-from=имя_файла
Принимает имена для извлечения или создания файла с именем
имя_файла. Список файлов читается не с командной строки, а с
- 102 -
файла имя_файла. Если имя_файла задано как '-', список
читается со стандартного ввода. Заметьте, что опции '-T -' и
'-f -' не работают, если вы не используете команду
'--create'. Обычно это используется, когда вы сгенерировали
список файлов для архива с помощью find.
--null
Эта опция заставляет '--files-from=файлы_с_именами' читать
имена, отделенные нулями, а не начинающиеся с новой строки.
Таким образом файлы, чьи имена содержат несколько строк,
можно заархивировать с помощью
'--files-from=файлы_с_именами'. Опция '-null' похожа на
соответствующую опцию GNU xargs и cpio и используется с
предикатом '-print0' GNU find. В tar '--null' также
заставляет рассматривать '--directory=каталог' как имена
файлов архива в случае, когда есть файлы по имени '-C'.
--exclude=файл
Выключает файл 'файл'.
-X файл
--exclude-from=файл
Выключает файлы, перечисленные в "файл".
Эта опция заставляет tar читать список регулярных выражений
(в синтаксисе оболочки), по одному на линии, из "файла", tar
игнорирует файлы, соответствующие этим регулярным
выражениям. Таким образом, если tar вызывается как 'tar -c
-X foo', и файл 'foo' содержит единственную строку '*',
файлы, чьи имена заканчиваются на '.o', не будут добавлены в
архив. Опцию '--exclude=шаблон' можно использовать
многократно.
-P
--absolute-names
Не удаляет начальное /s из имен файлов.
По умолчанию GNU tar отправляет начальное /s на ввод или
вывод. Эта опция выключает такую реакцию: это эквивалентно
изменению корневого каталога перед работой tar (кроме того,
- 103 -
убирается также обычное предупреждение).
-l
--one-file-system
При создании архива остается в системе файлов.
Эта опция предохраняет tar от пересечения границ системы


файлов при архивировании частей каталогового дерева. Эта
опция работает только с файлами, которые были
заархивированы, потому что находились в заархивированном
каталоге. Файлы, названные на командной строке, архивируются
вне зависимости от того, где они находятся.
Эта опция используется для проведения полного или
пошагового резервного копирования системы файлов, как с
помощью команды dump Unix.
Файлы, пропущенные через эту опцию, идут на стандартный вывод.
-K имя
--starting-file=имя
Начинается с файла'имя' архива.
--starting-file=имя заставляет tar начинать извлечение или
составление списка архива с файла 'имя' и рассматривать
только файлы, находящиеся после этого файла. Это
используется, если предыдущая попытка извлечь файлы
потерпела поражение, не успев дойти до файла 'имя' из-за
нехватки свободного места. (Предполагается, разумеется, что
сейчас у вас есть свободное место, или вы извлекаете уже в
другую систему файлов).
-N дата
--newer=дата
--after-date=дата
Сохраняет файлы: которые новее указанной даты.
Эта опция заставляет tar работать только с файлами, чье
время модификации или изменений позже указанной даты.
Используется в основном для создания архивов: записываются
только самые новые файлы. При извлечении тоже извлекаются
только самые новые файлы. Помните, что если аргумент даты
- 104 -
содержит хотя бы один пробел, он весь должен быть заключен в
кавычки. Синтаксический анализ даты производится с помощью
getdate.
Изменение имен членов при архивировании.
5.3.1 Переход к другому каталогу *
Опция '--directory=каталог' заставляет tar перейти из текущего
каталога в 'каталог'. В отличие от большинства опций, эта обрабатывает
все, что находится в списке для обработки. Рассмотрим следующую
команду:
tar --create --file=foo.tar -C/etc passw hosts -C /lib libc.a
Эта команда помещает файлы '/etc/passw', '/etc/hosts' и '/lib/libc.a'
в архив. Однако имена членов архива будут точно такими, какими они
были на командной строке: 'passw', 'hosts' и 'libc.a'.


Опция
'--directory=каталог' часто используется для для того, чтобы сделать
архив независимым от изначального имени каталога, содержащего файлы.
Заметьте, что опция '--directory=каталог' интерпретируется
последовательно. Если jgwbz '--directory=каталог' задает относительное
имя файла, она интерпретируется относительно текущего каталога,
который может быть тем же, что и изначальный текущий рабочий каталог,
установленный благодаря '--directory=каталог'.
При использовании '--files-from=файлы_с_именем'
FIXME: pxref Reading Names from a File
вы можете занести опцию '-C' в список файлов. К сожалению, нельзя
занести туда опции '--directory'.(В этой интерпретации нельзя
использовать опцию '--null'.)
Изменение рабочего каталога из списка имен файлов *
- 105 -
Чтобы изменить рабочий каталог в середине списка имен, заданного или
на командной строке, или в файле, при помощи
'--files-from=файлы_с_именами', используйте '--directory=каталог'. При
этом рабочий каталог изменится на каталог "каталог" после
определенного места списка. Например, в
tar --create iggy ziggy --directory=baz melvin
файлы 'iggy' и 'ziggt' перемещаются из текущего каталога в архив, за
которым следует файл 'melvin' каталога 'baz'. Эта опция особенно часто
используется, когда у вас есть несколько далеко расположенных файлов,
которые вы хотите сохранить в одном и том же каталоге архива.
Заметьте, что файл 'melvin' записан в архив под именем 'melvin', а
не 'baz/melvin'. Таким образом архив будет содержать три файла из
одного каталога; если архив извлекается с помощью 'tar --extract', все
три файла будут записаны в текущий каталог.
Это отличается от команды
tar -c iggy ziggy bar/melvin
которая записывает третий файл в архив под именем 'bar/melvin', т.ч.,
если используется 'tar -x', третий файл будет создан в подкаталоге
'bar'.
'--directory='directory'
'-C 'directory''
Изменяет рабочий каталог.
FIXME: нужно проверить, как здесь действует извлечение и привести
пример.
5.3.2 Абсолютные имена файлов *

Даже будучи очень внимательным...

6.1 Документация GNU tar
Будучи внимательным, первое, что вы можете проверить - что вы
действительно используете tar.


Опция '--version' генерирует послание,
дающее подтверждение, что вы пользуетесь tar, с указанием версии tar,
которую вы используете. tar идентифицирует себя и выводит номер своей
версии на стандатрный вывод, затем успешно выходит, ничего больше не
делая и игнорируя все остальные опции. Например, 'tar --version' может
возвратить:
GNU tar version 1.18.8
Второе, что вы можете захотеть узнать - написание и значение
некоторых опций tar без обращения к данному руководству, которое вы
уже однажды внимательно прочли. GNU tar имеет незначительные
возможности помощи, ее можно запустить с помощью опции '--help'. При
использовании этой опции tar выдает на стандартный вывод сообщение, в
котором перечисляются все доступные опции, затем успешно выходит,
ничего больше не делая и игнорируя все остальные опции. Даже хотя это
краткий обзор, он может быть несколько экранов длиной. Так что, если
вы используете не какой-нибудь тип прокручиваемого окна, вы можете
воспользоваться, например, этим:
tar --help | less
Это обозначает, что вы хотели бы использовать less для переворачивания
страниц. Чаще всего для этого используются еще more и pg.
Дотошный читатель должен был заметить определенные расхождения в
предыдущих абзацах. Там написано, что и '--version', и '--help' что-то
печатают и игнорируют все остальные опции. Фактически же они не могут
игнорировать друг друга,
какая сильнее: проведем эксперимент, действительно ли вам это
интересно.
- 109 -
Предоставляемая помощь очень сжата, и вам, может быть, придется
вернуться к полной документации. Если вы читаете этот абзац, значит, у
вас уже есть некоторое руководство по tar. Это руководство доступно в
печатном виде, как маленькая книжечка. Или можно его распечатать, если
у вас есть где-нибудь установленный TEX и лазерный принтер. Просто
установите это пособие, запустите команду 'make dvi', затем наберите
'doc/tar.dvi' обычным способом (спросите местного гуру, как это
делается). Если GNU tar удобно установлен на вашем месте, это


руководство также доступно в диалоговой, гипертекстуальной форме стиля
Info. Просто вызовите 'info tar', или, если у вас нет программы info,
используйте Info reader из GNU Emacs, вызвав tar из основного меню
Info.
6.2 Проверка прогресса tar
Обычно tar выполняет большинство операций, не выдавая пользователю
никакой информации, кроме сообщений об ошибках. При использовании
многих опций, часто со сложным и непредсказуемым поведением, можно
наделать много серьезных ошибок. tar обеспечивает несколько опций,
которые делают работу с ним легче. Эти опции заставляют tar выводить
информацию, как он прогрессирует в задании, и, может быть, вы захотите
использовать их, чтобы лучше представлять, что он делает. Однако, если
вы при оперировании архивом столкнулись с проблемой, вам нужна для ее
решения более подробная информация, чем просто сообщение об ошибке.
Нижеприведенные опции являются полезными диагностическими средствами.
Обычно команда '--list' для выдачи списка архива печатает имена
файлов (по одному на строке), а другие команды молчат. При
использовании большинства операций опция '--verbose' заставляет tar
печатать имя каждого файла или члена архива, как только он обработан.
Эта и другие опции, заставляющие tar печатать информацию о состоянии,
могут использоваться в контроле tar.
При использовании опций '--create', '--extract; или '--verbose' один
раз печатаются имена файлов или членов, как только они обработаны. При
- 110 -
использовании их дважды tar вынужден печатать для каждого члена более
длинный список (как при помощи 'ls -l'). В то время как '--list' сама
печатает имена членов архива, '--verbose', используемая с '-list',
заставляет tar печатать список файлов архива, как при помощи 'ls -l'.
В следующих примерах извлекаются члены архива и выдается длинный
список вывода:
tar --extract --file=archive.tar --verbose --verbose
tar xvv archive.tar
Словесный вывод возникает на стандартном выводе, за исключением
случая, когда архив записан на стандартный вывод, как с помощью 'tar


--create --file=- --verbose' ('tar cfv -', или даже 'tar cv' -
инсталлятор, позволяющий иметь архив по умолчании на стандартном
выводе). В этом случае tar записывает словесный вывод на стандартную
ошибку.
Опция '--totals', имеющая смысл только при использовании с
'--create', заставляет tar печатать все записанное в архив после того,
как он был полностью создан.
Опция '--checkpoint' выдает случайное сообщение, когда tar читает
или записывает архив. Фактически она печатает имена каталогов при
чтении архива. Она предназначена для тех, кому не нужен более
подробный (и объемный) вывод '--record-number' ('-R'), но кто хочет
получить наглядное подтверждение, что tar действительно делает
прогресс.
FIXME: Здесь небольшая неясность. Кажется, что -R выдает сообщение о
каждом блоке.
Опция '--show-omitted-dirs' при чтении архива с опциями '--list' или
'--extract', например, заставляет для каждого каталога архива, который
пропущен, печатать сообщение. Это происходит независимо от причины
пропуска: каталог может не быть назван на командной строке (явно или
неявно), или может быть исключен при помощи опции '--exclude=шаблон'...
Если используется '--record-number', tar печатает, наряду с другим
- 111 -
сообщением, которое он обычно выдает, номер записи в архиве, где было
запущено сообщение. Эта опция особенно часто используется при чтении
поврежденных архивов, она помогает точно указать поврежденный участок.
Ее также можно использовать с '--list' при чтении ленты резервного
копирования системы файлов, что позволяет вам выбрать из нескольких
лент резервного копировании при более позднем извлечении файла, где
отдается предпочтение ленте, где файл появляется раньше всего.
FIXME: xref, когда задан номер узла и написан раздел о резервном
копировании
6.3 Запрос о подтверждении во время операций
Обычно tar выполняет команду без остановки до дальнейших инструкций.
Однако в некоторых ситуациях вы можете захотеть исключить некоторые
файлы и члены архива из операции (например, если места на диске


недостаточно). Вы можете это сделать с помощью автоматического
исключения некоторых файлов
FIXME: pxref File Exclusion
или с помощью диалогового выполнения операции, используя опцию
'--interactive' ('-w'). tar также принимает '--confirm
ation' для этой опции.
Когда задана опция '--interactive' перед чтением, записью или
удалением файлов, tar сначала выдает сообщение для каждого файла,
указывая, какой операции он подлежит, затем спрашивает подтверждения
терминала. Действия, требующие подтверждения - добавление файла в
архив, извлечение файла из архива, удаление файла из архива и удаление
файла с диска. Чтобы подтвердить действие, вы должны ввести строку,
начинающуюся с 'y'. Если ваша строка начинается с какого-нибудь
другого символа, tar пропускает этот файл.
Если tar читает архив со стандартного ввода, он открывает
файл'/dev/tty' для диалогового общения.
- 112 -
6.4 Контроль за данными при их хранении
Вы можете убедиться в точности архива, сравнивая файлы системы с
членами архива. tar может сравнивать архив с системой файлов, как
только архив записан, чтобы проконтролировать операцию записи, или
может сравнивать с системой файлов прошлый записанный архив.
Чтобы сделать проверку на несоответствия в архиве сразу после того,
как он был записан, используйте опцию '--verify' в сочетании с
операцией '--create'. Когда задана эта опция, tar проверяет члены
архива и их противоположные части в системе файлов и сообщает о
несоответствиях на стандартный вывод. В многотомных архивах каждый том
проверяется после того, как он записан, перед записью следующего тома.
Чтобы проконтролировать архив, вы должны быть способными его
прочитать перед окончанием последней записи. Эта опция используется
для выявления ошибок в данных на некоторых лентах. Архивы, записанные
на каналы, некоторые картриджные устройства и т.п. не поддаются
контролю.
6.5 Сравнение архива с системой файлов *
Опция '--compare' сравнивает члены архива в существующем архиве с их
противоположными частями в системе файлов и сообщает различия в


размере файла, режиме, имени хозяина, датах модификации и содержимом.
Если файл представлен в архиве, но не существует в системе файлов, tar
сообщает об этом.
Если вы используете аргументы имени файла в сочетании с 'tar
--compare', tar сравнивает заархивированные версии заданных файлов с
их противоположными частями системы файлов. Если вы задаете файл,
которого нет в архиве, tar сообщает об ошибке. Если вы не задаете
никаких файлов, tar сравнивает таким образом все файлы архива.
Т.к. tar сравнивает только файлы архива с файлами системы файлов, а
не наоборот, он игнорирует файлы системы файлов, которых нет в архиве.
- 113 -
В нижеприведенном примере члены архива 'stooges' 'larry', 'moe' и
'curly'сравниваются с файлами под теми же именами в системе файлов.
tar --compare --file=stooges larry moe curly
Если, например, файла 'curly' не существует в архиве, tar cообщает
об ошибке:
сurly: does mot exist
6.6 Как сделать архивы tar более мобильными
Создание в отдельной системе архива tar, предназначенного для
дальнейшего использования на многих других машинах и с помощью других
версий tar, является более сложной задачей, чем может показаться.
Форматы архивов tar развиваются еще со времени первой версии Unix, и
не всегда совместимы друг с другом. В этом разделе обсуждаются
несколько проблем и даются советы, как сделать архивы tar более
мобильными.
Золотое правило - простота. Например, ограничьте содержимое ваших
архивов только регулярными файлами и каталогами. Не пытайтесь теперь
сохранить разреженные файлы. Давайте обсудим еще несколько проблем.
6.6.1 Мобильные имена
Используйте прямые файлы и имена каталогов, пополненные символами
ASCII, избегая двоеточий, /, \ и других "опасных" символов. Избегайте
вложений каталогов. Пользуясь машинами старше System V, ограничьте
имена ваших файлов и каталогов 14-ю символами.
Если вы собираетесь читать свои архивы под MSDOS, вы не должны
полагаться на различия в именах файлов и можете использовать программу


GNU doschk, которая поможет вам в дальнейшей диагностике неправильных
в MSDOS имен, на которые накладываются еще большие ограничения, чем в
- 114 -
System V.
6.6.2 Символьные указатели
Обычно, когда tar архивирует символьный указатель, он записывает
что-то в архив, называющийся как адресат указателя. Так tar получает
точную запись содержимого системы файлов. '--derefence' ('-h')
используется с '--create' и заставляет tar архивировать файлы, на
которые установлены символьные указатели, вместо самих указателей. При
использовании этой опции, когда tar сталкивается с символьным
указателем, он архивирует указанный файл вместо того, чтобы просто
записать присутствие символьного указателя.
Имя, под которым файл хранится в системе файлов, не записано в
архиве. Чтобы записать и имя символьного указателя, и имя файла в
системе файлов, заархивируйте файл под обоими именами. Если все
указатели были записаны автоматически tar, указатель может быть
направлен на имя файла, больше не существующего в системе файлов.
Если tar опять сталкивается с файлом, на который смотрит указатель,
при создании того же архива, сохраняется вторая его копия. (Это может
рассматриваться как ошибка.)
Итак, для мобильных архивов не архивируйте символьные указатели как
таковые и используйте '--derefence': многие системы не предполагают
символьных указателей и, более того, ваши построения, может быть, не
смогут использоваться, если они содержат символьные указатели.
6.6.3 Старая V7 и архивы POSIX
GNU tar использует ранний стандарт POSIX 1003.1 ustar, который
отличается от последнего стандарта. Сделать доступ к возможностям
последней версии - нетривиальная задача.
Определенные старые версии tar не могут содержать дополнительную
информацию, записанную в более новых программах tar. Чтобы создать
- 115 -
архив формата V7 (а не ANSI), который можно прочитать этими старыми
версиями, задайте опцию '--old-archive' ('-j') в сочетании с
'--create'. tar также принимает '--portability' к этой опции.


Когда вы
ее задаете, tar не включает информации о каталогах, каналах, смежных
файлах, файлах устройства и задает информацию о хозяине в виде группы
и идентификатора пользователя вместо группы и имени пользователя.
При модифицировании архива не используйте '--old-archive', если
архив был создан не с помощью этой опции.
В большинстве случаев архив нового формата может быть прочитан
старой программой tar без особых проблем, так что эта опция редко
бывает нужна. С другой стороны, большинство современных tar могут
читать архивы старого формата, так что, может быть, вам удобнее будет
использовать '--old-archive'.
6.6.4 Проблемы проверки
SunOS и HP-UX tar не принимают архивы, созданные GNU tar и
содержащие не-ASCII имена файлов, потому что они используют
символизированные контрольные суммы, тогда как tar использует
несимволизированные контрольные суммы при создании архивов, как в
стандарте POSIX. При чтении GNU tar и считает контрольные суммы, и
что-нибудь принимает. Меня очень беспокоит то, что многие люди
пытаются произвести резервное копирование своих файлов, используя
дефектное (или по меньшей мере нестандартное) программное обеспечение,
и их ничему не научает пересохранение их ошибочных файлов с помощью
несоответствующего извлечения файлов.
GNU tar предполагает вычисление обеих сумм, символизированных и
несимволизированных, и что-то принимает. Однако 1.12.1 имеет ошибку,
из-за которой символизированная контрольная сумма неправильно
инициализируется и поэтому не работает. Это было исправлено в
последующих версиях GNU tar. Но GNU tar не модифицирован для создания
неправильных архивов, чтобы читать их с помощью ошибочного tar.
- 116 -
Я рассказывал, что вначале, когда Sun импортировал tar на свои
системы, они его перекомпилировали без учета того, что контрольные
суммы были по-разному сосчитаны из-за изменения в символизации char в
их компиляторе. Так что они начали считать контрольные суммы
неправильно и впоследствии стали несовместимыми сами с собой.

Контролирование формата архива

7.1 Обработка атрибутов файла *
Обработка атрибутов файла
--atime-preserve
Не изменяет время доступа к дампированным файлам.
-m
--modification-time
Не меняет время модификации файлов.
При использовании этой опции tar оставляет время модификации
файлов, которые он извлекает, соответствующим времени, когда
файлы были извлечены, вместо того, чтобы присваивать ему
время, записанное в архиве.
Эта опция не имеет смысла с '--list'.
--same-owner
Сохраняет извлеченные файлы с тем же правом собственности.
'-p
--same-permissions
--preserve-permissions
Извлекает всю информацию о защите.
Эта опция заставляет tar устанавливать режимы (разрешения
доступа) извлеченных файлов, как было записано в архиве.
Если эта опция не используется, текущий umask устанавливает
ограничения возможностей извлеченных файлов.
Эта опция не имеет смысла с '--list'.
-s
--same-order
--preserve-order
- 118 -
Сортирует имена для извлечения в соответствующий архив.
Эта опция сообщает 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.
Эта опция работает на физических устройствах (ленточных и
т.д.) и отдаленных файлах как на нормальных файлах, данные на
такие устройства или с них или отдаленных файлов
- 119 -
переблокируются другой копией программы tar для проведения
заданного размера блока. По умолчанию используются
коипрессионные параметры: если вам нужно их отменить,
используйте опцию '--gzip' и выполните gzip. (Или задайте
переменную среды 'GZIP'.) Если опция '--gzip' дана дважды,
или используется опция '--compress-blocks', tar перемещает
архив на границу следующего блока.
FIXME: pxref Blocking
Это может использоваться на нескольких устройствах, что
требует, чтобы все операции были умещались в определенный
размер.
Опция '--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
- 120 -
О разрушенных уплотненных архивах: у gzip'ированных файлов нет
излишка для максимального уплотнения. Адаптивная природа схемы
уплотнения значит, что таблицы уплотнения неявно
распространены на весь архив. Если вы потеряли несколько
блоков, динамичная конструкция таблиц уплотнения становится
несинхронизированной, и невелик шанс, что вы сможете
впоследствии обновить архив. Существуют предложения о
потомном или пофайловом уплотнении в GNU tar. Это позволит
просмотр содержимого без распаковки и десинхронизированное
уплотнение каждого тома или файла в случае разрушенных
архивов. Действуя так, мы можем освободить определенную часть
уплотнения. Но тогда обновление может быть легче. Итак, есть и
за, и против. Посмотрим.
-Z
--compress
--uncompress
Фильтрует архив через compress. Иначе - как '--gzip' ('-z').
--use-compress-program=программа
Фильтрует через prog (может принимать '-d').
7.3 Использование меньшего количества места при уплотнении.
7.3.1 Создание и чтение уплотненных архивов
'--compress'является индикатором архивов, хранящихся в уплотненном
формате. Опция '--compress' используется при сохранении времени в сети
и места в каналах, и когда мало памати. '--compress' заставляет tar
уплотнять архив при его записи и распаковывать при чтении.
Чтобы выполнить уплотнение, tar выполняет утилиту compress. По
умолчанию tar использует определенные параметры уплотнения. Если вы
хотите их отменить, отмените опцию '--compress' и выполните утилиту
compress. Используется вызов утилиты compress из самого tar, т.к. у
нее нет доступа к удаленным ленточным устройствам.
- 121 -
или операциями '--append', '--update' и 'delete'.
FIXME: xref Modifying
для получения информации об этих ооперациях.


Если недоступна утилита уплотнения, tar сообщает об ошибке.
'--compress-blocks' работает как '--compress', но при использовании
в сочетании с '--create' также заставляет tar перемещать последний
блок архива к границе следующего блока. Это используется на
определенных устройствах при требовании, чтобы все операции умещались
в заданный оазмер.
Заметьте: программа уплотнения может быть запатентована, и поэтому мы
рекомендуем вам прекратить ее использовать. Мы надеемся, что в будущем
будут другие программы уплотнения. Тогда мы изменим имя этой опции.
-Z
--compress
--uncompress
-z
Когда задана эта опция, tar уплотняет архив (при его записи)
или распаковывает (при его чтении). Используется в сочетании
с '--create', '--extract', '--list' и '--compare'.
'--compress-block'
'-z -z'
Действует как '--compress', но
FIXME: почему бы не использовать '-Z' вместо '-z -z'?
- 122 -
Вы можете уплотнить архивы с помощью '--gzip'. tar использует
программу gzip для уплотнения или распаковки архива при его записи или
распаковке.
'--compress'. GNU Project не рекомендует вам использовать compress,
потому что алгоритм его использования запатентован. Просто это будет
посягательством на авторские права.
прямого блокирования.
FIXME: pxref Blocking
Вместо использования реальных ленточных устройств исользуйте
'--gzip-block' или '--compress-block'.
Файл разрежен, если он содержит блоки нулей, существование которых
записано, но для них не выделяется места на диске. Когда вы задаете
опцию '--sparse' в сочетании с операцией '--create', tar при
архивировании проверяет все файлы на разреженность. Если он находит
разреженный файл, то использует разреженное представление файла в
архиве.
FIXME: xref Creating Archives
для получения более подробной информации о создании архивов.
dbm, содержащих много нулей. Эта опция сильно уменьшает место,
необходимое для хранения такого архива.
- 123 -
Пожалуйста, всегда используйте '--sparse' при выполнении резервного
копирования системы, чтобы избежать архивирования расширенных форм


файлов, хранящихся в разреженном виде в системе. Даже если в вашей
системе в данный момент нет разреженных файлов, они могут появиться в
будущем. Если вы используете '--sparse' во время резервного
копирования, вы можете быть уверены, что архив никогда не займет
больше места на носителе, чем то, что файлы занимают на диске (в
противном случае архивирование диска с разаеженными файлами может
потребовать сотен лент.
FIXME: xref возрастающий, когда задано имя узла.
tar игнорирует опцию '--sparse' при чтении архива.
'--sparse'
'-S'
опцию '--label=архивная_метка' ('-V 'архивная_метка'). Появится
специальная запись, идентифицирующая метка_тома как имя архива перед
архивом, которая будет выводиться при использовании опции '--list'.
Если вы создаете многотоиный архив при помощи '--multi-volume',
FIXME: pxref Using Multiple Tapes
то метка тома будет иметь 'Volume nnn', добавленное к имени, которое
вы даете, где n - номер тома архива. (Если вы используете опцию
'--label=архивная_метка' при чтении архива, она проверяет соответствие
метки на ленте той, что вы дали.
FIXME: xref Special Options for Archiving
- 124 -
участок содержимого файла, который никогда не записывается. Содержимое
дырки читается как нули. Во многих операционных системах память диска
не рассчитана на дырки, но они включаются в длину файла. Если вы
архивируете такой файл, tar может создать архив, который длиннее
изначального. Чтобы tar попытался идентифицироватть дырки в файле,
используйте '--sparse'. Когда вы используете опцию '--sparse', то для
любых файлов, использующих меньше места на диске, чем ожидается, tar
ищет файл для последовательных массивов нулей. Затем у файла, в
котором находятся последовательные массивы нулей, он архивирует только
"истинное содержимое". При извлечении (использование '--sparse' не
является необходимым для извлечения) любые такие файлы и
cозданные там, где были найдены продолжительные массивы нулей. Таким
образом, если вы используете '--sparse', архивы tar занимают не больше


места, чем изначальные.
Когда tar читает файлы, он вызывает модификацию их времени. Чтобы
tar пытался оставить время таким, каким оно было перед тем, как файл
был прочитан, используйте опцию '--atime-preserve'. Она не работает с
файлами, которые не являются вашими собственными, и не работает
интерактивно с пошаговой разгрузкой,
FIXME: pxref Making Backups
но достаточно хороша для некоторых других целей.
7.5 Структура архива *
Хотя архив может содержать много файлов, он сам - тоже не более чем
просто обыкновенный файл. Подобно другим файлам, архивный файл может
быть записан на устройство для хранения, на ленту или диск, его можно
посылать через канал или по сети, хранить в архивной системе файлов и
даже хранить в другом архиве. Архивным файлов нелегко манипулировать
(и даже читать) без использования утилиты tar или режима Tar в Emacs.
Физически архив состоит из серии элементов файлов, заканчивающейся
элементом конца архива, который состоит из 512 байтов нулей. Элемент
- 125 -
файла обычно описывает один из файлов архива (член архива) и состоит
из заголовка и содержимого файла. Заголовки файлов содержат имена
файлов и статистику, информацию о контрольных суммах, которую tar
использует для определения разрушенных файлов, и информацию о типах.
Одно и то же имя может иметь более чем один член архива. Такое может
быть, например, если в архиве хранится более одной версии файла. Для
получения информации о добавлении новых версий файла в архив
FIXME: pxref Modifying
Кроме элементов, описывающих члены архива, архив может содержать
элементы, которыe tar использует для хранения информации.
FIXME: xref Archive Label
Там приводится пример такого архивного элемента.
7.6 Оперирование режимными модификаторами *
-W
--verify
Пытается проверить архив после его записи.
Эта опция заставляет tar проверять архив после его записи.
Каждый том проверяется после того, как он был записан, и все
несоответствия записываются на стандартный вывод ошибки.
Для проверки требуется, чтобы архив был на носителе, на


котором возможен возврат назад. Это значит, что каналы,
некоторые картриджные устройства и еще некоторые устройства
не могут быть проверены.
--remove-files
Удаляет файлы, занося их в архив.
-k
- 126 -
--keep-old-files
Не заменяет файлы, существующие в архиве, новыми.
Опция --keep-old-files предохраняет tar от замены
существующих файлов на новые с теми же именами. Опция
--keep-old-files не имеет смысла в сочетании с '--list'.
'S
--sparse
Обрабатывает поврежденные файлы.
Эта опция проверяет файлы, подлежащие занесению в архив, на
повреждения и, если они есть, специально их обрабатывает.
Опция '--sparse' используется, когда много файлов dbm,
например, подвергнутых резервному копированию. Использование
этой опции очень уменьшает количество памяти, необходимое
для хранения таких файлов. В более поздних версиях эту
опцию, наверное, можно будет удалить, и проверка и обработка
поврежденных файлов будет происходить автоматически
специальными опциями GNU. На данном этапе эта опция нужна
для задания на командной строке при создании или модификации
архива.
-O
--to-stdout
Извлекает файлы на стандартный вывод.
При использовании этой опции, вместо создания заданных
файлов, tar записывает содержимое извлеченных файлов на
стандартный вывод. Это может использоваться, только если вы
извлекаете файлы, чтобы послать их через канал.
Эта опция не имеет смысла с '--list'.
--ignore-failed-read
Не существует на нечитаемых файлах.
FIXME: Этот раздел нужно записать.
При использовании совместимости указателей файлов Unix для обновления
- 127 -
каталоговых структур указанные файлы идут в один каталог и затем этот
каталог tar'ируется.
Привести более новый пример, использующий абсолютные имена.
Пайпирование одного tar к другому - простой способ копирования
содержимого каталога с одного диска на другой при сохранении дат,
режимов, хозяев и структуры указателей всех этих файлов.
cd sourcedirectory; tar сf - . | (cd targetdir; tar xf -)
или
FIXME: правильно ли следующее использование стандартного ввода/вывода?

Ленты и другие носители архивов

Несколько специальных моментов работы с лентами требуют более
подробного рассмотрения. Они обсуждаются ниже.
Использование tar на ленточных устройствах сопряжено с большим
количеством трудностей. Т.к. создание и манипулирование архивами,
расположенными на магнитной ленте, было первоначальным предназначением
tar, он имеет много возможностей, облегчающих это манипулирование.
Архивы обычно записываются на неперематывающие устройства -
картриджи, магнитные ленты или гибкие диски.
Количество данных на ленте или диске зависит не только от их разме-
ра, но также и от того, как они отформатированы. Катушка длиной 2400
футов магнитной ленты содержит 40 мегабайт данных при форматировании
1600 бит на дюйм. Картридж ленты EXABYTE содержит 2,3 гигабайт.
Магнитные носители можно использовать несколько раз: если архив на
ленте больше не нужен, его можно удалить, а ленту или диск
использовать опять. Однако качество носителя со временем снижается, и
ленты и диски начинают производить ошибки данных. Катриджи EXABYTE
нужно выбросить, когда появляется error count (какое-то количество
бит, которые нельзя использовать) больше 10 кб.
Запись на магнитные носители и удаление с них производится с помощью
магнитных полей и должна быть защищена от таких полей во избежание
повреждения данных.


Засовывать гибкий диск в железный футляр - не
очень хорошая идея.
8.1 Выбор и переключение устройств *
-f [hostname]:файл
--file=[hostname]файл
Использует архивный файл или файл устройства на машине
- 129 -
hostname. Эта опция используется для задания имени файла
архива, с которым работает tar. Если имя файла - '-', tar
читает архив со стандартного ввода (при составлении списка или
извлечении) или записывает его на стандартный вывод (при
создании). Если имя файла '-' дано при модификации архива, tar
читает изначальный архив со стандартного ввода и записывает
новый архив на стандартный вывод.
Если имя файла содержит ':', это интерпретируется как
'hostname:filename'. Если hostname содержит символ '@', это
рассматривается как 'uaer@hostname:filename'. В обоих случаях
tar вызывает команду rsh (или remsh) для того, чтобы начать
'/etc/rmt' на удаленной машине. Если вы даете альтернативное
login name, оно пойдет в rsh. Естественно, удаленная машина
должна иметь выполнимый '/etc/rmt'. Эта программа - из
калифорнийского университета, и копию кода источника можно
найти с помощью источника для tar; она компилируется и
устанавливается по умолчанию.
Если эта опция не дана, но задана переменная среды TAPE,
используется ее значение, в противном случае старые версии tar
используют специальное архивное имя (оно выбирается, когда tar
откомпилирован). Обычно оно устанавливается на первое
ленточное устройство или другой транспортабельный носитель I/O.
Начиная с версии 1.11.5 GNU tar использует в качестве
устройства по умолчанию стандартный ввод и стандартный вывод,
и я больше не стану предлагать автосатическую проверку
устройства во время установления. Это не работает в очень
многих случаях, это безнадежно. Сейчас инсталлятор может
отменить стандартный ввод и стандартный вывод для устройства
умолчания, если это для него/нее более предпочтительно. В
дальнейшем, я думаю, использование tar будет осуществляться на
каналах и дисках, а не на лентах, картриджах и дискетах.


Некоторые пользователи думают, что использование стандартного
ввода и вывода протекает без проблем. Это приводит к злобным
сюрпризам на вашем экране, если вы забыли задать имя файла
вывода - особенно если вы собираетесь через сеть или
- 130 -
терминальный сервер, способный переносить большое количество
информации. Появляется так много сообщений об ошибках и так
много противоречивых требований, что в конечном итоге мы
считаем положение совершенно безвыходным. Можно, конечно,
использовать что-нибудь вроде '/dev/tape', но это также
сопряжено со многими трудностями, от зависания процессов до
случайного разрушения лент. После всего этого вы по-другому
станете относиться к стандартному вводу и выводу.
GNU tar читает и записывает архивы в блоках, я подозреваю, что
это единственная причина того, что блочные устройства
преобладают над символьными. Более вероятно, что блочные
устройства просто более эффективны. Инсталлятор можно
проверить с помощью 'DEFTAPE' в '.
--force-local
Архивный файл локален, даже если он содержит двоеточие.
--rsh-command=команда
Использует отдаленную команду вместо rsh. Эта опция работает
так, что люди, использующие что-нибудь другое, чем стандарт
rsh (т.е. керберизованный rsh), имеют доступ к отдаленным
устройствам. Когда эта команда не используется, вместо нее
используется команда оболочки, найденная после установления
программы tar, например '/usr/ucb/rsh', /usr/bin/remsh',
/usr/bin/rsh', /usr/bsd/nsh'. Инсталлятор может это отменить с
помощью определения переменной RSH среды во время установления.
-[0-7][lmh]
Задает устройство и плотность.
'-M
--multi-volume
Создает список (извлекает) многотомный архив.
- 131 -
Эта опция заставляет tar записывать многотомный архив - он
может быть больше, чем соответствующий сердечнику, который
его хранит.
FIXME: xref Multi
-L число
--tape-length=число
Меняет ленту после записи число*1024 байта.
Эту опцию можно использовать, когда ваши ленточные устройства
не могут точно определять конец лент.


Установив максимальную
длины ленты, вы можете полностью избежать проблем.
-F файл
--info-script=файл
--new-volume-script=файл
Выполняет файл в конце каждой ленты. Это обеспечивает
'--multi-volume'.
Отдаленный сервер
Чтобы получить доступ к ленточному устройству на отдаленной машине,
tar использует отдаленный сервер, написанный в университете Беркли.
Отдаленный ленточный сервер можно установить с помощью '/etc/rmt' на
любой машине, чье ленточное устройство вы хотите использовать. tar
вызывает '/etc/rmt' выполнением rsh или remsh на отдаленной машине,
обычно использующей другое login name, если оно требуется.
Обеспечивается копия источника для отдаленного ленточного сервера.
Это Copуright @ 1983 by the Regents of the University of California,
но может распространяться свободно. Инструкции по компилированию и
установлению включены в 'Makefile'.
Если вы не используете опцию '--absolute-names', GNU tar не позволит
вам создать архив, содержащий абсолютные имена файлов (имена,
начинающиеся с '/'). Если вы попытаетесь, tar автоматически удалит
- 132 -
начальные '/' из имен, которые он хранит в архиве. Он также выведет
предупредительное сообщение, рассказывающее, что он делает.
При чтении архива, который был создан другой программой tar, GNU tar
автоматически извлекает элементы архива, имеющие абсолютные имена, как
если бы они не были абсолютными. Это важная особенность. Посетитель
однажды дал tar ленту для пересохранения; оператор использовал Sun tar
вместо GNU tar, и в результате многие участки нашего '/bin' заменились
на версии с ленты - стоит ли говорить, что мы не очень обрадовались
перспективе восстанавливать систему файлов по резервным копиям.
Например, если архив содержит файл '/usr/bil/computoy', GNU tar
извлечет его в текущий каталог. Если вы хотите извлечь файлы архива
под теми же абсолютными именами, которые они имели при создании
архива, вы должны сделать 'cd /' перед извлечением файлов из архива
или использовать опцицию '--absolute-names' или команду 'tar -C /...'.


Некоторые версии Unix (например Ultrix 3.1) требуют, чтобы при
неправильности архива следовала короткая запись в конце ленты. В
результате опция -M не будет правильно работать. Лучшее решение
проблемы - использовать размер архива гораздо больше, чем значение по
умолчанию 20.
Чтобы модифицировать архив, tar должен быть способным вернуться по
архиву для того, чтобы перечитать или перезаписать блок, который был
только что прочтен (или записан). Это возможно на двух типах файлов:
нормальные файлы диска (или любые другие файлы, по которым можно
вернуться с помощью 'lseek') и стандартные 9-дорожечные магнитные
ленты (или другие типы лент, по которым можно вернуться с помощью
MTIOCYOP ioctl.
Это значит, что команды '--append', '--update', '--concatenate' и
'--delete' не работают на других типах файлов. По некоторым носителям
просто нельзя вернуться, это значит, что эти команды и опции никогда
не смогут с ними работать. К таким носителям относятся каналы и
картриджные ленточные устройства.
По некоторым другим носителям можно возвращаться, и tar будет
- 133 -
работать с ними, как только его модифицируют для этого.
Архивы, созданные с помощью опций '--multi-volume',
'--label=архивная_метка' и '--incremental', могут не читаться другими
версиями tar. В частности, обновление файла, который был разделен
границей тома, требует очень осторожной работы с dd, если его вообще
можно осуществить. Другие версии tar могут также создавать пустой
файл, чье имя - то же, что в заголовке тома. Некоторые версии tar
могут создавать нормальные файлы вместо заархивированных каталогов с
помощью опции '--incremental'.
Некоторые общие проблемы и их решения:
ошибки системы:
отрицается разрешение
нет такого файла в каталоге
не хозяин
ошибки tar:
ошибка контрольной суммы каталога
ошибка формата заглавия
ошибки носителя/системы:
ошибка i/o
устройство занято
8.2 Разбивка на блоки *
При записи на ленту tar записывает содержимое архива в так
называемые блоки. Чтобы изменить размер блока, принимаемый по


умолчанию, используйте опцию '--block-=size=512-размер'. Каждый
блок будет выражен в записях размера (одна запись tar - 512 байт).
FIXME: xref Archive Format
Каждый файл, записанный в архив, использует по меньшей мере один
целый блок. Поэтому использование больших блоков может привести к
- 134 -
обилию пустых мест при небольшом количестве файлов. С другой стороны,
больший блок может чаще читаться и более эффективно записываться.
Дальнейшее усложнение проблемы в том, что ленточные устройства
полностью игнорируют разбивку на блоки. В данном случае тоже
предпочтительнее большой размер блока (потому что уровни программного
обеспечения ленточного устройства все еще уважают разбивку на блоки),
но это не так важно, как на ленточных устройствах, уважающих разбивку
на блоки.
При чтении архива tar обычно сам вычисляет размер архива. Если при
этом был использован нестандартный размер блока во время создания
архива, tar выдает сообщение о нестандартном блочном факторе, а затем
нормально работает. На некоторых ленточных устройствах, однако, tar не
может сам вычислить размер блока. На большинстве из них вы должны
задавать блочный фактор (с помощью '--block-size=512-размер', больший,
чем точный блочный фактор, а затем использовать опцию
'--read-full-blocks' ('-B'). (Если вы задаете блочный фактор с помощью
'--block-size=512-размер' и не используете опцию '--read-full-blocks',
tar не пытается вычислять размер блока.) На некоторых устройствах вы
можете всегда точно задать размер блока с помощью
'--block-size=512-размер' при чтении, т.к. tar не вычисляет его. В
любом случае используйте '--list' перед любым извлечением, чтобы
посмотреть, правильно ли tar прочитал архив.
Если вы испрльзуете блочный фактор больше 20, более старые программы
tar могут не быть способными читать архив, т.ч. мы рекомендуем для
использования на практике ограничиться этим значением. Однако GNU tar
предполагает как угодно большие размеры блоков, ограниченные только
количеством виртуальной памяти или физическими характеристиками


ленточного устройства.
Если вы записываете уплотненный архив на ленту с помощью
'--compress' или '--gzip',
FIXME: pxref Input and Output
tar не сможет правильно разбить архив на блоки . Этого не случится,
- 135 -
если вы записываете архив в нормальный файл через канал, или
записываете его на ленточное устройство. Используйте
'--compress-blocks' или '--gzip-block', чтобы заставить tar правильно
выполнить разбивку на блоки.
8.2.1 Вариации формата *
Параметры формата задаются, когда архив записан на носитель.
Оптимальный выбор параметров формата варьирует в зависимости от типа и
числа архивируемых файлов и от носителя, используемого для хранения
архива.
Чтобы задать параметры формата при создании архива, вы можете
использовать опции, описанные в следующих разделах. По умолчанию, если
вы не задаете параметров формата, tar использует специальные
параметры. Вы не можете модифицировать уплотненный архив. Если вы
создаете архив с помощью '--block-size=512-размер',
FIXME: pxref Blocking
Factor
вы должны задать размер блока для оперировании архивом.
FIXME: xref Matching Format Parameters
Там приведены примеры параметров формата.
8.2.2 Блочный фактор архива *
Данные в архиве группируются в записи, каждая по 512 байт. Записи
записываются и читаются в так называемых блоках. Число записей в блоке
(т.е. размер блока в 512-байтных единицах) называется блочным
фактором. Опция '--block-size=512-размер' задает блочный фактор
архива. По умолчанию блочный фактор обычно бывает 20 (т.е. 10240
байта), но его можно и устанавливать. Чтобы вычислить блочный фактор
существуюшего архива, используйте 'tar --list --file=имя_архива'. На
- 136 -
некоторых устройствах это может не работать.
Блоки разделены промежутками, которые занимают место на носителе
архива. Если вы архивируете на магнитной ленте, использование большего
блочного фактора (и, стало быть, больших блоков) обеспечивает более
быстрое проникновении и позволяет вам поместить на ленту большее
количество данных.


Если вы архивируете на картридж, очень большой
блочный фактор (скажем, 126 или больше) сильно повышает эффективность.
С другой стороны, маленький блочный фактор может использоваться при
архивировании маленьких файлов, чтобы избежать большого количества
нулей. Вообщем, идеальный размер блока зависит от размера межблочных
промежутков на ленте, которую вы используете, и среднего размера
файлов, которые вы архивируете.
FIXME: xref Creating
Archives
для получения информации о записи архивов.
FIXME: нужен пример на использование картриджа с размером блока=126 или
больше.
Архивы с блочным фактором больше 20 не могут читаться очень старыми
версиями tar или некоторыми новыми версиями tar, выполняемыми на
старых машинах с маленьким адресным пространством. С помощью GNU tar
блочный фактор архива ограничивается только максимальным размером
блока устройства, содержащего архив, или количеством доступной
виртуальной памяти.
Если вы используете свой блочный фактор при создании архива, вы
должны задать этот же блочный фактор при его модификации. Некоторые
архивные устройства требуют от вас также задания блочного фактора при
чтении архива, однако обычно это не нужно. Обычно вы можете
использовать '--list' без задания блочного фактора - tar сообщает ваш
размер блока и затем, как обычно, выдает список членов архива. Чтобы
извлечь файлы из архива про нестандартном блочном факторе (в
частности, если вы сомневаетесь в его значении), вы обычно должны
использовать опцию '--read-full-blocks' ('-B') при задании блочного
- 137 -
фактора больше, чем блочный фактор архива (т.е. tar --extract
--read-full-blocks-block-size=300'.)
FIXME: xref Listing Contents
для получения информации об операции '--list',
FIXME: xref read-full-blocks
для получении более подробного объяснения работы этой опции.
'--block-size=число'
'-b число'
Задает блочный фактор архива. Может использоваться с любой
операцией, но обычно не является необходимой с '--list'.
разбивка на блоки устройства


-b блоки
--block-size= блоки Устанавливает размер блока равным блоки*512 байт.
Эта опция используется для задания блочного фактора архива.
При чтении или записывании архива tar будет читать и
записывать архив в блоках вышеуказанного размера. По
умолчанию блочный фактор устанавливается после компиляции
tar и обычно равен 20.
Блочный фактор больше 20 не может ситаться очень старыми
версиями tar или или некоторыми новыми версиями tar,
выполняемыми на старых машинах с маленькой памятью.
На магнитную ленту большие блоки позволяют записывать больше
данных. Если архив в файле диска или канале, вы, может быть,
захотите использовать меньший блочный фактор, потому что
большой вызвал бы большое количество нулевых байт в конце
архива.
При записи на картриджи и другие поточные ленты, очень
большой блочный фактор (скажем, 126 или больше) сильно
- 138 -
повышает эффективность. Однако вы можете задать тот же
блочный фактор при чтении или модификации архива.
В GNU tar блочный фактор архива ограничивается только
максимальным размером блока устройства, содержащего архив,
или количеством доступной виртуальной памяти.
--block-compress
Разбивает на блоки вывод уплотнения лент.
-i
--ignore-zeros
Игнорирует блоки нулей в архиве (имеется в виду EOF). Опция
'--ignore-zeros' заставляет tar игнорировать блоки нулей в
архиве. Обычно блок нулей указывает на конец архива, но при
чтении поврежденного архива или архива, который был создан
из нескольких архивов с помощью cat, эта опция позволяет tar
читать весь архив. По умолчанию эта опция не работает,
поскольку многие версии tar после нулевых блоков записывают
всякую ненужную информацию.
Заметьте, что эта опция заставляет tar читать конец
архивного файла, что иногда позволяет избежать проблем,
когда на одной ленте хранится много файлов.
-B
--read-full-blocks
Производит переразбивку на блоки (для чтения каналов
4.2BSD). Если используется эта опция, tar не паникует, когда
при попытке прочитать блок из архива возвращается неполный


блок. Вместо этого tar продолжает читать, пока не получит
полный блок.
Эта опция включается по умолчанию, когда tar читает архив со
стандартного ввода или с отдаленной машины. Это из-за
системы BSD Unix. Если эта опция не используется, tar
сталкивается с ошибкой, как только он считывает неполный
- 139 -
блок с канала.
Эта опция также используется с командами для модификации
архива.
Разбивка ленты на блоки
FIXME: Cоответствующие опции нужно отовсюду переместить сюда.
При работе с различными лентами или картриджами вы должны заботиться
о выборе блокирования, которое является количеством блоков диска,
которые вы записываете вместе как единый ленточный блок на ленту без
ленточных промежутков. Ленточный промежуток - небольшой участок ленты,
не содержащий информации, который используется для замедления
остановки ленты и позднейшего восстановления скорости записи или
чтения. Когда устройство начинает читать ленточный блок, он должен
быть прочтен весь без остановок, а ленточный промежуток может
остановить движение ленты без потери информации.
Высокая разбивка на блоки (при которой на ленточный блок кладется
больше дисковых блоков) использует ленту более эффективно, потому что
при ней меньше ленточных промежутков. Но чтение таких лент может быть
более трудным для системы, т.к. потребуется больше памяти, чтобы
получить наконец полный блок. В дальнейшем, если есть ошибка чтения на
огромном ленточном блоке, не очень приятно будет восстанавливать
информацию. Таким образом, разбивка на блоки не должна быть ни очень
низкой, ни очень высокой. По умолчанию tar использует разбивку на
блоки 20 по историческим причинам, и при чтении или записи диска
ничего особенного не случается. При современной ленточной технологии
более предпочтительна высокая разбивка на блоки. Sun рекомендует
разбивку на блоки 126 для Exabyte и 96 для DAT. Другие производители
могут давать для тех же лент другие рекомендации. Это может также
зависеть от буферной техники, используемой в современном контроле


лент. Некоторые предпочитают минимальную или наоборот максимальную
разбивку на блоки, а некоторые используют для этой цели только степени
двойки.
- 140 -
Итак, для разбивки на блоки нет строгих правил. Но разбивка на блоки
времени чтения может идеально использоваться как разбивка на блоки
времени записи. В одном моем знакомом месте сочли за лучшее
использовать разбивку на блоки 32, чтобы гарантировать единообразие
своих лент.
77
8.3 Много архивов на одной ленте
FIXME: Cоответствующие опции нужно отовсюду переместить сюда.
Большая часть ленточных устройств имеет два элемента в каталоге
'/dev', или пару элементов, которые отличаются только меньшим числом
для таких устройств. Давайте возьмем '/dev/tape', которое часто
указывает на обычное ленточное устройство данной системы. Это можно
записать в двух видах: '/dev/nrtape/' или '/dev/ntape'. Простейшее имя
- перематывающая версия устройства, тогда как имя, содержащее 'nr'
- неперематывающая версия того же устройства.
Перематывающее устройство автоматически перематывает ленту на
начало, когда оно открыто или закрыто. Т.к. tar открывает архивный
файл перед использованием и закрывает после него, это значит, что
просто команда
tar cf /dev/tape каталог
будет перематывать ленту на начало и вначале, и после сохранения
содержимого каталога, таким образом предыдущее содержимое ленты
удаляется, и любая следующая записанная операция уничтожит то, что
только что было записано.
Итак, устройстрво перемотки предназначено для хранения одного, и
только одного, файла. Если вы хотите положить более одного архива на
одну ленту, вы должны избегать перематывающей версии ленточного
устройства. Вы также должны уделять особое внимание положению ленты.
Ошибки в положении могут привести к удалению с ленты ценных данных.
- 141 -
Многие, наученные горьким опытом, будут использовать впредь только
перематывающие устройства и ограничиваться одним файлом на ленте,
чтобы избежать такого риска. Будьте полностью уверены, что запись не


на то место ленты приведет к уничтожению всей информации, которая
раньше на этом месте находилась, и скорее всего до конца ленты, и,
главное, эту информацию не восстановить.
Чтобы сохранить каталог-1 как первый архив в начале ленты и
убедиться, что лента готова для второго архива, вы должны набрать:
mt -f /dev/nrtape rewind
tar cf /dev/nrtape каталог-1
Ленточные метки - специальные магнитные шаблоны, записанные на
носителе, которые позже распознаются читающими средствами. Эти метки
используются после каждого файла, когда их много на одной ленте.
Пустой файл (т.е. две метки подряд) обозначает логический конец ленты,
после которого нет файлов. Обычно драйверы неперематывающих
устройств будут реагировать на требование закрытия, выданное tar,
прежде всего помещением двух меток в конец вашего архива и
возвращением одного из них назад. Итак, если вы извлекли ленту из
ленточного устройства, она кончилась. Но если вы на текущую позицию
записали другой файл, то вторая ленточная метка удалится и между
файлами останется только одна.
Теперь вы можете сохранить каталог каталог-2 как второй архив после
первого на той же ленте с помощью:
tar cf /dev/nrtape каталог-2
И т.д. для всех архивов, которые вы хотите записать на ту же ленту.
Другой распространенный случай - когда вы не все архивы записываете
в один и тот же день, и между ними вам нужно вынимать и хранить ленту.
Главное - вы должны запомнить, сколько файлов уже хранится на вашей
ленте. Предположим, у вас уже 16 файлов и вы готовы записать 17-й. Вы
должны позаботиться о том, чтобы пройти первые 16 меток перед
записыванием каталога-17 с помощью команд:
- 142 -
mt -f /dev/nrtape rewind
mt -f /dev/nrtape fsf 16
tar cf /dev/nrtape каталог-17
Во всех предыдущих примерах мы рассматривали разбивку на блоки
отдельно, но вы должны хорошо уметь делать такие вещи.
FIXME: xref Blocking
8.3.1 Положение ленты и ленточные метки *
Так же, как архивы могут хранить более одного файла системы файлов,
ленты могут хранить более одного архивного файла.


Чтобы отметить, где
архивные файлы ( или другие типы файлов, хранящиеся на ленте)
начинаются и кончаются, ленточные архивные устройства ставят ленточные
метки на носителе архива: по одной между файлами и две после всех
файлов.
Если обозначить данные нулями, а метки - крестами, то лента может
выглядеть следующим образом:
0000x000000x00000x00x00000xx--------------------------
Ленточные устройства читают и записывают на них при помощи
читающей/пишущей головки - физической части устройства, которая может
воспринимать только одну точку на ленте в определенную единицу
времени. Когда вы используете tar для чтения или записи архивных
данных, устройство начинает чтение или запись с того места, где в
данный момент находится головка, независимо от того, какой это архив
или какая часть архива. Перед записыванием архива вы должны убедиться,
что никакие нужные данные не уничтожатся. Перед чтением архива нужно
удостовериться, что головка находится на начале архива, который вы
хотите прочитать. (restore находит архивы автоматически.)
FIXME: xref Scripted
Restoration
- 143 -
FIXME: xref mt
для получения объяснения пользования утилитой движения ленты.
Если вы хотите добавить новые архивные элементы файлов на ленту, вы
должны перемотать ленту на клнец существующих файлов, встать на
последнюю метку и записать новый архивный файл. Если вы запишете два
архива, лента будет выглядеть следуюшим образом:
0000x000000x00000x00x00000xx000x0000xx----------------
8.3.2 Утилита mt *
FIXME: Правда ли, что она работает только на неблочных устройствах?
Нужно объяснить различие при помощи размера блока
(фиксированного или переменного).
Вы можете использовать утилиту mt для передвижения или перемотки
ленты на место после заданного числа архивных файлов на ленте. Это
позволяет перейти на начало архива перед его извлечением или чтением
или на конец архивов перед записыванием нового.
FIXME: Почему не сказать "передвигаться до тех пор, пока не будут
найдены две метки подряд"?


Синтаксис команды mt:
mt [-f имя_ленты] операция [номер]
где имя_ленты - имя ленточного устройства, номер - число раз, сколько
нужно выполнить эту операцию (по умолчанию - один), операция - одна из
нижеприведенных:
FIXME: Не используется ли это для операций записи?
sof
- 144 -
weof
Выдает номер ленточной метки на текущей позиции ленты.
fsf
Передвигает ленту на "номер" файлов вперед.
bsf
Передвигает ленту на "номер" файлов назад.
rewind
Перематывает ленту (не зависит от "номера").
offline
rewoff1
Перематывает ленту и выключает ленточное устройство (не
зависит от "номера").
status
Выдает информацию о состоянии ленты.
Если вы не задали имя_ленты, mt использует переменную TAPE среды;
если TAPE не существует, mt использует устройство '/dev/rmt12'.
При успешном завершении операции mt возвращает 0, если команда не
распознана - 1, если она ошибочна - 2.
FIXME: Нужно добавить сюда информацию о том, как найти архив.
Если вы используете опцию '--extract' c '--label=архивная_метка',
tar читает архивную метку (на нее должна быть установлена головка) и
печатает ошибку, если архивная метка не соответствует заданной. Если
метки совпали, tar извлекает архив.
- 145 -
FIXME: xref Archive Label
FIXME: xref Matching Format Parameters
'tar --list --label' заставляет tar выводить метку.
FIXME: программа должна вывести все метки на ленте?
8.4 Использование множественных лент *
Часто вам может понадобиться записать большой архив, больше, чем
может поместиться на ленте, которую вы используете. В таком случае вы
можете использовать много команд tar, но это неудобно, в частности
если вы используете опции, такие как '--exclude=шаблон' или дампируете
всю систему файлов. Таким образом, tar автоматически предполагает
множественные ленты.
Наберите '--multi-volume' на командной строке, и tar будет,
достигнув конца ленты, выдавать приглашение для следующей ленты и
продолжать работу. Каждая лента будет иметь независимый архив, его


можно прочесть отдельно. ( за исключением случая, когда файл не весь
помещается на ленту, и какая-то его часть находится на другой ленте. В
этом случае вы должны извлечь его из первого архива, используя
'--multi-volume', а затем при появлении приглашения поместить его во
второй архив, т.ч. tar может обновить обе половинки файла).
При запросе новой ленты tar принимает любой из следующих ответов:
'?'
требование объяснить возможные ответы
'q'
требование немедленного выхода
- 146 -
'n имя_файла'
требование записать следующий том на файл имя_файла
'!'
требование выхода в подоболочку
'y'
требование начать запись следующего тома.
(Вы должны просто нажать 'у' после того, как вы сменили ленту: в
противном случае tar будет записывать на том, который только что
записан).
Если вы хотите, чтобы все было более разработано, задайте опцию
'--info-script=имя_сценария'. Файл имя_сценария должен быть программой
(или сценарием оболочки), которая должна выполняться вместо обычной
процедуры приглашения. Когда программа заканчивается, tar сразу же
начинает запись следующего тома. Работа 'n' невозможна, если вы
используете '--info-script=имя_сценария'.
Метод, который tar использует для определения конца ленты,
несовершенен и не работает в некоторых операционных системах и на
некоторых устройствах. Вы можете использовать
'--tape-length=1024-размер', если tar сам не может определить конец
ленты. Аргумент размера должен быть равен размеру ленты.
Имя тома, используемое tar в приглашении сменить ленту, можно
изменить; если вы задаете опцию '--volno-file=файл_под_номером',
файл_под_номером - десятичное число. Оно будет использоваться в
качестве номера тома первого записанного тома. Когда tar закончит, он
перепишет файл с текущим номером тома. (Это не изменяет номера тома,
записанного на ленточной метке -
FIXME: pxref Special Options for Archiving
это влияет только на номер, используемый в приглашении).
- 147 -
Если вы хотите поместить tar в цикл через серию ленточных устройств,


вы можете использовать ответ 'n' на приглашение сменить ленту. Однако
это совсем не работает с '--info-script=имя_сценария'. Таким образом,
если вы задаете множественные опции tar '--foile=имя_архива', то
используются заданные файлы в той же последовательности, что и тома в
архиве. Только когда первый файл последовательности нужно использовать
опять, tar выдает приглашение сменить ленту (или выполнить сценарий).
Многотомные архивы
При использовании опции '--multi-volume' tar не прекращает работу,
если он больше не может читать или записывать данные. Вместо этого он
просит вас приготовить другой том. Если архив находится на магнитной
ленте, вы должны сменить ленту, если на гибком диске - сменить диск, и
т.д.
Каждый том многотомного архива - независимый архив tar. Например, вы
можете отдельно составить список архива или извлечь его, только не
нужно задавать опцию '--multi-vilume'. Однако, если один файл
архива разделен томами, единственный способ успешно его извлечь -
используя команду '--extract --multi-volume'.
8.4.1 Архивы, которые длиннее одной ленты или диска *
Чтобы создать архив, который больше, чем может поместиться на одной
единице носителя, используйте опцию '--multi-volume' в сочетании с
'--create'.
FIXME: pxref Creating Archives
Многотомным архивом можно манипулировать как всеми остальными
архивами (с помощью задания опции '--multi-volume'), но он занимает
более одной ленты или одного диска.
Когда вы задаете '--multi-volume', tar не сообщает об ошибке, когда
доходит до конца тома архива (при чтении) или до конца носителя (при
- 148 -
записи). Вместо этого он предлагает вам загрузить новый том. Если
архив находится на магнитной ленте, вы должны сменить ленту, когда
увидите приглашение, если на гибком диске - сменить диск, и т.д.
Вы можете читать каждый отдельный том многотомного архива, как если
бы он сам был архивом. Например, чтобы составить список содержимого
тома, используйте опцию '--list' без '--multi-volume'. Чтобы извлечь


член архива из тома, используйте '--extract' без '--multi-volume'.
Если член архива расположен между томами (т.е. его элемент
начинается на одном томе носителя и заканчивается на другом), вы
должны задать '--multi-volume' для того, чтобы успешно его извлечь. В
этом случае вы должны загрузить том, когда начинается член архива, и
использовать 'tar --extract --multi-volume' - tar выдаст приглашение
следующим томам, если они нужны.
FIXME: xref Extracting From Archives
для получения более подробной информации о извлечении архивов.
'--info-script=имя_сценария' - то же, что и '--multi-volume', за
исключением того, что tar не приглашает вас прямо сменить том
носителя, когда предыдущий уже полон - вместо этого tar выполняет
команды, которые вы храните в имя_сценария. Эта опция может
использоваться для передачи сообщений типа 'Someone please come change
my tape' при выполнении резервного копирования без оператора. Когда
сделан имя_сценария, tar принимает, что носитель был изменен.
FIXME: Здесь должна быть программа-образец, включающая выход перед
окончанием.
'--multi-volume'
'-M'
Создает многотомный архив при использовании в сочетании с
'--create'. Для выполнения любой другой операции с
многотомными архивами задайте '--multi-volume' в сочетании с
этой операцией.
- 149 -
'--info-script-программный_файл'
'-F программный_файл'
Создает многотомный архив по сценарию. Используется в
сочетании с '--create'.
8.4.2 Ленточные файлы *
Когда tar записывает архив на ленту, он создает один ленточный файл.
Если много архивов записано на одну ленту один за другим, каждый из
них записывается как отдельный ленточный файл. Необходимо установить
ленту перед выполнением извлечения. Чтобы это сделать, используйте
команду mt. Для получения информации о команде mt и организации лент в
последовательность ленточных файлов
FIXME: см. ***
8.5 Включение метки в архив *
FIXME: Должен ли аргумент к -label быть строкой, заключенной в кавычки?
Чтобы избежать проблем, вызванных тем, что бумажные метки не