pax (Unix)

Поделись знанием:
Перейти к: навигация, поиск

pax — утилита архивирования, созданная POSIX и определенная в POSIX.1-2001[1] стандарте. Вместо того чтобы разобраться в несовместимых опциях, которые вкрались между tar and cpio, вместе с их реализациями во всём многообразии версий UNIX, IEEE разрабатывает новую утилиту для архивирования. Название «pax» является акронимом для portable archive exchange, что означает портируемый архив для обмена. Команда вызова и её структура представляет собой некоторое объединение и унификацию как tar так и cpio.





Особенности

Режимы

pax имеет четыре основных режима, которые определяются комбинацией ключей -r («read» — чтение) -w («write» — запись).

Следующая таблица подытоживает основные режимы работы:

Опция Режим Описание
«list» выводит содержимое архива, не изменяя или извлекая чего-либо.
-r «read» читает и извлекает содержимое архива
-w «write» создаёт архив или дополняет его файлами
-rw «copy» читает и копирует файлы и структуру каталогов в указанный каталог

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

pax < archive.tar

Извлечь содержимое архива в текущий каталог:

pax -r < archive.tar

Создать архив текущего каталога:
Когда используется в стиле cpio, то команда find может использоваться для получения списка файлов подлежащих архивированию:

find . -depth -print | pax -wd > archive.tar

Копирование текущего каталога в другое место:
Целевой каталог должен быть создан заранее.

find . -depth -print | pax -rwd target_dir

Команда вызова

pax может использоваться по аналогии, как cpio или tar. Синтакс cpio получает список файлов со стандартного ввода (stdin), при архивировании или уже существующий архив, при выводе содержимого или извлечении файлов:

find . -depth -print | pax -wd > archive.tar

и

pax -r < archive.tar

соответственно.

Также возможен вызов этих команд аналогично tar:

pax -wf archive.tar .

и

pax -rf archive.tar

И для ясности и полноты:
Вывод списка файлов из архива:

pax -f archive.tar

и режим «копирования»:

pax -rw . archive_dir

Опция -f позволяет указать с каким архивом производить работу, вместо записи в stdout или чтения stdin. Необходимо отметить, что применение опции -d вместе с find избавляет от прохождения деревьев каталогов pax, так как это будет сделано в find

Сжатие

Большинство реализаций pax предоставляют опцию -z (gzip) и -j (bzip2) для сжатия. Эта возможность, однако, не предписывается стандартом. Важно отметить, что pax не может дополнять сжатые архивы.

Пример для извлечения gzip-архива:

pax -rzf archive.tar.gz

В связи с возможностью использовать pax в стиле cpio, имеется возможность применить какую-либо другую программу сжатия, например, xz:

pax -w . | xz > archive.tar.xz

и вывести содержимое xz-архива:

xzcat archive.tar.xz | pax

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

На сентябрь 2009 версии pax, включаемые в большинство дистрибутивов Linux и BSD (pax[2]), поддерживает следующие форматы, активируемые посредством опции -x:

  • cpio — расширенный cpio-формат для обмена, указанный в стандарте IEEE Std 1003.2 («POSIX.2»).
  • bcpio — старый cpio-формат.
  • sv4cpio — System V release 4 cpio.
  • sv4crc — System V release 4 cpio с использованием crc контрольной суммы.
  • tar — старый BSD tar формат, появившийся в BSD4.3.
  • ustar (default) — формат обмена tar, указанный в стандарте IEEE Std 1003.2 («POSIX.2»).

Важно, что формат pax сам по себе не поддерживается существующей версии pax. Некоторые реализации, например Heirloom pax, поддерживают перспективные форматы,[3], включая собственно сам pax-формат.

Поддержка нескольких томов

pax поддерживает возможность создания многотомных архивов. Когда достигается конец тома, появляется следующее сообщение:

Внимание! pax требуется сменить том архива.
/dev/fd0 готов для тома: 2
Загрузите следующий элемент хранения (диск) если требуется
и убедитесь что разрешена запись. Введите "y" для продолжения,
"." для завершения pax, или "s" для переключения на новое устройство.
Если Вы не можете сменить элемент хранения (диск) введите "s"
Устройство готово и подключено? >

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

Стандартизация, принятие и популяризация

Несмотря на то, стандартизован в 2001 в IEEE, на 2010 pax пользуется сравнительно небольшой популярностью.

pax обязателен для присутствия во всех совместимых системах по Linux Standard Base, начиная с версии 3.0 (релиз от 6 Июля, 2005),[4] но до сих пор мало дистрибутивов Linux предоставляют по умолчанию. Тем не менее, большинство дистрибутивов включают pax отдельным пакетом.

pax также присутствует в Windows NT, где он ограничен файловыми архивами (лента не поддерживается).[5] Затем было перемещено в подсистему Interix. Необходимо отметить, что создание и восстановление Win32 ACLs не поддерживается.[6]

Пакеты, обрабатываемые установщиком OS X, нередко упакованы в файле Archive.pax.gz, который может быть прочитан с помощью утилиты pax.[7]

Напишите отзыв о статье "Pax (Unix)"

Примечания

  1. [www.opengroup.org/onlinepubs/009695399/utilities/pax.html The Open Group Base Specifications Issue 6] — POSIX.1-2001 (IEEE Std 1003.1) Copyright © 2001—2004 The IEEE and [www.opengroup.org/ The Open Group]
  2. [www.freebsd.org/cgi/man.cgi?format=html&query=pax%281%29 man pax]
  3. [heirloom.sourceforge.net/man/pax.1.html Heirloom pax man page]
  4. [www.linuxfoundation.org/en/ReleaseNotes3#Commands Release notes for LSB 3.0] заметим что pax был добавлен: [refspecs.linux-foundation.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/command.html#CMDUTIL LSB 3.0. Commands and Utilities] требование pax, но [refspecs.linux-foundation.org/LSB_2.1.0/LSB-Core-generic/LSB-Core-generic/command.html#CMDUTIL LSB 2.1.0. Commands and Utilities] не требует этого
  5. Eric Pearce. [books.google.com/books?id=tjN8gIFfLtoC&pg=PA271 Windows NT in a nutshell: a desktop quick reference for system administrators]. — O'Reilly Media, Inc., 1997. — P. 271. — ISBN 978-1-56592-251-8.
  6. [support.microsoft.com/kb/246322 System Administration of Backups, Tar, and Pax in Interix]
  7. [www.cocoabuilder.com/archive/cocoa/24947-extracting-files-from-pax-gz-package.html Extracting files from a pax.gz package]. cocoabuilder.com. Проверено 15 августа 2013.

Ссылки

  • [onlamp.com/pub/a/bsd/2002/08/22/FreeBSD_Basics.html Archiving with Pax] Article in FreeBSD basics on [onlamp.com/ ONLamp.com], by [onlamp.com/pub/au/73 Dru Lavigne] (2002-08-22)

См. также

Отрывок, характеризующий Pax (Unix)

– Это офицер, ваше благородие, окровянил, – отвечал солдат артиллерист, обтирая кровь рукавом шинели и как будто извиняясь за нечистоту, в которой находилось орудие.
Насилу, с помощью пехоты, вывезли орудия в гору, и достигши деревни Гунтерсдорф, остановились. Стало уже так темно, что в десяти шагах нельзя было различить мундиров солдат, и перестрелка стала стихать. Вдруг близко с правой стороны послышались опять крики и пальба. От выстрелов уже блестело в темноте. Это была последняя атака французов, на которую отвечали солдаты, засевшие в дома деревни. Опять всё бросилось из деревни, но орудия Тушина не могли двинуться, и артиллеристы, Тушин и юнкер, молча переглядывались, ожидая своей участи. Перестрелка стала стихать, и из боковой улицы высыпали оживленные говором солдаты.
– Цел, Петров? – спрашивал один.
– Задали, брат, жару. Теперь не сунутся, – говорил другой.
– Ничего не видать. Как они в своих то зажарили! Не видать; темь, братцы. Нет ли напиться?
Французы последний раз были отбиты. И опять, в совершенном мраке, орудия Тушина, как рамой окруженные гудевшею пехотой, двинулись куда то вперед.
В темноте как будто текла невидимая, мрачная река, всё в одном направлении, гудя шопотом, говором и звуками копыт и колес. В общем гуле из за всех других звуков яснее всех были стоны и голоса раненых во мраке ночи. Их стоны, казалось, наполняли собой весь этот мрак, окружавший войска. Их стоны и мрак этой ночи – это было одно и то же. Через несколько времени в движущейся толпе произошло волнение. Кто то проехал со свитой на белой лошади и что то сказал, проезжая. Что сказал? Куда теперь? Стоять, что ль? Благодарил, что ли? – послышались жадные расспросы со всех сторон, и вся движущаяся масса стала напирать сама на себя (видно, передние остановились), и пронесся слух, что велено остановиться. Все остановились, как шли, на середине грязной дороги.
Засветились огни, и слышнее стал говор. Капитан Тушин, распорядившись по роте, послал одного из солдат отыскивать перевязочный пункт или лекаря для юнкера и сел у огня, разложенного на дороге солдатами. Ростов перетащился тоже к огню. Лихорадочная дрожь от боли, холода и сырости трясла всё его тело. Сон непреодолимо клонил его, но он не мог заснуть от мучительной боли в нывшей и не находившей положения руке. Он то закрывал глаза, то взглядывал на огонь, казавшийся ему горячо красным, то на сутуловатую слабую фигуру Тушина, по турецки сидевшего подле него. Большие добрые и умные глаза Тушина с сочувствием и состраданием устремлялись на него. Он видел, что Тушин всею душой хотел и ничем не мог помочь ему.
Со всех сторон слышны были шаги и говор проходивших, проезжавших и кругом размещавшейся пехоты. Звуки голосов, шагов и переставляемых в грязи лошадиных копыт, ближний и дальний треск дров сливались в один колеблющийся гул.
Теперь уже не текла, как прежде, во мраке невидимая река, а будто после бури укладывалось и трепетало мрачное море. Ростов бессмысленно смотрел и слушал, что происходило перед ним и вокруг него. Пехотный солдат подошел к костру, присел на корточки, всунул руки в огонь и отвернул лицо.
– Ничего, ваше благородие? – сказал он, вопросительно обращаясь к Тушину. – Вот отбился от роты, ваше благородие; сам не знаю, где. Беда!
Вместе с солдатом подошел к костру пехотный офицер с подвязанной щекой и, обращаясь к Тушину, просил приказать подвинуть крошечку орудия, чтобы провезти повозку. За ротным командиром набежали на костер два солдата. Они отчаянно ругались и дрались, выдергивая друг у друга какой то сапог.
– Как же, ты поднял! Ишь, ловок, – кричал один хриплым голосом.
Потом подошел худой, бледный солдат с шеей, обвязанной окровавленною подверткой, и сердитым голосом требовал воды у артиллеристов.
– Что ж, умирать, что ли, как собаке? – говорил он.
Тушин велел дать ему воды. Потом подбежал веселый солдат, прося огоньку в пехоту.
– Огоньку горяченького в пехоту! Счастливо оставаться, землячки, благодарим за огонек, мы назад с процентой отдадим, – говорил он, унося куда то в темноту краснеющуюся головешку.
За этим солдатом четыре солдата, неся что то тяжелое на шинели, прошли мимо костра. Один из них споткнулся.
– Ишь, черти, на дороге дрова положили, – проворчал он.
– Кончился, что ж его носить? – сказал один из них.
– Ну, вас!
И они скрылись во мраке с своею ношей.
– Что? болит? – спросил Тушин шопотом у Ростова.
– Болит.
– Ваше благородие, к генералу. Здесь в избе стоят, – сказал фейерверкер, подходя к Тушину.
– Сейчас, голубчик.
Тушин встал и, застегивая шинель и оправляясь, отошел от костра…
Недалеко от костра артиллеристов, в приготовленной для него избе, сидел князь Багратион за обедом, разговаривая с некоторыми начальниками частей, собравшимися у него. Тут был старичок с полузакрытыми глазами, жадно обгладывавший баранью кость, и двадцатидвухлетний безупречный генерал, раскрасневшийся от рюмки водки и обеда, и штаб офицер с именным перстнем, и Жерков, беспокойно оглядывавший всех, и князь Андрей, бледный, с поджатыми губами и лихорадочно блестящими глазами.
В избе стояло прислоненное в углу взятое французское знамя, и аудитор с наивным лицом щупал ткань знамени и, недоумевая, покачивал головой, может быть оттого, что его и в самом деле интересовал вид знамени, а может быть, и оттого, что ему тяжело было голодному смотреть на обед, за которым ему не достало прибора. В соседней избе находился взятый в плен драгунами французский полковник. Около него толпились, рассматривая его, наши офицеры. Князь Багратион благодарил отдельных начальников и расспрашивал о подробностях дела и о потерях. Полковой командир, представлявшийся под Браунау, докладывал князю, что, как только началось дело, он отступил из леса, собрал дроворубов и, пропустив их мимо себя, с двумя баталионами ударил в штыки и опрокинул французов.