Pax (명령어)

pax는 다양한 운영체제에서 사용할 수 있으며 1995년부터 정의된 아카이빙 유틸리티이다.The Open Group Base Specifications Issue 6 - POSIX.1-2001 (IEEE Std 1003.1) Copyright © 2001-2004 The IEEE and The Open Group tar와 cpio 사이에 발생한 호환되지 않는 옵션들과 다양한 유닉스 버전에서 이들의 구현을 정리하기보다는, IEEE는 두 아카이버의 유용한 옵션을 모두 지원할 수 있는 새로운 아카이브 유틸리티인 pax를 설계했다. pax 명령어는 유닉스 및 유닉스 계열 운영체제와 IBM i, 그리고 마이크로소프트 윈도우 NT에서 윈도우 2000까지 사용할 수 있다.

2001년에 IEEE는 기본적으로 확장 속성이 추가된 tar와 유사한 새로운 pax 형식을 정의했다. 이 형식은 대부분의 리눅스 배포판 및 FreeBSD의 pax 명령어에서는 지원되지 않지만, GNU 및 FreeBSD의 tar 명령어에서는 지원된다. 이 형식은 AIX, Solaris 및 HP-UX의 pax 명령어에서도 지원된다.

"pax"라는 이름은 portable archive exchange의 약어이지만, "평화"를 의미하는 라틴어 단어를 암시하기도 한다. 명령어 호출 및 구조는 tar와 cpio의 평화로운 통합을 나타낸다.

 역사 
pax의 첫 공개 구현은 마크 H. 콜번(Mark H. Colburn)이 1989년에 작성했다. 콜번은 이를 에 유즈닉스/IEEE POSIX의 TAR 및 CPIO 대체 프로그램으로 게시했다. HP-UX, IRIX, SCO UNIX의 pax 매뉴얼 페이지는 pax를 콜번의 작품으로 언급한다.TAR versus Portability – PAX and USTAR, invisible-island.net

1990년 7월의 POSIX.2 드래프트 10부터 pax 명령어를 다룬다.IEEE P1003.2 Draft 11.2−September 1991 (pdf) - Shell and Utilities, princeton.edu - Draft 11 indicates changes to pax so it must have been in draft 10 또한 1991년 POSIX.2 및 IEEE 1003.1b 드래프트는 cpio 및 ustar 아카이브 형식을 특징으로 하는 pax 명령어를 다룬다.

또 다른 pax 프로그램 버전은 키스 뮐러(Keith Muller)가 1992~1993년에 만들었다.pax, svnweb.freebsd.org 이 버전은 4.4BSD (1995년)에 처음 등장했다. pax 명령어는 1995년 X/Open issue 4 (Single Unix Specification 버전 1)에 cpio 및 ustar 아카이브 형식을 특징으로 등장했으며 이 두 형식은 1997년 Single Unix Specification에서도 유일하게 다루어진 형식이었다.

1997년, 썬 마이크로시스템즈는 ustar 형식에 확장을 추가하는 방법을 제안했다. 이 방법은 새로운 pax 파일 형식으로 POSIX.1-2001 표준에 채택되었다.  유틸리티에 대한 POSIX 사양은 이 형식을 포함하도록 업데이트되었다.

 기능 

 모드 
pax는  ("읽기") 및  ("쓰기") 옵션의 조합으로 호출되는 네 가지 일반 모드를 가지고 있다.

이 표는 모달 동작을 요약한다:
 옵션 모드 설명 (없음) "목록" 아카이브의 내용을 보여주지만, 아무것도 수정하거나 추출하지 않는다.  "읽기" 아카이브의 내용을 읽고 추출한다.  "쓰기" 아카이브를 생성하거나 아카이브에 파일을 추가한다.  "복사" 파일 및 디렉터리 트리를 지정된 디렉터리로 읽고 복사한다.

이 모델은 유사한 기본 작업 세트를 가진 cpio와 유사하다.

 예시 
아카이브 내용 나열:

아카이브 내용을 현재 디렉터리로 추출:

현재 디렉터리의 아카이브 생성:

현재 디렉터리 트리를 다른 위치로 복사:

대상 디렉터리는 미리 존재해야 한다.

 명령어 호출 
기본적으로 pax는 아카이브 및 목록 작업에 표준 입출력을 사용한다. 이는 아카이브 파일을 지정하는 "tar 스타일" 옵션 로 변경할 수 있다. Pax는 디렉터리 내용을 재귀적으로 고려한다는 점에서 cpio와 다르다. 이 동작을 비활성화하려면 POSIX pax에는 이를 비활성화하는 옵션 가 있다.

 명령어는 와  기능의 혼합이다. 와 마찬가지로 는 디렉터리 항목을 재귀적으로 처리하는데, 이 기능은 cpio 스타일 동작을 위해 로 비활성화할 수 있다. 파일 입출력 처리도 혼합되어 있다. 명령줄에 파일 이름 목록이 지정되면 파일 입력 또는 목록 작성(tar와 유사)을 위한 셸 글로브로 간주된다. 그렇지 않으면 는 파일 목록에 표준 입력을 사용하는  스타일 동작을 취한다. 마지막으로 는 tar의  옵션을 사용하여 명명된 아카이브 파일에 읽기/쓰기를 지원한다.

예를 들어, 현재 디렉터리를 cpio 스타일로 아카이빙하려면, cpio를 사용하는 것처럼 와 함께 를 사용할 수 있다.

(에 필터가 없으면 위 예시와 동일해지므로 이 구성은 의미가 없다.)

아카이브에서 내용을 추출하는 명령어는 와 동일하다.

이러한 명령어는 tar와 유사한 구문으로도 호출할 수 있다.

 압축 
대부분의 pax 구현은 압축을 위해  (Gzip) 및  (Bzip2) 스위치를 사용한다. 그러나 이 기능은 POSIX에서 지정되지 않았다. pax는 압축된 아카이브에 추가할 수 없다는 점을 유의해야 한다.
gzip으로 압축된 아카이브를 추출하는 예시:

tar 및 cpio와 마찬가지로 pax 출력은 다른 압축/압축 해제 프로그램으로 파이프될 수 있다. 여기에 xz가 사용된 예시:

xz로 압축된 아카이브를 입력으로 나열하는 예시:

 형식 지원 
POSIX.1-2001은 pax 명령어가 최소한 cpio, ustar 및 pax 아카이브 형식을 지원해야 한다고 요구한다.

4.4BSD 구현에서 파생된 pax 명령어 버전은 일반적으로  옵션을 통해 선택 가능한 해당 버전에서 지원하는 형식을 상속한다.
 cpio – IEEE Std 1003.2 ("POSIX.2") 표준에 지정된 확장 cpio 교환 형식.
 bcpio – 구식 바이너리 cpio 형식.
 sv4cpio – System V release 4 cpio.
 sv4crc – 파일 CRC 체크섬이 포함된 System V release 4 cpio.
 tar – BSD4.3에서 발견된 구식 BSD tar 형식.
 ustar (기본값) – IEEE Std 1003.2 ("POSIX.2") 표준에 지정된 tar 교환 형식.

POSIX.1-2001 pax 형식은 이 BSD 버전의 pax 명령어에서 지원되지 않는다. 이 형식은 대부분의 리눅스 배포판(pax 명령어가 MirCPIO-paxmirabilis의 MirBSD 브랜치에서 파생됨) 및 FreeBSD에서는 지원되지 않는다. 이 형식은 AIXpax for AIX 7.3, ibm.com, Solarispax for Solaris 11.1, docs.oracle.com 및 HP-UX의 pax 명령어에서 지원된다. 또한 Python tarfile 모듈tarfile, python.org, BSD 라이선스가 적용된 libarchivelibarchive, libarchive.orglibarchive(3), freebsd.org, 7-ZIPHISTORY of the 7-Zip, 7-zip.org 및 GNU tartar manual, gnu.org와 FreeBSD tartar, freebsd.org에서도 지원된다. 2003년 군나르 리터(Gunnar Ritter)가 개발한 Heirloom Project pax 명령어는 pax 형식뿐만 아니라 많은 추가 형식도 지원한다.

 다중 볼륨 
pax는 다중 볼륨 아카이빙을 지원한다. 볼륨의 끝에 도달하면 다음 메시지가 나타난다.
$ pax -wf /dev/fd0 .
주의! pax 아카이브 볼륨 변경이 필요합니다.
/dev/fd0이 아카이브 볼륨 2를 위해 준비되었습니다.
다음 저장 매체를 로드하고(필요한 경우) 쓰기 가능 상태인지 확인하십시오.
계속하려면 "y"를 입력하고, pax를 종료하려면 "."를 입력하거나, 새 장치로 전환하려면 "s"를 입력하십시오.
저장 매체를 변경할 수 없는 경우 "s"를 입력하십시오.
장치가 준비되어 온라인 상태입니까? >

다중 미디어에서 아카이브를 복원할 때, 아카이브의 끝에 도달하기 전에 미디어의 끝에 도달하면 pax는 동일한 방식으로 다음 미디어를 요청한다.

 표준화, 수용 및 인기도 
2001년에 IEEE에 의해 표준화되었음에도 불구하고, 2010년 기준으로 pax는 비교적 인기가 적거나 채택률이 낮다. 이는 부분적으로 유닉스 사용자들로부터 이에 대한 필요성이 없었기 때문이며, 단지 POSIX 위원회가 더 일관된 인터페이스를 원했을 뿐이다. Pax는 또한 상당히 수다스럽고 문제가 발생하면 사용자 상호 작용을 기대한다.

pax는 2005년 7월 6일에 출시된 버전 3.0부터 리눅스 기본 규격에 의해 모든 준수 시스템에 존재해야 하지만Release notes for LSB 3.0  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 지금까지 기본적으로 이를 탑재하고 설치하는 리눅스 배포판은 거의 없다. 그러나 대부분의 배포판은 pax를 별도로 설치 가능한 패키지로 포함한다.pax, pkgs.orgspax, pkgs.orgheirloom-pax, pkgs.org

pax는 또한 윈도우 NT에도 존재했는데, 여기서는 파일 아카이브(테이프는 지원되지 않음)로 제한되었다. 나중에 인테릭스 하위 시스템으로 이동되었다. Win32 ACL 아카이빙 또는 복원을 지원하지 않는다. pax는 윈도우 2000에도 존재했다.Virtual x86, copy.sh

Installer (macOS)에서 처리하는 패키지는 종종 Archive.pax.gz 파일에 내용의 대부분을 담고 있으며, 이는 시스템의 pax(heirloom) 유틸리티를 사용하여 읽을 수 있다.

 같이 보기 
 유닉스 명령어 목록
 아카이브 포맷 목록
 압축 소프트웨어의 비교

 각주 

 추가 자료 

 외부 링크 

 Archiving with Pax  Article in FreeBSD basics on ONLamp.com , by Dru Lavigne  (2002-08-22)



 pax.1p  – Linux Manual – POSIX Programmer's Manual, not actual Linux


 Source code

분류:1995년 소프트웨어
분류:유닉스 SUS2008 유틸리티
분류:유닉스 보관 및 압축 관련 유틸리티