пакс (команда)
Эта статья , возможно, содержит оригинальные исследования . ( Апрель 2021 г. ) |
Оригинальный автор(ы) | Марк Х. Колберн (при поддержке Ассоциации USENIX ) |
---|---|
Разработчик(и) | Различные с открытым исходным кодом и коммерческие разработчики разработчики |
Первоначальный выпуск | 1989 год |
Написано в | Колберн пакс, Мюллер пакс, Пакс семейной реликвии : C |
Операционная система | Unix , Unix-подобные , IBM i , Windows |
Платформа | Кросс-платформенный |
Тип | Команда |
Лицензия | Colburn pax: Предыдущая лицензия BSD Muller pax: пункт BSD-4 Пакс семейной реликвии: zlib Windows: фирменное программное обеспечение. |
pax — это утилита архивирования, доступная для различных операционных систем и разработанная с 1995 года. [1] Вместо того, чтобы перебирать несовместимые варианты, вкравшиеся между tar
и cpio
Наряду со своими реализациями в различных версиях Unix , IEEE разработал новую утилиту архивирования pax, которая могла поддерживать различные форматы архивов с полезными опциями обоих архиваторов. pax
команда доступна в Unix и Unix-подобных операционных системах , а также в IBM i . [2] и Microsoft Windows NT [3] до Windows 2000 .
В 2001 году IEEE определил новый формат pax , который по сути представляет собой tar с дополнительными расширенными атрибутами. [4] [5] Формат не поддерживается командами pax в большинстве дистрибутивов Linux и FreeBSD, но поддерживается командами tar из GNU и FreeBSD; формат дополнительно поддерживается командами pax в AIX, Solaris и HP-UX.
Название «pax» является аббревиатурой от портативного обмена архивами , но также является намеком на латинское слово, означающее «мир»; вызов и структура команды представляют собой своего рода мирное объединение обоих tar
и cpio
.
История
[ редактировать ]Первая публичная реализация pax была написана Марком Х. Колберном в 1989 году. Колберн разместил ее на comp.sources.unix как замена Usenix/IEEE POSIX для TAR и CPIO . На страницах руководства для pax в HP-UX , IRIX и SCO UNIX pax указан как Colburn. [6]
Уже в проекте POSIX.2 10 от июля 1990 года рассматривается команда pax . [7] Кроме того, проекты POSIX.2 и IEEE 1003.1b 1991 года охватывают команду pax , включающую форматы архивов cpio и ustar.
Другая версия программы pax была создана Китом Мюллером в 1992–1993 годах. [8] Эта версия впервые появилась в 4.4BSD (1995 г.). [9] Команда Pax появилась в X/Open, выпуск 4 ( Единая спецификация Unix, версия 1) в 1995 году. [1] включая форматы архивов cpio и ustar, которые также были единственными двумя форматами, представленными в Единой спецификации Unix 1997 года.
В 1997 году компания Sun Microsystems предложила метод добавления расширений к формату ustar. Этот метод был принят в стандарте POSIX.1-2001 как новый формат файла pax . Спецификация POSIX для Утилита pax была обновлена и теперь включает этот формат. [1]
Функции
[ редактировать ]Режимы
[ редактировать ]pax имеет четыре основных режима, которые вызываются комбинацией -r («читать») и -w Опции («запись»).
В этой таблице суммировано модальное поведение:
Вариант | Режим | Описание |
---|---|---|
(никто) | "список" | показывает содержимое архива, ничего не изменяет и не извлекает. |
-р | "читать" | читает и извлекает содержимое архива |
-В | "писать" | создает архивы или добавляет файлы в архив |
-rw | "копировать" | читает и копирует файлы и дерево каталогов в указанный каталог |
Эта модель похожа на 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 .
(Целевой каталог должен существовать заранее!)
Вызов команды
[ редактировать ]По умолчанию pax использует стандартный ввод/вывод для операций архивирования и листинга. Это можно изменить с помощью опции «tar-style». -f
который указывает файл архива. Pax отличается от cpio тем, что содержимое каталога рассматривается рекурсивно; чтобы отключить это поведение, в POSIX pax есть опция -d
чтобы отключить его.
The Команда pax представляет собой смесь cpio и особенности смолы . Нравиться берет , pax рекурсивно обрабатывает записи каталога, эту функцию можно отключить с помощью -d
для поведения в стиле cpio. Обработка файлового ввода/вывода также является смешанной: когда список имен файлов указан в командной строке, они воспринимаются как общие имена оболочки для ввода или вывода файлов (подобно tar); в противном случае Пакс берет на себя cpio -стиль использования стандартного ввода для списка файлов. Окончательно, pax поддерживает чтение/запись в именованный архивный файл с использованием tar. -f FILE
вариант.
Например, если требуется архивировать текущий каталог в стиле cpio, pax можно использовать с найти так же, как с помощью cpio:
$ find . -depth -print | pax -wd > archive.tar
(Эта конструкция бессмысленна без каких-либо фильтров для find , поскольку он становится идентичным приведенному выше примеру.)
Команда для извлечения содержимого архива такая же, как и CPIO :
$ pax -r < archive.tar
Эти команды можно вызвать в tar
-подобный синтаксис:
$ pax -wf archive.tar . # write (archive)
$ pax -rf archive.tar # read (extract)
$ pax -f archive.tar # list
$ pax -rw . archive_dir # copy
Сжатие
[ редактировать ]Большинство реализаций 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
Поддержка форматов
[ редактировать ]POSIX.1-2001 требует, чтобы команда pax поддерживала как минимум форматы архивов cpio, ustar и pax.
Версии команды pax , основанные на реализации 4.4BSD, обычно наследуют форматы, поддерживаемые этой версией, которые можно выбрать с помощью -х опция:
- 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»).
POSIX.1-2001 Формат pax не поддерживается этой версией команды pax BSD . Формат не поддерживается в большинстве дистрибутивов Linux ( команда pax из MirBSD ветки MirCPIO-paxmirabilis ). [10] [11] [12] и во FreeBSD . [9] Формат поддерживается командой pax в AIX. [13] Солярис [14] и HP-UX. Он дополнительно поддерживается модулем tarfile Python, [15] лиархивом с лицензией BSD, [16] [17] от 7-ZIP [18] и далее GNU tar [19] и FreeBSD tar. [20] Команда pax Heirloom Project , разработанная Гуннаром Риттером в 2003 году, поддерживает формат pax , а также множество дополнительных форматов. [21]
Несколько томов
[ редактировать ]pax поддерживает архивирование на нескольких томах. При достижении конца тома появляется следующее сообщение:
$ pax -wf /dev/fd0 .
ATTENTION! pax archive volume change required.
/dev/fd0 ready for archive volume: 2
Load the NEXT STORAGE MEDIA (if required) and make sure it is WRITE ENABLED.
Type "y" to continue, "." to quit pax, or "s" to switch to new device.
If you cannot change storage media, type "s"
Is the device ready and online? >
При восстановлении архива с нескольких носителей pax запрашивает следующий носитель таким же образом, когда конец носителя достигается раньше конца архива.
Стандартизация, прием и популярность
[ редактировать ]Несмотря на то, что в 2001 году он был стандартизирован IEEE, по состоянию на 2010 год pax пользуется относительно небольшой популярностью и распространением. [ нужна ссылка ] Частично это связано с тем, что пользователям Unix в этом не было никакой необходимости; просто комитет POSIX хочет иметь более последовательный интерфейс. Пакс также довольно разговорчив и ожидает взаимодействия с пользователем, когда что-то пойдет не так. [ нужна ссылка ]
pax должен присутствовать во всех системах, соответствующих стандарту Linux Standard Base, начиная с версии 3.0 (выпущенной 6 июля 2005 г.), [22] но пока лишь немногие дистрибутивы Linux поставляются и устанавливают его по умолчанию. Однако большинство дистрибутивов включают pax как отдельно устанавливаемый пакет. [23] [24] [25]
pax также присутствует в Windows NT , где он ограничен файловыми архивами (ленты не поддерживаются). [3] Позже он был перенесен в подсистему Interix . Он не поддерживает архивирование или восстановление Win32 списков управления доступом . [26] pax в дальнейшем присутствовал в Windows 2000. [27]
Пакеты, обрабатываемые установщиком (macOS), часто содержат большую часть своего содержимого в файле Archive.pax.gz, который можно прочитать с помощью системной утилиты pax (реликвия). [28]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б с Базовые спецификации открытой группы, выпуск 6 — POSIX.1-2001 (IEEE Std 1003.1). Авторские права © 2001-2004. IEEE and The Open Group.
- ^ ИБМ . «Программирование Qshell в IBM System i версии 7.2» (PDF) . ИБМ . Проверено 05 сентября 2020 г.
- ^ Перейти обратно: а б Эрик Пирс (1997). Коротко о Windows NT: настольный краткий справочник для системных администраторов . О'Рейли Медиа, Инк. с. 271 . ISBN 978-1-56592-251-8 .
- ^ «GNU tar: 8.1 Использование меньшего пространства за счет сжатия» . www.gnu.org . Архивировано из оригинала 6 марта 2016 года . Проверено 22 апреля 2018 г.
- ^ «GNU tar: 4.3.2 Расширенные атрибуты файлов» . www.gnu.org . Архивировано из оригинала 28 декабря 2019 года . Проверено 27 января 2021 г.
- ^ TAR versus Portability – PAX and USTAR , invisible-island.net
- ^ IEEE P1003.2 Проект 11.2 — сентябрь 1991 г. (pdf) — Shell and Utilities, Princeton.edu — В проекте 11 указаны изменения в pax , поэтому он должен был быть в проекте 10.
- ^ Пакс , svnweb.freebsd.org
- ^ Перейти обратно: а б FreeBSD по основным командам Руководство –
- ^ «MirCPIO — paxmirabilis: смола и даже ар!» . МирБСД . Проверено 24 января 2020 г.
- ^ «MirCPIO в Launchpad» . launchpad.net . Проверено 22 апреля 2018 г.
- ^ «Ошибка № 456405 «отсутствие поддержки формата pax для формата «pax» приводит к сбою LSB»: Ошибки: MirCPIO» . bugs.launchpad.net . Проверено 22 апреля 2018 г.
- ^ pax для AIX 7.3, ibm.com
- ^ pax для Solaris 11.1, docs.oracle.com
- ^ tarfile , python.org
- ^ libarchive , libarchive.org
- ^ libarchive(3) , freebsd.org
- ^ ИСТОРИЯ 7-Zip , 7-zip.org
- ^ руководство по tar , gnu.org
- ^ смола , freebsd.org
- ^ "чел.1" . heirloom.sourceforge.net . Проверено 22 апреля 2018 г.
- ^ Примечания к выпуску LSB 3.0. Архивировано 17 июля 2011 г. на Wayback Machine. Отмечается, что был добавлен pax: LSB 3.0. Для команд и утилит требуется pax, но LSB 2.1.0. Команды и утилиты этого не требуют.
- ^ Пакс , pkgs.org
- ^ спакс , pkgs.org
- ^ семейная реликвия-pax , pkgs.org
- ^ «Системное администрирование резервных копий, Tar и Pax в Interix» . Архивировано из оригинала 23 августа 2010 г.
- ^ Виртуальный x86 , copy.sh
- ^ «Извлечение файлов из пакета pax.gz» . www.coabuilder.com. Архивировано из оригинала 14 февраля 2015 года . Проверено 15 августа 2013 г.
Дальнейшее чтение
[ редактировать ]- Фриш, Элин (2001). Карманный справочник по командам Windows 2000 . О'Рейли . ISBN 978-0-596-00148-3 .
Внешние ссылки
[ редактировать ]- Архивирование с помощью Pax. Архивировано 4 октября 2009 г. на Wayback Machine. Статья в разделе «Основы FreeBSD» на ONLamp.com. Архивировано 17 сентября 2009 г. на Wayback Machine , автор: Дрю Лавин. Архивировано 10 октября 2008 г. на Wayback Machine (08 августа 2002 г.). 22)
- Единая спецификация UNIX , версия 4 от Open Group. – Справочник по оболочке и утилитам,
- FreeBSD по основным командам Руководство –
- OpenBSD по общим командам Руководство –
- pax.1p - Руководство по Linux - Руководство программиста POSIX, а не настоящий Linux
- Debian по основным командам Руководство –
- Solaris 11.4 по пользовательским командам Справочное руководство –