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

Версия 1.1.18
Июнь 1995
Содержание
Глава 1. ВВЕДЕНИЕ
1.1. Что делает tar
1.2. Авторы GNU tar
1.3. Сообщения об ошибках или предложения
Глава 2. ВВЕДЕНИЕ В ТAR
2.1. Как создавать архивы
2.1.1. Создание архивов файлов
2.1.2. Использование tar в словесном режиме
2.1.4. Создание архива из верхнего каталога
2.1.5. Сравнение файлов архива с файлами системы файлов
2.1.6. Использование сравнения начиная с верхнего каталога
2.2. Как составлять список архивов
2.2.1. Список содержимого архива
2.2.2. Получение дополнительной информации о файле
2.2.3. Занесение заданного файла в архив
2.2.4. Перечисление содержимого сохраненного каталога
2.3. Как извлекать из архива его члены
2.3.1. Извлечение файлов из архива в ваш текущий каталог
2.3.2. Извлечение файлов из архива
2.3.3. Извлечение заданных файлов
2.3.4 Извлечение каталогов
2.4. Как добавлять файлы в уже существующие архивы
2.4.1. Запись файлов в архив
2.4.2. Модифицированные файлы в архиве
2.4.3 Конкатенация архивов
2.5. Как удалить из архива его члены
Глава 3. ВЫЗОВ GNU TAR
3.1 Общий обзор tar
3.2 Стили написания опций
3.2.1 Мнемонический стиль
3.2.2 Краткий стиль
3.2.3 Старый стиль опций
3.2.4 Cмешанные стили опций
3.3 Все доступные опции
3.3.1 Выбор устройства и переключение
3.3.2 Разбивка устройства на блоки
3.3.3 Cтарая классификация опций
Глава 4. ОСНОВНЫЕ ОПЕРАЦИИ TAR
4.1 Cоздание нового архива
4.2 Добавление в существуюший архив
4.3 Модификация архива
4.4 Комбинирование архивов
4.5 Удаление членов архива
4.6 Вывод списка членов архива
4.7 Извлечение членов архива
4.7.1 Опции, помогающие чтению архива
4.7.2 Изменения в записи tar файлов
4.7.3 Извлечение с недостаточного пространства диска
4.8 Сравнение членов архива с файлами
4.9 Согласование параметров формата
Глава 5. ЗАДАНИЕ ИМЕН TAR
5.1 Изменение имени архива
5.2 Выбор файлов с определенными характеристиками
5.2.1 Чтение имен из файла
5.2.3 Оперирование только новыми файлами
5.2.4 Пересечение границ системы файлов
5.3 Локальный отбор файлов
5.3.1 Переход к другому каталогу
5.3.2 Абсолютные имена файлов
Глава 6. ДАЖЕ БУДУЧИ ОЧЕНЬ ВНИМАТЕЛЬНЫМ…
6.1 Документация GNU tar
6.2 Проверка прогресса tar
6.3 Запрос о подтверждении во время операций
6.4 Контроль за данными при их хранении
6.5 Сравнение архива с системой файлов
6.6 Как сделать архивы tar более мобильными
6.6.1 Мобильные имена
6.6.2 Символьные указатели
6.6.3 Старая V7 и архивы POSIX
6.6.4 Проблемы проверки
6.7 Защита записи
Глава 7. КОНТРОЛИРОВАНИЕ ФОРМАТА АРХИВА
7.1 Обработка атрибутов файла
7.2 Выбор формата архива
7.3 Использование меньшего количества места при уплотнении
7.3.1 Создание и чтение уплотненных архивов
7.5 Структура архива
7.6 Оперирование режимными модификаторами
Глава 8. ЛЕНТЫ И ДРУГИЕ НОСИТЕЛИ АРХИВОВ
8.1 Выбор и переключение устройств
8.2 Разбивка на блоки
8.2.1 Вариации формата
8.2.2 Блочный фактор архива
8.3 Много архивов на одной ленте
8.3.1 Положение ленты и ленточные метки
8.3.2 Утилита mt
8.4 Использование множественных лент
8.4.1 Архивы, которые длиннее одной ленты или диска
8.4.2 Ленточные файлы
8.5 Включение метки в архив
Глава 9. ВЫПОЛНЕНИЕ РЕЗЕРВНОГО КОПИРОВАНИЯ И ОБНОВЛЕНИЯ ФАЙЛОВ
9.1 Использование tar для выполнения полных дампов
9.2 Использование tar для выполнения пошагового дампа
9.3 Пошаговые опции
9.4 Уровни резервного копировании
9.5 Задание параметров для резервного копирования и обновлени
9.5.1 Пример текста ’Backup-specs’
9.5.2 Синтаксис ’Backup-specs’
9.6 Использование сценариев резервного копирования
9.7 Использование сценария restore
Глава 10. ФОРМАТЫ ВВОДА ДАТЫ
10.1 Общий синтаксис даты
10.2 Элемент календарной даты
10.3 Элемент времени суток
10.4 Элемент часового пояса
10.5 Элемент дня недели
10.6 Элементы отношения в строке даты
10.7 Обыкновенные числа в строке даты
10.8 Авторы getdate
Глава 11. ФОРМАТ АРХИВОВ TAR
11.1 Стандартный формат
11.2 Дополнения GNU к формату архива
11.3 Сравнение tar и cpio

Глава 1. ВВЕДЕНИЕ
В этой главе представляются некоторые понятия, используемые в данном
руководстве, такие как «архив», «член», «имя», «распаковать» и др., а
также рассказывается, кто написал GNU tar и документацию к нему, и
объясняется, как послать сообщение об ошибке или комментарий.
1.1. Что делает tar.
Программа tar используется для создания tar-архивов и
манипулирования ими. Архив — это файл, заключающий в себе содержимое
многих файлов. Кроме того, архив идентифицирует имена файлов, их
хозяев и т.д. (в архивах также записываются разрешение доступа,
пользователь и группа, размер в байтах и время последней модификации.
В некотрых архивах еще указываются имена файлов в каждом
заархивированном каталоге и информация о каталогах).
Файлы, соодержащиеся в архиве, называются членами aрхива. В данном
руководстве мы используем термин «файл» только для файлов, доступных
обычным способом (с помoщью ls, cat и т.д.), и термин «члены архива»
для обозначения членов архива. Аналогично, «имя файла» — для имен
файлов в системе файлов, а «имя члена архива» — для имени члена архива
внутри архива.
Изначально tar-архивы использвались для компактнго хранения файлов на
магнитной ленте — отсюда термин tar (tape archiver). Вне зависимости
от имени утилиты tar может направлять свой вывод на любое доступное
устройство, а текже хранить ее в файле или направлять в другую
программу через канал. tar также может иметь дооступ к удаленным
устройствам и файлам.
Есть много способов использования tar-архивов. Расскажем о некоторых
из них: хранении, резервном копировании и транспортировке.
Хранение.
Часто tar-архивы используются для переноса файлов по сети. Например,
проект GNU размещает свое программное обеспечение в tar-архивах так,
что все файлы, относящиеся к определенной программе (или ко множеству
программ) могут переноситься как единое целое.
Магнитная лента может сохранять последовательно несколько файлов, но
они при этом не имеют имен — только относительное положение на ленте.
tar-архив — один из способов сохранить несколько файлов на одной ленте
и запомнить их имена. Даже когда основной переносной механизм может
содержать дорожку имен, как FTP, неудобство поддерживания множества
файлов, каталогов указателей делает tar-архивирование привлекательным
методом.
Заархивированные файлы также используются для долгосрочного хранения.
Резервное копирование.
Поскольку архивы, созданные tar, могут сохранять инфоормацию файла и
структуру каталога, tar обычно используется для выполнения полного и
пошагового резервного копирования диска, складывания вместе пучка
файлов, возможно, относящихся к разным пользователям и проектам, во
избежание случайного разрушения этих дисков.
1.2. Авторы GNU tar
GNU tar первоначально был написан Джоном Гилмором и впоследствии
много раз модифицирован. Усовершенствования GNU были написаны Джеем
Фенальсоном, и весь пакет был впоследствии поддержан Майклом
Бушнеллом, а затем Франсуа Пинардом, с помощью многочисленных
пользователей. Хотелось бы подчеркнуть, что tar создан в процессе
коллективной работы и многим обязан тем людям, которые сообщали о
проблемах, предлагали решения и делились своими мыслями и
соображениями.
Джей Фенальсон набросал эскиз руководства по GNU tar, позаимствовав
кое-что у Джона Гилмора, этот эскиз распространен в версиях начиная с
1.04 (или более ранней) до 1.10, и потом использован в версии 1.11.
Майкл Бушнелл и Эми Горин работали над руководством по GNU tar. Для
версии 1.11.8 Франсуа Пинард создал новое руководство, слив воедино
информацию из разных источников.
1.3. Сообщения об ошибках или предложения
Пожалуйста, сообщите обо всех ошибках, замеченных вами в этой
программе, по адресу bug-gnu-utils$prep.ai.mit.edu. Вы можете также
написать непосредственно и менее официально по адресу
pinard@iro.umontreal.ca. Существует ряд основных версий tar, очень
много их накопилось в последние годы. Вы можете ожидать быстрого
признания ваших замечаний, но собственно их внедрение может сильно
затянуться.
Глава 2.ВВЕДЕНИЕ В ТAR
Эта глава проведет вас по основным примерам операций tar. Если вы
уже знаете, как использовать какие-нибудь другие версии tar, вам,
видимо, нет необходимости ее читать. В этой главе опускаются сложные
подробности многих методов работы tar. Для получения более полной
информации см. дальнейшие главы.
Перед тем, как перейти к этой главе, убедитесь, что вы уже понимаете
и отчетливо представляете, что такое «архив» и «член архива».
FIXME: xref What tar does
B примерах операций tar строкам, которые вы должны напечатать,
предшествует ’%’ – это обычное приглашение оболочки. В примерах и в
обсуждении в тексте мы используем мнемонические формы операций и
опций, но краткие их формы дают тот же результат.
Большая часть опций tar дана и в краткой, и в длинной формах. Опции,
описываемые во введении, (за исключением ’–delete’, которая не имеет
сокращенной формы) имеют следующие аббревиатуры:
’–create’ ’-c’
’–list’ ’-t’
’–extract’ ’-x’
’–append’ ’-r’
’–verbose’ ’-v’
’–file=имя_архива’ ’-f имя архива’
Эти опции облегчают набор длинных команд. Например, вместо того,
чтобы набирать
tar –create –file=/tmp/afiles.tar –verbose apple agnst asparagus
можно набрать
tar -c -f /tmp/afiles.tar -v apple angst asparagus
Для более подробной информации по синтаксису опций
FIXME: ref Invoking tar
Когда мы упоминаем какую-нибудь мнемоническую опцию в тексте, мы
также иногда даем соответствующую краткую опцию в скобках.
2.1. Как создавать архивы *
Чтобы создать архив, используйте опцию ’–create’ (’-c’). Вы можете
использовать опции для задания имени и формата архива (и других
характеристик) и использовать аргументы имени файла для обозначения,
какие файлы и каталоги должны быть занесены в архив.
FIXME: ref Creating
для получения более подробной информации об операции ’–create’ (-c).
Для создания нового архива используйте опцию ’–create’ (-c). В
общем случае можно использовать опцию ’–file=имя_архива’ (’-f
имя_архива’) для задания имени, которое будет иметь архив tar. Затем
задайте имена файлов, которые вы хотите поместить в новый архив.
Например, чтобы занести файлы ’apple’, ’angst’ и ’asparagus’ в архив
по имени ’afiles.tar’, используйте следующую команду:
tar –create –file=afiles.tar apple angst asparagus
При использовании мнемонических опций порядок аргументов не важен.
Вы можете также набрать:
tar apple –create angst –file=afiles.tar asparagus
Однако этот порядок труднее для восприятия. В данном руководстве мы
даем список аргументов в причинно-следственном порядке, чтобы сделать
команды более легкими для понимания, но вы можете набирать их в том
порядке, который вам нравится.
Если вы не задали имена файлов для занесения в архив, то tar создаст
пустой архив. Нижеследующие команды создают архивы, в которых ничего
нет:
tar –create –file=empty-archive.tar
Где бы вы не использовали ’–create’ (’-c’), tar уничтожает текущее
содержимое файла c помощью ’–file=имя_архива’ (’-f имя_архива’), если
он существует. Чтобы добавить файлы в существующий архив, вы должны
использовать другую опцию.
FIXME: xref Adding to Archives
для получения информации, как это сделать.
Когда архив создается с помощью ’–create’ (’-c’), имена членов
архива такие же, как имена файлов, которые вы набрали в команде tar.
Таким образом имена членов ’afiles’ (как созданные в первом примере,
приведенном ранее) — ’apple’, ’angst’ и ’asparagus’. Однако
предположим, что архив был создан с помощью следующей команды:
tar –create –file=bfiles.tar./ballons baboon ./bodacious
Тогда файлы ’ballons’, ’baboon’ и ’bodacious’ будут помещены в архив
(потому что ’./’ – синоним текущего каталога), но их имена как членов
архива будут ’./ballons’, ’baboon’ и ’./bodacious’.
Если вы хотите увидеть, как tar заносит файлы в архив, вы можете
использовать опцию ’–verbose’ (’-v’).
Если один из файлов, названный с помощью ’–create’ (’-c’) -
каталог, то операция tar более сложна.
FIXME: xref Tar and Directories,
FIXME: последний раздел данного введения
для получения более подробной информации.
Если вы не задали опцию ’–file=имя_архива’ (’-f имя_архива’), то
tar будет использовать что-то по умолчанию. Обычно это некоторое
физическое ленточное устройство, подключенное к вашей машине. Если не
существует подключенного ленточного устройства, или реакция на
умолчание не определена, tar выдаст сообщение об ошибке. Это сообщение
об ошибке выглядит приблизительно следующим образом:
tar: can’t open /dev/rmt8 : No such device on address
tar: can’t open /dev/rsmt0 :I/O error
Если вы получили подобную ошибку при ссылке на не заданный вами файл
(’/dev/rmt8′ или ’/dev/rsmt0′ в вышеприведенном примере), то tar
использует значение по умолчанию для ’–file=имя_архива’ (’-f
имя_архива’). Но предпочтительнее задать аргумент ’–file=имя_архива’
(’-f имя_архива), где бы вы не использовали tar, чем полагаться на
значение по умолчанию.
Чтобы создать новый архив, используйте опцию ’–create’ (’-c’). Вы
можете также задать имя и формат архива (и другие характеристики), и
можете использовать аргументы имени файла для задания файлов, которые
нужно занести в архив. Если вы не хотите использовать опции или
аргументы имени файла, tar будет использовать значение для умолчания.
FIXME: xref Creating Example
для более подробной информации об опции ’–create’ (’-c’).
2.1.1. Создание архивов файлов *
Нижеследующий пример покажет вам, как создать архивный файл, если
ваш рабочий каталог содержит еще и другие файлы. В этом примере
используются три файла под названиями ’blues’, ’folk’ и ’jazz’.
Архивный файл называется ’records’. Кроме того, что архив в данном
примере записывается в систему файлов, его можно записать на магнитную
ленту. (Если вы хотите проследить этот и следующие примеры, создайте
подкаталог, содержащий файлы с этими именами. Чтобы создать каталог,
наберите ’mkdir practice’ в качестве приглашения для системы. Вы
можете создать файлы при помощи текстового редактора, например emacs).
Если вы хотите заархивировать каталог, содержащий файлы, перечислите
содержимое каталога.
Наберите:
% cd practice
% ls
Система отвечает:
blues folk jazz
%
Это для того, чтобы проверить, что файлы, подлежащие архивации,
действительно существуют в рабочем каталоге, и чтобы проверить, что
имя архива, которое вы выбрали, еще не использовано. Если бы
оказалось, что оно уже использовано, tar бы записал новый архив на
место старого, и содержание последнего бы уничтожилось.
Затем:
* Cоздайте новый архив с помощью опции ’–create’ (’-c’).
* Явно задайте имя файла создаваемого архива — ’–file=имя_архива’
(’-f имя_архива’). Если вы не хотите использовать эту опцию, tar
запишет архив в специальное устройство для хранения, которое варьирует
в зависимости от системы.
* Задайте файлы, которые нужно занести в архив. Если вы не задали
никаких аргументов имени файла, tar занесет все в рабочий каталог.
Наберите:
% tar –create –file=records blues folk jazz
Если вы сейчас перечислите содержание рабочего каталога (’ls’), вы
найдете архивный файл, записанный так же, как и файлы, которые вы
видели раньше.
% ls
blues folk jazz records
%
Этот пример показывает, как создавать архивный файл в рабочем
каталоге, содержащем еще и другие файлы. Три файла, которые вы
архивируете в данном примере, называются ’blues’, ’folk’ и ’jazz’.
Архивный файл называется ’records’. Т.к. архив в примере записан в
систему файлов, его можно записать на любое другое устройство.
(Если вы хотите проследить этот и другие примеры, создайте каталог
по имени ’practice’, содержащий файлы ’blues’, ’folk’ и ’jazz’. Чтобы
создать каталог, наберите ’mkdir practice’ в качестве приглашения
системе. Вероятно, легче всего создать архив при помощи текстового
редактора, например Emacs.)
Прежде всего перейдите к каталогу, содержащему файлы, которые вы
хотите заархивировать:
% cd practice
Теперь ’~/practice’ – ваш рабочий каталог.
Теперь проверьте, что файлы, подлежащие архивации, действительно
существуют в рабочем каталоге, и убедитесь, что в рабочем каталоге нет
файла с тем именем архива, которое вы хотите использовать:
Чтобы получить список имен файлов рабочего каталога, наберите:
% ls
Cистема отвечает:
blues folk jazz
%
Затем:
* Создайте новый архив с помощью опции ’–create’ (’-c’).
* Явно задайте имя файла создаваемого архива — ’–file=имя_архива’
(’-f имя_архива’). Если вы не хотите использовать опции, tar запишет
архив на специальное устройство для хранения, которое варьирует в
разных системах.
FIXME: этот синтаксис можно изменить. Проверьте перед тем, как
набирать.
tar интерпретирует имена файлов архива относительно рабочего
каталога. Перед использованием tar убедитесь, что у вас есть доступ
к рабочему каталогу.
* Задайте файлы, которые нкжно занести в архив. (tar интерпретирует
имена файлов относительно рабочего каталога). Если вы не хотите
использовать аргументы имени, tar заархивирует все в рабочий каталог.
Наберите:
% tar –create –file=records blues folk jazz
Если вы теперь перечислите содержание рабочего каталога, вы найдете
файл архива, записанный так же, как файлы, которые вы видели раньше.
% ls
blues folk jazz records
%
2.1.2. Использование tar в словесном режиме *
Когда имена файлов или членов задают каталоги, оперирование tar
более сложно. Обычно, когда назван каталог, tar также рекурсивно
оперирует со всем его содержанием. Таким образом, для tar имя файла
’/’ называет целую систему файлов.
Чтобы заархивировать все содержимое каталога, используйте ’–create’
(’-c’) или ’–append’ (’-r’) и задайте имя каталога. Например, чтобы
заархивировать содержимое текущего каталога, нужно использовать ’tar
–create –file=имя_архива.’. При этом вы получите имена членов
архива, начинающиеся с ’/’. Для того, чтобы заархивировать содержимое
каталога с именем ’foodir’, используется ’tar –create
–file=имя_архива foodir’. В этом случае все имена членов будут
начинаться с ’foodir/’.
Если вы даете tar команду типа ’tar –create –file=foo.tar.’, то
вам будет сообщено: ’tar: foo.tar is the archive; not dumped’. Это
случилось потому, что архив ’foo.tar’ был создан перед тем, как туда
были занесены файлы. Затем, когда tar пытается занести все файлы в
архив, он замечает, что файл ’foo.tar’ – то же, что архив, и
пропускает его. (Нет смысла вкладывать архив в себя.) GNU tar в этом
случае будет продолжать и и создаст архив как обычно, за исключением
одного этого файла. Однако другие версии tar не такие «умные» и, когда
такое случается, начинают бесконечный цикл. Таким образом, нужно
убедиться, что в каталог не входит архив.
При извлечении файлов нужно также назвать на командной строке члены
архива каталога. tar несовершенен в интерпретации имен членов. Команда
’tar –extract –file=имя_архива.’ извлекает не все содержимое из
архива, а только тех членов, чьи имена начинаются с ’/’.
2.1.4. Создание архива из верхнего каталога *
Вы можете заархивировать каталог с помощью задания его имени в
качестве аргумента имени файла. Файлы каталога будут заархивированы
относительно рабочего каталога, и все содержимое каталога будет
создано заново, когда архив будет извлечен.
Чтобы заархивировать каталог, в первую очередь нужно переместиться
на его верхний каталог. Если вы следуете введению, вы должны набрать:
% сd ..
%
В верхнем каталоге вы можете задать подкаталог как аргумент имени
файла. Для того, чтобы сохранить каталог ’practice’ в файле ’music’
архива, наберите:
% tar –create –verbose –file=music practice
tar выведет:
practice/
practice/blues
practice/folk
practice/jazz
practice/records
Заметьте, что архив таким образом создается не в подкаталоге
’practice’, а в рабочем каталоге — в том, из которого был вызван tar.
Перед тем, как пытаться заархивировать каталог с верхнего каталога, вы
должны убедиться, что у вас есть доступ не только к каталогу, который
вы пытаетесь заархивировать с помощью tar, но и к рабочему каталогу.
Попытка сохранить ваш домашний каталог в архиве с помощью вызова tar
из корневого каталога, вероятно, не удастся.
FIXME: xref absolute-names
(Заметьте также, что ’records’, начальный файл архива, сам
заархивирован. tar воспринимает любой файл, независимо от его
содержания, как файл для архивации. Когда извлекается ’music’, файл
’records’ архива будет записан заново в систему файлов).
Вы можете сохранить каталог в архиве, используя имя каталога как
аргумент имени файла tar. Когда вы задаете файл каталога, tar
архивирует его и все файлы, которые этот каталог содержит. Имена
каталога и файлы, которые он содержит, хранятся в архиве, относящемся
к текущему рабочему каталогу: когда каталог извлечен, они записываются
в систему файлов, соответствующую рабочему на этот момент каталогу.
FIXME: add an ref to -absolute-names
Чтобы заархивировать каталог, в первую очередь переместитесь на его
верхний каталог. Если вы следуете введению, наберите:
% cd ..
%
В верхнем каталоге задайте подкаталог, используя аргумент имени
файла. Чтобы сохранить файл ’~/practice’ каталога в файле ’music’
архива, наберите:
% tar –create –verbose –file=music practice
tar ответит:
practice/
practice/blues
practice/folk
practice/jazz
practice/records
Заметьте, что ’~/practice/records’, другой файл архива, сам
заархивирован. tar воспринимает любой файл, даже файл архива, как
подлежащий архивации.
FIXME: cимвольные указатели и измененные каталоги находятся не во
введении, а в основной части.
2.1.5. Сравнение файлов архива с файлами системы файлов *
Несмотря на то, что операция ’–list’ (’-t’), заданная c помощью
опции ’–verbose’ (’-v’), используется при сравнении файлов в текущем
архиве с файлами системы файлов (что позволяет пользователю сравнивать
размер и даты модификации), проще заставить сам tar cравнивать
атрибуты файлов и сообщать о различиях между файлами. Чтобы это
сделать, используйте операцию ’–compare’ (’-d’) или ’–diff’.
Операция ’–compare’ (’-d’), как показывает ее название, заставляет
tar сравнивать файлы и каталоги в архиве с помощью противоположных
частей (файлов с тем же именем) в системе, и возвращать различия в
размере файлов, режиме, датах создания и модификации. При выполнении
операции ’–compare’ tar имеет дело только с файлами архива, игнорируя
файлы активной системы файлов, если они не существуют в архиве. Если
tar дается имя файла, не существующего в архиве, он выдает сообщение
об ошибке.
Чтобы сравнить файлы в каталоге с их противоположными частями в
файле ’records’ архива в том же каталоге, вы должны, находясь в
каталоге ’practice’:
* Вызвать tar и задать операцию сравнения файлов в архиве с
противоположными частями в системе файлов — ’–compare’ или ’–diff’.
* Задать имя архива, где хранятся файлы, подлежащие сравнению -
’–file=имя_архива’(’-f имя_архива’).
* Задать имена файлов или каталогов, подлежащих сравнению, как
аргументы имени файла (в этом случае вы сравниваете все файлы в
архиве, и ничего не нужно задавать).
% tar –compare –file=records
%
Несмотря на то, что кажется, будто ничего не происходит, фактически
tar производит сравнение и не находит, что сказать. Тот же пример с
помощью опции ’–verbose’ выдаст список файлов архива в том порядке,
каком они сравниваются с противоположными частями с теми же именами:
% tar –compare –verbose –file=records
blues
blues: mod time differs
blues: size differs
folk
jazz
jazz; does not exist
%
Вы опять не заметите, что хотя ’–compare’ заставляет tar сообщать о
файлах, не существующих в системе файлов, tar игнорирует файлы
активной системы файлов, не существующие в архиве. Чтобы это
продемонстрировать, создадим файл в каталоге ’practice’ по имени
’rock’ (используя текстовый редактор). Если вы вызовете список
каталога, то увидите, что там появился новый файл.
% ls
blues folk records rock
Если вы опять выполняете ’–compare’, вы получаете следующее:
% tar –compare –verbose –file=records
blues
blues: mod time differs
blues: size differs
folk
jazz
jazz: does not exist
%
tar игнорирует файл ’rock’, потому что он сравнивает файлы архива с
файлами системы файлов, а не наоборот. Если ’rock’ проходит как
аргумент имени файла, tar возвращает сообщение об ошибке:
% tar –compare –verbose –file-records rock
tar: rock not found in archive
%
Чтобы сравнить атрибуты членов архива с атрибутами других
противоположных частей в системе файлов, используется операция
’–compare’ (’-d’) или ’diff’. Хотя вы можете использовать ’–list
–verbose’ (’-tv’) для сравнения вручную некоторых атрибутов файлов,
проще заставить сам tar сравнивать атрибуты файлов и сообщать о
различиях в них.
FIXME: вручную?
Операция ’–compare’, как видно из ее имени, сравнивает члены архива
с файлами под теми же именами в системе файлов, и сообщает о различиях
в размере, режиме, датах создания и модификации. ’tar + compare’ имеет
дело только с членами архива: он игнорирует файлы системы файлов, не
хранящиеся в архиве. Если вы с ’–compare’ даете (’-d’) аргумент
имени, который не соответствует имени члена архива, tar отвечает
сообщением об ошибке.
Чтобы сравнить члены архива в файле ’records’ архива с файлами в
каталоге ’~/practice’, в первую очередь нужно перейти к каталогу
’practice’. Затем:
* Вызвать tar и задать операцию ’–compare’ (’-d’) – ’–compare’
(’-d’) или ’–diff’.
* Задать архив, где хранятся файлы, подлежащие сравнению
-’–file=имя_архива’ (’-f имя_архива’).
* Задать члены архива для сравнения. (В данном примере вы сравниваете
все члены архива между собой, и вам не нужно использовать никаких
аргументов имен файлов).
% tar –compare –file=кусщквы
%
Хотя кажется, чтол ничего не произошло, tar на самом деле производит
сравнение и не находит, что сообщить.
Используйте опцию ’–verbose’ для того, чтобы получить список имен
членов архива, сравниваемых с противоположными частями с теми же
именами в системе файлов:
% tar –compare –verbose –file=records
blues
folk
jazz
%
Если tar нашел, что сообщить, он это сделает, как только сравнит
все файлы.
Если вы удаляете файл ’jazz’ из системы файлов (’rm jazz’) и
модифицируете файл ’blues’ (например, добавлением текста с помощью
редактора типа Emacs), верхний пример будет выглядеть следующим
образом:
% tar –compare –verbose –file=records
blues
blues: mod time differs
blues: size differs
folk
jazz
jazz; does not exist
%
Заметим опять, что в то время как ’–compare’ докладывает об именах
членов архива, не имеющих противоположных частей в системе, он
игнорирует файлы системы, не имеющие противоположных частей в архиве.
Чтобы это продемонстрировать, создададим файл в каталоге ’practice’ по
имени ’rock’ (используя любой текстовый редактор). Новый файл
появляется, когда вы смотрите содержимое каталога:
FIXME: нужно привести пример.
2.1.6. Использование сравнения начиная с верхнего каталога *
Кроме использования ’–compare’ для сравнения отдельных файлой
архива с их противоположными частями в системе файлов, эту опцию можно
использовать для сравнения заархивированных каталогов с их
противоположными частями в действующей системе файлов. Вы можете
создать заново верхний пример, используя ваш домашний каталог и файл
’music’ (в котором хранится каталог ’practice’) вместо архивного файла
’records’.
В первую очередь перейдите к домашнему каталогу (’cd..’). Затем
постарайтесь проделать то же, что в предыдущем примере, используя
’music’ в качестве заданного архивного файла, а каталог ’practice’ как
аргумент имени файла.
% tar –compare –verbose –file=music practice
practice
practice/blues
practice/blues: mod time differs
practice/blues: size differs
practice/folk
practice/jazz
practice/jazz: does not exist
practice/records
Кроме использования ’–compare’ (’-d’) для сравнения текстовых
файлов, вы можете его использовать для сравнения каталогов. Чтобы это
проиллюстрировать, нужно переделать вышеприведенные примеры, используя
ваш домашний каталог в качестве рабочего каталога, и используя
архивный файл ’~/music’ вместо архивного файла ’~/practice/records’.
В первую очередь перейдите к вашему домашнему каталогу (’cd~’).
Затем попытайтесь использовать в вышеприведенном примере ’music’ в
качестве заданного архивного файла, а ’practice’ – в качестве
аргумента имени файла.
% tar –compare –verbose –file=music practice
Если вы следовали этой инструкции, tar ответит:
practice
practice/blues
practice/blues: mod time differs
practice/blues: size differs
practice/folk
practice/jazz
practice/jazz: does not exist
practice/records
2.2. Как составлять список архивов *
Используйте ’–list’ для выведения имен членов, хранящихся в архиве.
Опцию ’–file=имя_архива’ используйте так же, как c ’–create’ (’-c’)
для задания имени архива. Например, содержимое архива ’afiles.tar’,
созданного в прошлом разделе, можно проверить с помощью команды ’tar
–list –file-afiles.tar’. tar выдаст:
apple
angst
asparagus
Список архива ’bfiles.tar’ будет таким:
./baloons
baboon
./bodacious
(Разумеется, ’tar –list –file-afiles.tar’ не вызовет никакого
вывода).
Если вы используете опцию ’–verbose’ (’-v’) с помощью ’–list’
(’-t’), tar выдаст список, напоминающий список при использовании ’ls
-l’ и содержащий имя хозяина, размер файла и т.д.
Вы можете также задать имена членов, используя ’–list’ (’-t’). В
этом случае tar выдаст список только тех имен членов, которые вы
идентифицировали. Например, ’tar –list –file-afiles.tar apple’
выдаст только ’apple’. Это очевидно, когда заданные в качестве имен
членов имена в точности являются именами членов. Например, ’tar –list
–file=bfiles baloons’ ничего не выдаст, потому то нет члена по имени
’baloons’, а только ’./baloons’. Хотя ’baloons’ и ’./baloons’ – имена
одного и того же файла, при простейшем сравнении, для которого
необходим точный набор, имена членов различаются.
2.2.1. Список содержимого архива *
Вы можете можете получить список только что созданного архива с
помощью другой опции tar: ’–list’ (’-t’). Чтобы получить список
содержимого архива, наберите:
% tar –list –file=records
tar ответит:
blues folk jazz
FIXME: xref Listing Archive Contents, Listing Contents
для получения более подробной информации об операции ’–list’ (’-t’).
FIXME:
Вы можете использовать ’–list’ для вывода списка файлов архива.
Если вы используете аргументы имени файла в этой операции, tar ищет
заданные файлы в архиве и высвечивает их имена, только если они
действительно там хранятся. Bы можете использовать ’–list’(’-t’) с
опцией ’–verbose’ (’-v’), чтобы узнать атрибуты (имя хозяина, размер
и т. д.) хранимого файла.
Вы можете получить список содержимого архива и с помощью другой
операции tar: ’–list’ (’-t’). Чтобы получить список только что
созданного архива, наберите:
% tar –list –file=records
tar ответит:
blues folk jazz
FIXME: xref Listing Archive Contents, Listing Contents
для получения более подробной информации об операции ’–list’ (’-t’).
В предыдущем примере вы создавали архив ’music’ в домашнем каталоге.
Чтобы получить список ’music’:
* Перечислите содержимое архива с помощью ’–list’ (’-t’) tar.
* задайте имя архива, список которого нужно получить:
’–file=имя-архива’ (’-f имя_архива’).
Таким образом:
% tar –list –file=music
practice/
practice/blues
practice/folk
practice/jazz
practice/records
Используйте ’–list’ (’-t’) для выдачи имен файлов, хранящихся в
архиве. Если вы используете аргументы имени файла в этой операции, tar
выдаст имена заданных файлов, если они хранятся в архиве. Если вы
используете имя каталога как аргумент имени файла, tar выдает также
имена всех нижележащих файлов, включая подкаталоги. Если вы не
используете аргументы имени файла, tar выдает имена всех членов архива.
Вы можете использовать ’–list’ c ’–verbose’ для вывода атрибутов
членов архива (имени хозяина, размера и т.д.).
Чтобы получить список имен файлов, хранящихся в архиве, используйте
операцию ’–list’ (’-t’) tar.
В предыдущем примере вы создали архив ’~/music’. Чтобы получить
список его содержимого, находясь в вашем домашнем каталоге:
* Перечислите содержание архива с помощью ’–list’.
* Задайте архив, список которого нужно получить: ’–file=имя_архива’.
Таким образом:
% tar –list –file=music
practice/
practice/blues
practice/folk
practice/jazz
practice/records
2.2.2. Получение дополнительной информации о файле *
Когда вы задаете опцию ’–verbose’ (’-v’) вместе с ’–list’ (’-t’),
tar выдает дополнительную информацию о перечисляемых файлах (защита
файла, хозяин и идентификатор группы, размер, и дату и время
создания). Вышеприведенный пример в словесном режиме будет:
% tar –list –verbose –file=music
drwxrwxrwx myself/user 0 May 31 21:49 1990 practice/
-rw-rw-rw- myself/user 42 May 21 13:29 1990 practice/blues
-rw-rw-rw- myself/user 62 May 23 10:55 1990 practice/folk
-rw-rw-rw- myself/user 40 May 21 13:30 1990 practice/jazz
-rw-rw-rw- myself/user 10240 May 31 21:49 1990 practice/records
%
Заметьте, что ’–verbose’ с ’–list’ не заставляют tar выводить
имена файлов, а при использовании ’–verbose’ в сочетании со всеми
другими операциями этот эффект наблюдается.
Для получения более подробной информации, когда вы заносите в список
имена файлов, хранящихся в архиве, задайте опции ’–verbose’ и
’–list’.
tar напечатает защиту членов архива, имя хозяина, групповой
идентификатор, размер, дату и время создания.
Например:
% tar –list –verbose –file=music
drwxrwxrwx myself/user 0 May 31 21:49 1990 practice/
-rw-rw-rw- myself/user 42 May 21 13:29 1990 practice/blues
-rw-rw-rw- myself/user 62 May 23 10:55 1990 practice/folk
-rw-rw-rw- myself/user 40 May 21 13:30 1990 practice/jazz
-rw-rw-rw- myself/user 10240 May 31 21:49 1990 practice/records
%
Заметьте, что когда вы используете вместе ’–verbose’ и ’–list’,
tar не выдает имена файлов, а при использовании ’–verbose’ в
сочетании со всеми другими операциями этот эффект наблюдается.
2.2.3. Занесение заданного файла в архив *
Чтобы узнать, находится ли определенный файл в архиве, задайте имя
файла. Например, если вы хотите проверить, находится ли файл ’folk’ в
архивном файле ’music’, вы:
* Вызываете tar и задаете операцию для получения списка архива:
’–list’ (’-t’).
* Задаете имя архивного файла: ’-file=имя_архива’ (’-f имя_архива’).
* Задаете имя, которое должен искать tar, как аргумент имени файла.
Т.к. tar сохраняет пути, имена файлов должны быть заданы так, как они
появляются в архиве (чтобы они соответствовали каталогу, из которого
был создан архив).
FIXME: xref-P
Наберите:
% tar –list –file=music practice/folk
tar ответит:
practice /folk
Если бы файла не было в архиве (как, например, файла
’practice/rock’), предыдущий пример выглядел бы следующим образом:
% tar –list –file=music practice/rock
tar: practice/rock не найден в архиве
Опция ’–verbose’ не оказывает никакого влияния на выполнение
операции ’–list’, если вы задали аргументы имени файла.
FIXME: это ошибка (?)
Чтобы узнать, содержится ли конкретный файл в архиве, используйте
имя файла. Например, чтобы проверить, содержится ли файл ’folk’ в
архивном файле ’music’, проделайте следующее:
* Вызовите tar и задайте операцию ’–list’.
* Задайте архивный файл: ’–file=имя_архива’ (’-f имя_архива’).
* Задайте файлы для поиска c помощью набора их имен как аргументов
имен файлов. Вы должны набирать имя файла, как только он появляется в
архиве (обычно это соответствует каталогу, из которого был создан
архив).
FIXME: xref absolute-names
Наберите:
% tar –list –file=music practice/folk
tar ответит:
practice/folk
Если бы файлы не хранились в архиве (как, например, файл
’practice/folk), вышеприведенный пример выглядел бы следующим образом:
% tar –list –file=music practice/rock
tar: practice/rock not found in archive
Ели бы вы использовали ’–verbose’ (’-v’), пример выглядел бы
следующим образом:
% tar –list –file=music practice/folk
-rw-rw-rw- myself/user 62 May 23 10:55 1990 practice/folk
2.2.4. Перечисление содержимого сохраненного каталога *
Чтобы получить информацию о содержимом заархивированного каталога,
используется имя каталога как аргумент имени файла в сочетании с
’–list’. Чтобы узнать атрибуты файлов, включите опцию ’–verbose’.
Например, чтобы чтобы узнать о файла в каталоге ’practice’ в
архивном файле ’music’, наберите:
% tar –list –file=music practice
tar ответит:
drwxrwxrwx myself/user 0 May 31 21:49 1990 practice/
-rw-rw-rw- myself/user 42 May 21 13:29 1990 practice/blues
-rw-rw-rw- myself/user 62 May 23 10:55 1990 practice/folk
-rw-rw-rw- myself/user 40 May 21 13:30 1990 practice/jazz
-rw-rw-rw- myself/user 10240 May 31 21:49 1990 practice/records
Когда вы используете имя каталога как аргумент имени файла, tar
имеет дело со всеми файлами (включая файлы подкаталогов) этого
каталога.
2.3. Как извлекать из архива его члены *
Для того, чтобы извлечь члены из архива, используется опция
’–extract’ (’-x’). Задайте имя архива с помощью ’–file=имя_архива’
(’-f имя_архива’). Чтобы извлечь члены заданного архива, задайте их
имена членов как аргументы. Естественно дать им их точные имена
членов, как введенные с помощью ’–list’ (’-t’). Это создаст копию
члена архива с тем же именем файла, что и его имя в архиве.
В примере с двумя архивами, созданными в начале этого введения, ’tar
–extract –file=afiles.tar apple’ в текущем каталоге создастся файл
’apple’ c содержимым архивного файла ’apple’. Любой уже существующий
файл с именем ’apple’ уничтожится, но это не изменит архива.
Очень важно задавать точные имена членов. Команда ’tar –extract
–file=briles.tar baloons’ будет ошибочна, т.к. нет члена с именем
’baloons’. Чтобы извлечь член с именем ’./baloons’, вы должны набрать
’tar –extract –file=bfiles.tar ./baloons’. Чтобы узнать точные имена
членов архива, используйте ’–list’ (’-t’).
FIXME: xref Listing Archives.
Если вы не перечисляете имен членов архива, ’–extract’ извлечет
имена всех членов архива.
Если вы даете опцию ’–verbose’, то ’–extract’ напечатает имена
членов архива, которые только что извлек .
2.3.1. Извлечение файлов из архива в ваш текущий каталог *
Очевидно, что конечная цель пользователей tar — получить свои файлы
обратно. Чтобы это сделать, используйте операцию ’–extract’ или
’–get’. ’–extract’ (’-x’) может использоваться для извлечения
отдельного файла из архива или для того, чтобы записать все файлы
архива обратно в систему файлов.
В предыдущем примере вы конкатенировали два архива: ’music’ и
’practice/records’. Теперь, чтобы извлечь полное содержание ’music’
(выходной файл процесса конкатенации), вы должны, находясь в домашнем
каталоге:
* Вызвать tar и задать операцию извлечения файлов из архива
(’–extract’ (’-x’) или ’–get’).
* Задать имя архивного файла, который нужно извлечь -
’–file=имя_архива’ (’-f имя_архива’).
* Задать имена файлов, которые вы хотите извлечь, как аргументы имен
файлов (в том случае, если вы хотите извлечь целый архив, вам не нужно
ничего задавать).
% tar –extract –file=music
tar: Could not make directory practice : File exists
Т.к. файлы, хранящиеся изначально в ’music’, хранились как файлы
подкаталога (а не как файлы рабочего каталога), они хранятся в архиве
с ведущим именем каталога — tar при их обновлении пытался создать
заново этот каталог и получил ошибку: этот каталог уже существует.
Однако извлечение не было прекращено. Если вы производите
переход в каталог ’practice’ и генерируете список каталога, вы
получаете, что ’jazz’, который мы перемещали в более ранний каталог,
восстановлен.
% cd practice
% ls
blues classical folk jazz records rock
Однако, если вы более строго просмотрите файлы каталога, вы
получите, что файлы ’blues’ и ’folk’ – фактически начальные версии
файла, который хранился в ’music’ в начале введения. tar при
извлечении файлов из ’music’ перезаписал существующий файл в систему
файлов.
Т.к. более новые версии файлов хранились в ’records’ выше, их нельзя
больше оттуда извлечь. ’records’ тоже был заархивирован tar, когда
каталог ’practice’ хранился в архивном файле ’music’ и был обновлен,
когда файлы в ’practice’ были перезаписаны. Однако более новая версия
’records’ была связана с ’music’. Содержание более новой версии
’records’, следовательно, будет извлечено, когда будут извлечены все
файлы ’music’. Последние извлечены. tar сохранил их заново в рабочем
каталоге, используя имена, под которыми они изначально хранились.
Поскольку изначально они хранились как часть ’records’, в каталоге
’practice’, у них нет предшествующего каталога, хранящегося как часть
их имен. Для того, чтобы найти последние версии ’blues’, ’folk’,
’jazz’, ’rock’ и ’classical’, посмотрите в вашем домашнем каталоге.
Вы можете захотеть обновить файлы в вашем каталоге ’practice’ перед
извлечением их из ’music’. Вместо того, чтобы перемещать файлы из
вашего домашнего каталога в подкаталог ’practice’, вы можете выполнить
такое же извлечение, как в предыдущем примере, используя каталог
’practice’ в качестве вашего домашнего каталога:
% cd practice
% tar –extract –verbose –file=~/music
practice/
practice/blues
practice/folk
practice/jazz
practice/records
blues
folk
jazz
blues
rock
blues
classical %
Если вы теперь проверите файлы в практическом каталоге, вы найдете,
что они обновили свое состояние. Старые версии файлов, которые
хранились в ’music’ с предыдущим именем каталога, записаны в
новосозданный подкаталог рабочего каталога (ваш подкаталог
’practice’). Новый каталог также называется ’practice’.
2.3.2. Извлечение файлов из архива *
Cоздание архива — только половина дела: нет смысла хранить файлы в
архиве, если потом нельзя их извлечь. Чтобы извлечь файлы из архива,
используется операция ’–extract’ (’-x’).
Чтобы извлечь заданные файлы, используют из имена как аргументы
имени файла. Если вы используете имя каталога как аргумент имени
файла, tar извлекает все файлы (включая подкаталоги) этого каталога.
Если вы не используете аргументы имени файла, tar извлекает все файлы
архива.
Заметьте: tar извлекает член архива в систему файлов без проверки,
не существует ли уже файл с таким именем члена архива. Если он уже
существует, его содержание уничтожится, т.к. tar запишет на его место
другой файл.
FIXME: xref keep-old
2.3.3. Извлечение заданных файлов *
Чтобы извлечь определенные файлы, задайте их, используя аргументы
имени файла.
В вышеприведенном примере вы создали архивный файл
’~/practice/records’, содержащий файлы ’blues’, ’folk’ и ’jazz’ в
каталоге ’practice’. Если по какой-то причине вы лишились одного из
этих текстовых файлов (rm ~/practice/blues’), вы можете извлечь его из
архивного файла.
В первую очередь перейдите в каталог ’practice’. Затем:
* Вызовите tar и задайте операцию ’–extract’ или ’–get’.
* Задайте архив, из которого нужно извлечь файлы — ’–file=имя_архива’
(’-f имя_архива’).
* Задайте файлы, которые нужно извлечь, используя аргументы имени
файла (если вы не задали никаких файлов, tar извлекает все члены
архива).
% tar –extract –file=records blues
Если вы посмотрите список содержимого каталога, вы увидите, что
’blues’ стоит последним:
% ls
folk
jazz
records
blues
2.3.4 Извлечение каталогов *
Чтобы извлечь каталог и все файлы, которые он содержит, используется
имя каталога как аргумент имени файла в сочетании с ’tar + extract’.
Помните: tar хранит и извлекает файлы с именами, относящимися к
рабочему каталогу.
В предыдущем примере вы хранили каталог ’~/practice’ в архивном
файле ’~/music’. Если вы уничтожили содержание ’practice’, вы можете
восстановить его.
В первую очередь перейдите в подкаталог ’practice’ (’cd
~/practice’). Затем удалите все файлы в ’~/practice’(’rm*’). Если вы
теперь посмотрите список каталога, то увидите, что он пустой:
% ls
%
Теперь давайте попытаемся восстановить содержание ’practice’ с
помещью извлечения его из архивного файла ’~/music’:
tar –extract –file=~/music practice
Теперь опять посмотрим содержимое ’practice’:
% ls
practice
Что случилось с файлами? Когда вы создавали ’~/music’, вашим рабочим
каталогом был ваш домашний каталог. Когда вы извлекали ’~/music’,
вашим рабочим каталогом был ’~/practice’. tar хранил файлы в
’practice’, соответствующем вашему домашнему каталогу, а затем извлек
их. Сейчас файлы в новом каталоге по имени ’~/practice/practice’.
Чтобы восстановить файлы на их старых позициях, уничтожьте новый
каталог и его содержимое, а затем сделайте заново предыдущий пример
при условии, что рабочий каталог — ваш домашний.
% rm ~/practice/practice/*
%rmdir practice
% cd
% tar –extract –file=music practice
(tar сообщит, что он не может создать каталог ’~/practice’, потому
что он уже существует. И извлечение других членов архива работать не
будет.)
2.4. Как добавлять файлы в уже существующие архивы *
Если вы хотите добавить файлы в существующий архив, нельзя
использовать ’–create’(’-c’). Эта опция уничтожит архив и создаст
новый на его месте. Вместо этого используется ’–append’ (’-r’).
Команда ’tar –append –file=afiles.tar arbalest’ добавит ’arbalest’ в
существующий архив ’afiles.tar’. При использовании ’–append’ архив
должен уже существовать.
Как и с помощью ’–create’, нооводобавленные файлы могут быть
извлечены так же, как если бы их имена как членов архива были даны на
командной строке. Опция ’–verbose’ выведет имена файлов в том
порядке, как они были записаны в архив.
Если вы ’–append’ добавляете в архив файл под именем, которое уже
имеет один из членов архива, старый член не уничтожается. Но
происходит, однако, довольно сложный процесс.
FIXME: xref Multiple Members with the Same Name.
Если вы хотите уничтожить член архива, используйте сначала
’–delete’, а затем ’–append’.
FIXME: мы хотим, чтобы люди использовали документацию по резервному
копированию, т.ч. я не собираюсь объяснять это во введении.
Вместо того, чтобы создавать новый архив кажадый раз, когда вы
хотите сохранить файл, иногда более целесообразно добавлять файлы в
уже существующий архив.
Чтобы добавить файл в уже существующий архив, используйте операцию
’–append’. Чтобы записать новые версии членов архива в архив,
используйте операцию ’–update’ (’-u’).
Если вы используете tar для создания архива целого каталога или
каталогового дерева, более разумно, когда резервное копирование
производится только для тех файлов архивов, которые недавно созданы
или изменялись в процессе последнего резервного копирования.
Ччобы добавить новые файлы в существующий архив, или добавить новые
версии старых файлов, вы можете использовать операцию ’–append’ или
’–update’.
2.4.1. Запись файлов в архив *
Простейший способ добавить файлы в уже существующий архив — операция
’–append’ (’-r’), которая записывает заданные файлы в архив,
безотносительно к тому, существуют ли они уже среди файлов архива.
Когда вы используете ’–append’, вы обязательно должны задать
аргументы имени файла, т.к. по умолчанию они не задаются. Если вы
задаете файл, уже существующий в архиве, другая его копия добавляется
в конец архива.
В одном из вышеприведенных примеров вы создавали в каталоге файл по
имени ’rock’, которого не существовало ни в архивном файле
’records’ практического каталога, ни в архивном файле ’music’ рабочего
каталога. Чтобы добавить ’rock’ в ’records’, вы должны, находясь в
практическом каталоге:
* Вызвать tar и задать операцию добавления файла — ’–append’.
* Задать имя архива, в который нужно добавить файл -
’–fi