Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

pax - это утилита архивирования, доступная для различных операционных систем и определенная с 1995 года. [1] Вместо того, чтобы разбираться с несовместимыми опциями, которые возникли между разными версиями Unix , tarи cpioвместе с их реализациями в различных версиях Unix , IEEE разработал новую архивную утилиту, которая может поддерживать различные форматы архивов с полезными опциями от обоих архиваторов. pax Команда доступна на Unix и Unix-подобных операционных систем и на IBM я , [2] Microsoft Windows NT , [3] и Windows 2000.

В 2001 году IEEE определил новый формат pax , который в основном представляет собой tar с дополнительными расширенными атрибутами. [4] [5]

Название «pax» является аббревиатурой от портативного обмена архивами . Вызов и структура команды - это своего рода объединение обоих tarи cpio.

История [ править ]

Версия программы pax была создана Китом Мюллером в 1992–1993 годах. Версия впервые появилась в 4.4BSD (1995). [6] Pax был принят в выпуск 4 X / Open ( единая спецификация Unix версии 1) в 1995 году. [1] Эти версии pax определяли интерфейс командной строки только как гибрид tar / cpio, но формат файла pax не был пока не определено. (Работа по определению Pax, вероятно, предшествует работе Мюллера; похоже, что она находится в ранних черновиках POSIX.2 и IEEE 1003.1b примерно 1991 г.)

В 1997 году Sun Microsystems предложила метод добавления расширений к формату ustar. Позже этот метод был принят в стандарте POSIX.1-2001 как новый формат файла pax . Спецификация POSIX для утилиты pax была обновлена, чтобы включить этот формат. [1]

Особенности [ править ]

Режимы [ править ]

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

Эта таблица суммирует модальное поведение:

Эта модель похожа на cpio, которая имеет аналогичный набор основных операций.

Примеры [ править ]

Перечислить содержимое архива:

$ pax <archive.tar

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

$ pax -r <archive.tar

Создайте архив текущего каталога:

$ printf  '.'  | pax -w> archive.tar $ pax -w. > archive.tar

Скопируйте текущее дерево каталогов в другое место:

$ printf  '.'  | pax -w> archive.tar $ pax -rw target_dir.

(Целевая директория должна существовать заранее!)

Вызов команды [ править ]

По умолчанию он использует стандартный ввод / вывод для операций архивирования и листинга, но это можно изменить с помощью опции «tar-style», -fкоторая указывает файл архива. Pax отличается от cpio тем, что рекурсивно рассматривает содержимое каталога; чтобы отключить это поведение, в POSIX pax есть возможность -dотключить его.

Команда pax представляет собой смесь функций cpio и tar . Как и tar , pax рекурсивно обрабатывает записи каталога, и эту функцию можно отключить для поведения в стиле cpio. Обработка файлового ввода / вывода также является смешанной: когда в командной строке указывается список имен файлов, они используются как глобусы оболочки для ввода или вывода файлов (как tar); в противном случае pax использует поведение в стиле cpio, используя стандартный ввод для списка файлов. Наконец, pax поддерживает чтение / запись в именованный архивный файл с использованием опции tar .-d-f FILE

Например, если кто-то хочет архивировать текущий каталог в стиле cpio, pax можно использовать с find так же, как с cpio:

$ найти. -глубина-отпечаток | pax -wd> archive.tar

(Эта конструкция бессмысленна без каких-либо фильтров для поиска , поскольку она становится идентичной приведенному выше примеру.)

Команда для извлечения содержимого из архива такая же, как и cpio :

$ pax -r <archive.tar

Эти команды также можно вызывать в tarсинтаксисе, подобном -подобному:

$ pax -wf archive.tar. # запись (архив) $ pax -rf archive.tar # чтение (извлечение) $ pax -f archive.tar # список $ pax -rw. archive_dir # копия

Сжатие [ править ]

В большинстве реализаций pax для сжатия используются переключатели -z ( gzip ) и -j ( bzip2 ); однако эта функция не указана в POSIX. Важно отметить, что pax не может добавлять файлы в сжатые архивы. Пример распаковки gzip-архива:

$ pax -rzf archive.tar.gz

Как и в tar и cpio, вывод pax может быть передан другой программе компрессора / декомпрессора. В качестве примера здесь используется xz :

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

и перечислив xz-сжатый архив в качестве входных данных:

$ xzcat archive.tar.xz | человек

Поддержка формата [ править ]

Почти все существующие версии pax произошли от исходной реализации 4.4BSD. Большинство из них наследует форматы, поддерживаемые этой версией, выбираемые с помощью параметра -x :

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

Примечательно, что поддержка формата pax 2001 не поддерживается этим устаревшим pax. Так обстоит дело с большинством дистрибутивов Linux (которые используют ветвь MirBSD пакета MirCPIO-paxmirabilis ) [7] [8] [9] и FreeBSD . [6]

В Heirloom Project pax есть поддержка pax, а также множество дополнительных форматов. [10]

Несколько томов [ править ]

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

$ pax -wf / dev / fd0.ВНИМАНИЕ! Требуется изменение объема архива pax. / dev / fd0 готов к архивированию тома: 2 Загрузите СЛЕДУЮЩИЙ НОСИТЕЛЬ (если требуется) и убедитесь, что запись включена. Введите «y», чтобы продолжить, «.» , чтобы выйти из pax, или «s», чтобы переключиться на новое устройство. Если вы не можете сменить носитель, введите «s». Готово ли устройство и подключено к сети? >

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

Стандартизация, прием и популярность [ править ]

Несмотря на то, что в 2001 году он был стандартизирован IEEE, по состоянию на 2010 год pax пользуется относительно небольшой популярностью или принятием. [ необходима цитата ] Это отчасти потому, что пользователи Unix не нуждались в этом; просто комитет POSIX хочет иметь более последовательный интерфейс. Пакс также довольно болтлив и ожидает взаимодействия с пользователем, когда что-то пойдет не так. [ необходима цитата ]

pax должен присутствовать во всех системах, совместимых с Linux Standard Base, начиная с версии 3.0 (выпущенной 6 июля 2005 г.), [11], но до сих пор немногие дистрибутивы Linux поставляются и устанавливают его по умолчанию. Однако большинство дистрибутивов включают pax как отдельно устанавливаемый пакет.

pax также присутствует в Windows NT , где он ограничен файловыми архивами (ленты не поддерживаются). [3] Позже он был перемещен в подсистему Interix . Он не поддерживает архивирование или восстановление списков ACL Win32 . [12]

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

См. Также [ править ]

  • Список команд Unix
  • Список форматов архивов
  • Сравнение файловых архиваторов

Ссылки [ править ]

  1. ^ a b c Базовые спецификации Open Group, выпуск 6 - POSIX.1-2001 (IEEE Std 1003.1) Copyright © 2001-2004 IEEE и The Open Group
  2. ^ IBM . «Qshell для программирования IBM System i версии 7.2» (PDF) . Проверено 5 сентября 2020 .
  3. ^ а б Эрик Пирс (1997). Коротко о Windows NT: краткий справочник для системных администраторов . O'Reilly Media, Inc. стр. 271 . ISBN 978-1-56592-251-8.
  4. ^ «GNU tar: 8.1 Использование меньшего пространства за счет сжатия» . www.gnu.org . Архивировано из оригинала 6 марта 2016 года . Проверено 22 апреля 2018 года .
  5. ^ "GNU tar: 4.3.2 Расширенные атрибуты файлов" . www.gnu.org . Архивировано из оригинала 28 декабря 2019 года . Проверено 27 января 2021 года .
  6. ^ a b pax(1)  -  Руководство по основным командам FreeBSD
  7. ^ "MirCPIO - paxmirabilis: tar и даже ar!" . MirBSD . Проверено 24 января 2020 года .
  8. ^ "MirCPIO в Launchpad" . launchpad.net . Проверено 22 апреля 2018 года .
  9. ^ "Ошибка № 456405" pax отсутствие поддержки формата "pax" приводит к сбою LSB ": Ошибки: MirCPIO" . bugs.launchpad.net . Проверено 22 апреля 2018 года .
  10. ^ "pax.1" . heirloom.sourceforge.net . Проверено 22 апреля 2018 года .
  11. ^ Примечания к выпуску LSB 3.0. Заархивировано 17 июля 2011 г. в Wayback Machine. Обратите внимание, что был добавлен pax: LSB 3.0. Команды и утилиты требует pax, но LSB 2.1.0. Команды и утилиты не требует этого
  12. ^ http://support.microsoft.com/kb/246322
  13. ^ «Извлечение файлов из пакета pax.gz» . cocoabuilder.com. Архивировано из оригинального 14 февраля 2015 года . Проверено 15 августа 2013 года .

Дальнейшее чтение [ править ]

  • Фриш, Элин (2001). Карманный справочник команд Windows 2000 . О'Рейли . ISBN 978-0-596-00148-3.

Внешние ссылки [ править ]

  • Архивирование с Pax статьи в основах FreeBSD на ONLamp.com , по Dru Lavigne (2002-08-22)