pax

Машинно-независимый обмен архивами (POSIX)

Синтаксис:

Вывод содержимого архива:

pax [-cimopuvy] [-f архив] [-s строка_подстановки]...

[-t устройство] [шаблон...]

Чтение архива:

pax -r [-cimnopuvy] [-f архив] [-s строка_подстановки]...

[-t устройство] [шаблон...]

Запись в архив:

pax -w [-dimuvy] [-b размер_блока] [-[a]f архив]

[-s строка_подстановки]... [-t устройство] [-x формат]

[путевое_имя...]

Копирование файлов:

pax -rw [-ilmopuvy] [-s строка_подстановки]... [путевое_имя...]

каталог


Поддерживаемые платформы:

QNX Neutrino, Microsoft Windows


Опции:

-a

Добавить файлы, заданные с помощью путевое_имя, в архив, указанный опцией -f.

-b размер_блока

Разбивать выходные данные на блоки размером, указанным в аргументе размер_блока, при каждой записи в архивный файл. Суффикс k обозначает умножение размера блока на 1024, суффикс b на 512, суффикс m на 1 048 576 (1 мегабайт). Разбиение на блоки определяется автоматически для входных данных и игнорируется для опции -rw (копирование файлов), если не указано иное.

-c

Дополнять по соответствию операндам шаблон.

-d

Не создавать промежуточные каталоги, не присутствующие в архиве явно. Эта опция действует только, если указана опция - r.

-f архив

Использовать архив в качестве путевого имени входного или выходного архива с переопределением стандартного потока ввода по умолчанию для опции -r или стандартного потока вывода для опции -w.

-i

Переименовать файлы в интерактивном режиме. Выполнять подстановки, заданные в опциях -s, перед запросом нового имени файла у пользователя. Если введена пустая строка, файл будет пропущен. При достижении конца файла утилита pax завершает работу со статусом завершения 0.

-l

("эль") По возможности создавать ссылки на файлы вместо копирования.

-m

Не сохранять время модификации файла.

-n

Если указана опция -r и не указана опция -w считать операнды шаблон обычными именами файлов. Из входного архива считывается только первое вхождение каждого из этих файлов. По окончании чтения всех файлов из списка утилита pax завершает работу со статусом завершения 0. Если один или несколько файлов из этого списка не найдены, то утилита pax записывает диагностическое сообщение о каждом из таких файлов в стандартный поток ошибок, после чего завершает работу с ненулевым статусом завершения. Сравнение имен файлов производится до применения любых из опций - i, -s и -y.

-o

Восстанавливать права владения файлом, как задано в архиве. Для этого вызывающий процесс должен обладать соответствующими полномочиями.

-p

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

-s строка_подстановки

Изменять имена файлов согласно выражению подстановки. Синтаксис выражения:

-s /старое/новое/[gp]

В качестве разделителя можно использовать любой ненулевой символ (в данном примере используется символ /). При наличии нескольких выражений -s они применяются в порядке их следования до первой успешной подстановки. Если указан завершающий символ p, то в стандартный поток ошибок отправляются сообщения о каждой успешной подстановке. Если указан завершающий символ g, то будут заменены все вхождения старого выражения в исходной строке. Если после применения подстановок имя файла становится пустой строкой, то оно игнорируется как при вводе, так и при выводе.

-t устройство

В аргументе устройство указывается имя входного или выходного устройства архивирования, переопределяющее стандартный поток ввода для -r и стандартный поток вывода для -w, используемые по умолчанию.

-u

Копировать каждый файл только в том случае, если он является более новым по сравнению с существующим файлом, имеющим такое же имя.

-v

Вывести расширенную информацию; вывести имена файлов при их обнаружении. Если указана эта опция, то содержимое записывается в стандартный поток вывода в случае, если не указаны ни -r, ни -w; в противном случае при обнаружении каждого файла в архиве его имя выводится в стандартный поток ошибок.

-x формат

Использовать указанный формат выходного архива. Если указана опция -r, формат ввода выбирается автоматически. Поддерживаемые форматы:

cpio

Расширенный формат обмена cpio согласно POSIX Std 1003.1-1988.

ustar

Расширенный формат обмена tar, также согласно POSIX Std 1003.1-1988; этот формат архива используется по умолчанию.

-y

Интерактивный запрос способа обработки каждого файла. Подстановки, указанные в опции -s (см. описание выше), выполняются до запроса способа обработки. При достижении конца файла или появлении строки ввода, начинающейся с символа q, утилита pax завершает работу. В противном случае, если строка ввода начинается с символа, отличного от y, файл игнорируется. Использование этой опции совместно с опцией -i не допускается.

Примечание. Действительной является только последняя опция -f или -t.

каталог

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

путевое_имя

Копируемый файл или каталог, содержащий файлы и подкаталоги, которые требуется скопировать (рекурсивно) в дополнение к самому каталогу.

шаблон

Шаблон в стандартной нотации командного интерпретатора для сопоставления с шаблоном. Если шаблоны не указаны, используется значение *, т.е. выбор всех файлов.

Режимы работы:

Если не указана ни одна из опций -r и -w, то утилита pax выводит содержимое указанного архива. В этом режиме утилита pax отображает стандартные файлы по одному на строке. Путевые имена по жестким ссылкам отображаются следующим образом:

путевое_имя == ссылочное_имя

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

Путевые имена символьных ссылок выводятся следующим образом:

путевое_имя -> целевой_путь

Если указана опция -v, то утилита pax выводит стандартные путевые имена в формате, аналогичном формату, используемому утилитой ls с опцией - l ("эль"), за исключением жестких ссылок, которые отображаются следующим образом:

<ls -l список> == ссылочное_имя

Режимы работы с различными сочетаниями опций -r и -w:

-r

Выполнить чтение архивного файла из стандартного потока ввода; выбирать для извлечения только файлы с именами, соответствующими любому из операндов шаблон. Выбранные файлы условно создаются и копируются относительно дерева текущего каталога согласно выбранным опциям. По умолчанию владелец и группа выбранных файлов соответствуют владельцу и группе вызывающего процесса, а полномочия и время изменения аналогичны этим параметрам в архиве.

Поддерживаемые форматы архивов определяются во входных данных автоматически.

-w

Записать файлы и каталоги, заданные в операндах путевое_имя, в стандартный поток вывода совместно с путевым именем и информацией о статусе, определяемыми форматом используемого архива. Выходной формат по умолчанию tar; его можно переопределить с помощью опции формата -x, см. описание далее.

Операнд путевое_имя для каталога соответствует файлам и подкаталогам указанного каталога (рекурсивно). Если операнды путевое_имя не указаны, то из стандартного потока ввода выполняется чтение списка путевых имен для копирования, по одному путевому имени на строке. В этом случае копируются только путевые имена, присутствующие в стандартном потоке ввода.

-rw

Выполнить чтение файлов и каталогов, перечисленных в операндах путевое_имя, и скопировать их в целевой каталог. Операнд путевое_имя для каталога соответствует файлам и подкаталогам указанного каталога (рекурсивно). Если операнды путевое_имя не указаны, то из стандартного потока ввода выполняется списка путевых имен для копирования, по одному путевому имени на строке. В этом случае копируются только путевые имена, присутствующие в стандартном потоке ввода. Для успешного копирования необходимо наличие каталога, указанного в операнде каталога, и соответствующих полномочий на него.

Описание:

Утилита pax считывает и записывает архивные файлы, которые соответствуют формату архивных файлов/файлов обмена данными, описанному в стандарте POSIX Std 1003.1-1988. Кроме того, эта утилита поддерживает чтение ряда других форматов файлов (без записи). Поддержка этих традиционных форматов файлов (таких как архивы формата V7 tar и бинарных файлов System V cpio) предусмотрена для сохранения обратной совместимости и повышения переносимости.

Кроме того, утилита pax поддерживает традиционные интерфейсы cpio и tar System V при вызове по этим именам (они являются ссылками на pax).

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

Примечание. Если архив pax хранится непосредственно в блок-ориентированном специальном файле гибкого диска (например, /dev/fd0), то архив перезаписывает первый блок на диске, который используется накопителем на гибких дисках devb-fdc для хранения информации о типе носителя, позволяющей ему динамически адаптироваться к различным размерам гибких дисков, вставляемых в дисковод (например, 720 КБ и 1,4 МБ, 360 КБ и 1,2 МБ и т.д.). Если накопителю на гибких дисках не удается определить емкость, то применяется емкость 1,4 МБ.

Действия утилиты pax чтение, запись, вывод содержимого указанного архива или перемещение указанных файлов в другой каталог определяются сочетаниями аргументов командной строки -r и -w.

Если операнды путевое_имя не указаны, то в качестве списка путевых имен используются данные из стандартного потока ввода. Формат этих данных одно путевое имя на строку. При чтении из стандартного потока ввода считывается архивный файл, который имеет формат, соответствующий описанию формата в стандарте POSIX 1003.1-1988.

Возможность восстановления принадлежности и атрибутов полномочий архивных файлов утилитой pax зависит от идентификатора пользователя и идентификатора группы процесса, а также соответствующих полномочий. (См. описание формата архивных файлов/файлов обмена данными (Archive/Interchange File Format) в стандарте POSIX Std 1003.1-1988.)

Следует отметить, что опции -a, -c, -d, -i, -l, -p, -t и - y предоставлены в целях обеспечения функциональной совместимости с традиционными утилитами cpio и tar. Значения опций по умолчанию были выбраны на основе обычного способа использования этих опций, поэтому некоторые из опций имеют смысл, отличный от смысла аналогичных опций в традиционных командах.

Примеры:

Копирование содержимого текущего каталога на накопитель на гибких дисках:

pax -w -f /dev/fd0 .

Копирование содержимого старого_каталога в новый_каталог:

mkdir новый_каталог

cd старый_каталог

pax -rw . ../новый_каталог

Чтение pax.out архива, все файлы которого извлечены относительно текущего каталога в корневой каталог /usr архива (обратите внимание на использование запятых в качестве разделителей шаблонов в опции - s):

pax -r -s ",^/usr/,," -f pax.out


Файлы:

Управляющий терминал (/dev/tty) используется для запроса информации у пользователя в случае, если указана опция -i или -y.

Статус завершения:

0

Все файлы в архиве обработаны успешно.

>0

Работа утилиты pax прервана из-за ошибок, возникших при выполнении.

Предупреждения:

Для копирования или извлечения специальных файлов могут потребоваться специальные полномочия.

Если значение устройства, идентификатора пользователя и идентификаторов групп превышает 65535, выводятся дополнительные записи заголовков. Некоторыми историческими версиями утилит cpio и tar эти записи игнорируются.

Форматы архивов, описанные в формате архивных файлов/файлов обмена данными (Archive/Interchange File Format), имеют определенные ограничения, унаследованные исторически. Например, длина путевых имен, хранящихся в архиве, не может превышать 255 символов.

При получении списка в стиле ls -l из архивов формата tar отображается нулевое количество ссылок, так как в формате архивов ustar информация о количестве ссылок не поддерживается.

В 16-разрядной архитектуре, включая 16-разрядные версии QNX 4, наибольший размер буфера равен 32 КБ 1, в т.ч. по причине применения целых чисел в схемах выделения буферов. Однако на многих таких компьютерах выделение блоков памяти, превышающих 32 КБ, невозможно.