Jump to content

pax (command)

This is a fully translated article. Click here for more information.
From DawoumWiki, the free Mathematics self-learning

pax
Original author(s)Mark H. Colburn (sponsored by The USENIX Association)
Developer(s)Various open-source and commercial developers
Initial release1989; 35 years ago (1989)
Written inColburn pax, Muller pax, Heirloom Project pax: C
Operating systemUnix, Unix-like, IBM i, Windows
PlatformCross-platform
TypeCommand
LicenseColburn pax: Prior BSD License
Muller pax: BSD-4-Clause
Heirloom Project pax: zlib
Windows: Proprietary software

pax는 다양한 운영 시스템에서 사용할 수 있는 아카이빙 유틸리티이고 1995년부터 정의되었습니다.[1] 다양한 버전의 유닉스에 걸쳐 그들의 구현과 함께, tarcpio 사이에 끼어 있던 호환되지 않는 옵션을 분류하는 대신, IEEE는 두 아카이버로부터 유용한 옵션을 갖는 다양한 아카이브 형식을 지원할 수 있는 새로운 아카이브 유틸리티를 설계했습니다. pax 명령은 유닉스와 유닉스-계열 운영 시스템과 IBM i,[2] Microsoft Windows NT,[3]Windows 2000에서 사용할 수 있습니다.

IEEE는, 2001년에, 추가 확장된 속성을 갖는 기본적으로 tar인 새로운 pax 형식을 정의했습니다.[4][5]

이름 "pax"는 portable archive exchange에 대해 약어입니다. 그 명령 호출 및 구조는 tarcpio 둘 다를 얼마간 통합한 것입니다.

History

pax의 첫 번째 공개 구현은 1989년 Mark H. Colburn에 의해 작성되었습니다. Colburn은 Usenix/IEEE POSIX replacement for TAR and CPIOcomp.sources.unix에 그것을 게시했습니다. HP-UX, IRIX, 및 SCO UNIX에서 pax에 대한 매뉴얼 페이지는 pax를 Colburn에 기인한다고 말합니다.[6]

pax 프로그램의 또 다른 버전은 1992–1993년에 Keith Muller에 의해 작성되었습니다. 그 버전은 4.4BSD (1995)에 처음 등장했습니다.[7] Pax는 1995년 X/Open 문제 4 (단일 유닉스 사양 버전 1)에 채택되었습니다.[1] 이들 버전의 pax는 오직 명령줄 인터페이스를 tar/cpio 하이브리드로 정의했지만, pax 파일 형식은 아직 정의되지 않았습니다. (Pax를 정의하는 작업은 Muller의 작업보다 선행할 가능성이 높습니다; 그것은 1991년경 초기 POSIX.2 및 IEEE 1003.1b 초안에 있는 것으로 보입니다.)

1997년에, Sun Microsystemsustar 형식에 확장을 추가하는 방법을 제안했습니다. 이 방법은 나중에 새로운 pax 파일 형식으로 POSIX.1-2001 표준에 대해 승인되었습니다. pax 유틸리티에 대한 POSIX 사양이 이 형식을 포함하도록 업데이트되었습니다.[1]

Features

Modes

pax-r ("읽기") 및 -w ("쓰기") 옵션의 조합에 의해 호출되는 네 가지 일반 모드를 가집니다.

다음 테이블은 모달 동작이 요약되어 있습니다:

옵션 모드 설명
(none) "목록" 아카이브의 내용을 표시하고, 어떤 것도 수정하거나 추출하지 않습니다.
-r "읽기" 아카이브의 내용을 읽고 추출
-w "쓰기" 아카이브를 생성하거나 아카이브에 파일을 덧붙임
-rw "복사" 파일과 디렉토리 트리를 읽고 지정된 디렉토리에 복사

이 모델은 cpio와 유사하며, 유사한 기본 작업 집합을 가집니다.

Examples

아카이브 내용 나열:

$ 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 .

(대상 디렉토리가 미리 존재해야 합니다!)

Command invocation

기본적으로, pax는 아카이브 및 나열 작업에 표준 입력/출력을 사용합니다. 이것은 아카이브 파일을 지정하는 "tar-style" 옵션 -f로 변경될 수 있습니다. Pax는 디렉토리 내용을 재귀적으로 고려한다는 점에서 cpio와 다릅니다; 이 동작을 비활성화하기 위해, POSIX pax는 그것을 비활성화하기 위해 -d 옵션을 가집니다.

pax 명령은 cpiotar 기능을 혼합한 것입니다. tar와 마찬가지로, pax는 디렉토리 항목을 재귀적으로 처리하며, 이 기능은 cpio-스타일 동작에 대해 -d와 함께 비활성화될 수 있습니다. 파일 입력/출력 처리도 혼합되어 있습니다: 파일 이름 목록이 명령줄에 지정될 때, 그것들은 파일 입력 또는 목록 (tar-like)에 대한 쉘 글로브로 취합니다; 그렇지 않으면 pax는 파일 목록에 대해 표준 입력을 사용하는 cpio-스타일 동작을 취합니다. 마지막으로, pax는 tar의 -f FILE 옵션을 사용하여 이름-지은 아카이브 파일에 대한 읽기/쓰기를 지원합니다.

예를 들어, 현재 디렉토리의 cpio-스타일 아카이빙을 원하면, pax는 cpio를 사용하는 것처럼 find와 함께 사용될 수 있습니다:

$ 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

Compression

대부분의 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

Format support

현존하는 거의 모든 버전의 pax는 원래 4.4BSD 구현에서 비롯되었습니다. 그것들의 대부분은 -x 옵션을 통해 선택할 수 있는 해당 버전에 의해 지원된 형식을 상속합니다:

  • cpio – IEEE Std 1003.2 ("POSIX.2") 표준에 지정된 확장된 cpio 교환 형식.
  • bcpio – 이전의 바이너리 cpio 형식.
  • sv4cpio – 시스템 V 출시 4 cpio.
  • sv4crc – 파일 crc 체크섬과 함께 시스템 V 출시 4 cpio.
  • tar – BSD4.3에서 볼 수 있는 오래된 BSD tar 형식.
  • ustar (기본) – IEEE Std 1003.2 ("POSIX.2") 표준에 지정된 tar 교환 형식.

특히, 2001 pax 형식에 대한 지원은 이 레거시 pax에서 지원되지 않습니다. 이것은 대부분의 리눅스 배포판 (MirCPIO-paxmirabilisMirBSD 가지를 사용)[8][9][10]FreeBSD의 경우입니다.[7]

Heirloom Project pax 명령은 2003년 Gunnar Ritter에 의해 개발되었습니다. 그것은 pax 형식과 많은 추가 형식을 지원합니다.[11]

Multiple volumes

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는 아카이브가 끝나기 전에 미디어 끝이 도달될 때 같은 방식으로 다음 미디어를 요청합니다.

Standardization, reception and popularity

IEEE에 의해 2001년에 표준화되었음에도 불구하고, 2010년부터, pax는 상대적으로 인기나 채택이 거의 없습니다.[citation needed] 이것은 부분적으로 그것에 대해 유닉스 사용자으로부터 임의으 요구가 없기 때문입니다; 그것은 보다 일관된 인터페이스를 원하는 POSIX 위원회뿐이었습니다. Pax는 역시 상당히 수다스럽고 일이 잘못되었을 때 사용자 상호 작용을 기대합니다.[citation needed]

pax는 버전 3.0 (2005년 7월 6일에 출시됨)부터 Linux Standard Base에 의해 모든 준수 시스템에 있어야 하지만,[12] 지금까지 기본적으로 제공되고 설치되는 리눅스 배포판은 거의 없습니다. 어쨌든, 대부분의 배포판은 pax를 별도로 설치 가능한 패키지로 포함합니다.

pax는 파일 아카이브 (테이프는 지원되지 않음)로 제한되는 Windows NT에도 있었습니다.[3] 그것은 나중에 Interix 하위시스템으로 옮겨졌습니다. 그것은 Win32 ACL의 아카이빙 또는 복원을 지원하지 않습니다.[13]

설치 프로그램에 의해 처리된 패키지는 시스템의 pax (heirloom) 유틸리티를 사용하여 읽힐 수 있는 Archive.pax.gz 파일에 대부분의 내용을 담고 있습니다.[14]

See also

References

  1. ^ a b c The Open Group Base Specifications Issue 6 - POSIX.1-2001 (IEEE Std 1003.1) Copyright © 2001-2004 The IEEE and The Open Group
  2. ^ IBM. "IBM System i Version 7.2 Programming Qshell" (PDF). Retrieved 2020-09-05.
  3. ^ a b Eric Pearce (1997). Windows NT in a nutshell: a desktop quick reference for system administrators. O'Reilly Media, Inc. p. 271. ISBN 978-1-56592-251-8.
  4. ^ "GNU tar: 8.1 Using Less Space through Compression". www.gnu.org. Archived from the original on 6 March 2016. Retrieved 22 April 2018.
  5. ^ "GNU tar: 4.3.2 Extended File Attributes". www.gnu.org. Archived from the original on 28 December 2019. Retrieved 27 January 2021.
  6. ^ TAR versus Portability – PAX and USTAR
  7. ^ a b pax(1) – FreeBSD General Commands Manual
  8. ^ "MirCPIO — paxmirabilis: tar and even ar!". MirBSD. Retrieved 24 January 2020.
  9. ^ "MirCPIO in Launchpad". launchpad.net. Retrieved 22 April 2018.
  10. ^ "Bug #456405 "pax lack of support for "pax" format fails LSB" : Bugs : MirCPIO". bugs.launchpad.net. Retrieved 22 April 2018.
  11. ^ "pax.1". heirloom.sourceforge.net. Retrieved 22 April 2018.
  12. ^ Release notes for LSB 3.0 Archived 2011-07-17 at the Wayback Machine note that pax was added: LSB 3.0. Commands and Utilities requires pax, but LSB 2.1.0. Commands and Utilities does not require it
  13. ^ http://support.microsoft.com/kb/246322
  14. ^ "Extracting files from a pax.gz package". cocoabuilder.com. Archived from the original on 14 February 2015. Retrieved 15 August 2013.

Further reading

External links