pax (명령어)
| 원저자 | Mark H. Colburn (The USENIX Association 후원) |
|---|---|
| 개발자 | 다양한 오픈 소스 및 상용 소프트웨어 개발자 |
| 발표일 | 1989년 |
| 저장소 |
|
| 프로그래밍 언어 | 콜번 pax, 뮐러 pax, Heirloom Project pax: C |
| 엔진 | |
| 운영 체제 | 유닉스, 유닉스 계열, IBM i, 윈도우 |
| 플랫폼 | 크로스 플랫폼 |
| 종류 | 명령어 |
| 라이선스 | 콜번 pax: Prior BSD License 뮐러 pax: BSD-4-Clause Heirloom Project pax: zlib 윈도우: 사유 소프트웨어 |
pax는 다양한 운영체제에서 사용할 수 있으며 1995년부터 정의된 아카이빙 유틸리티이다.[1] tar와 cpio 사이에 발생한 호환되지 않는 옵션들과 다양한 유닉스 버전에서 이들의 구현을 정리하기보다는, IEEE는 두 아카이버의 유용한 옵션을 모두 지원할 수 있는 새로운 아카이브 유틸리티인 pax를 설계했다. pax 명령어는 유닉스 및 유닉스 계열 운영체제와 IBM i[2], 그리고 마이크로소프트 윈도우 NT[3]에서 윈도우 2000까지 사용할 수 있다.
2001년에 IEEE는 기본적으로 확장 속성이 추가된 tar와 유사한 새로운 pax 형식을 정의했다.[4][5] 이 형식은 대부분의 리눅스 배포판 및 FreeBSD의 pax 명령어에서는 지원되지 않지만, GNU 및 FreeBSD의 tar 명령어에서는 지원된다. 이 형식은 AIX, Solaris 및 HP-UX의 pax 명령어에서도 지원된다.
"pax"라는 이름은 portable archive exchange의 약어이지만, "평화"를 의미하는 라틴어 단어를 암시하기도 한다. 명령어 호출 및 구조는 tar와 cpio의 평화로운 통합을 나타낸다.
역사
pax의 첫 공개 구현은 마크 H. 콜번(Mark H. Colburn)이 1989년에 작성했다. 콜번은 이를 comp.sources.unix에 유즈닉스/IEEE POSIX의 TAR 및 CPIO 대체 프로그램으로 게시했다. HP-UX, IRIX, SCO UNIX의 pax 매뉴얼 페이지는 pax를 콜번의 작품으로 언급한다.[6]
1990년 7월의 POSIX.2 드래프트 10부터 pax 명령어를 다룬다.[7] 또한 1991년 POSIX.2 및 IEEE 1003.1b 드래프트는 cpio 및 ustar 아카이브 형식을 특징으로 하는 pax 명령어를 다룬다.
또 다른 pax 프로그램 버전은 키스 뮐러(Keith Muller)가 1992~1993년에 만들었다.[8] 이 버전은 4.4BSD (1995년)에 처음 등장했다.[9] pax 명령어는 1995년 X/Open issue 4 (Single Unix Specification 버전 1)에 cpio 및 ustar 아카이브 형식을 특징으로 등장했으며[1] 이 두 형식은 1997년 Single Unix Specification에서도 유일하게 다루어진 형식이었다.
1997년, 썬 마이크로시스템즈는 ustar 형식에 확장을 추가하는 방법을 제안했다. 이 방법은 새로운 pax 파일 형식으로 POSIX.1-2001 표준에 채택되었다. pax 유틸리티에 대한 POSIX 사양은 이 형식을 포함하도록 업데이트되었다.[1]
기능
모드
pax는 -r ("읽기") 및 -w ("쓰기") 옵션의 조합으로 호출되는 네 가지 일반 모드를 가지고 있다.
이 표는 모달 동작을 요약한다:
| 옵션 | 모드 | 설명 |
|---|---|---|
| (없음) | "목록" | 아카이브의 내용을 보여주지만, 아무것도 수정하거나 추출하지 않는다. |
| -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 스타일" 옵션 -f로 변경할 수 있다. Pax는 디렉터리 내용을 재귀적으로 고려한다는 점에서 cpio와 다르다. 이 동작을 비활성화하려면 POSIX pax에는 이를 비활성화하는 옵션 -d가 있다.
pax 명령어는 cpio와 tar 기능의 혼합이다. tar와 마찬가지로 pax는 디렉터리 항목을 재귀적으로 처리하는데, 이 기능은 cpio 스타일 동작을 위해 -d로 비활성화할 수 있다. 파일 입출력 처리도 혼합되어 있다. 명령줄에 파일 이름 목록이 지정되면 파일 입력 또는 목록 작성(tar와 유사)을 위한 셸 글로브로 간주된다. 그렇지 않으면 pax는 파일 목록에 표준 입력을 사용하는 cpio 스타일 동작을 취한다. 마지막으로 pax는 tar의 -f FILE 옵션을 사용하여 명명된 아카이브 파일에 읽기/쓰기를 지원한다.
예를 들어, 현재 디렉터리를 cpio 스타일로 아카이빙하려면, cpio를 사용하는 것처럼 find와 함께 pax를 사용할 수 있다.
$ find . -depth -print | pax -wd > archive.tar
(find에 필터가 없으면 위 예시와 동일해지므로 이 구성은 의미가 없다.)
아카이브에서 내용을 추출하는 명령어는 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
형식 지원
POSIX.1-2001은 pax 명령어가 최소한 cpio, ustar 및 pax 아카이브 형식을 지원해야 한다고 요구한다.
4.4BSD 구현에서 파생된 pax 명령어 버전은 일반적으로 -x 옵션을 통해 선택 가능한 해당 버전에서 지원하는 형식을 상속한다.
- 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 브랜치에서 파생됨)[10][11][12] 및 FreeBSD에서는 지원되지 않는다.[9] 이 형식은 AIX[13], Solaris[14] 및 HP-UX의 pax 명령어에서 지원된다. 또한 Python tarfile 모듈[15], BSD 라이선스가 적용된 libarchive[16][17], 7-ZIP[18] 및 GNU tar[19]와 FreeBSD tar[20]에서도 지원된다. 2003년 군나르 리터(Gunnar Ritter)가 개발한 Heirloom Project pax 명령어는 pax 형식뿐만 아니라 많은 추가 형식도 지원한다.[21]
다중 볼륨
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부터 리눅스 기본 규격에 의해 모든 준수 시스템에 존재해야 하지만[22] 지금까지 기본적으로 이를 탑재하고 설치하는 리눅스 배포판은 거의 없다. 그러나 대부분의 배포판은 pax를 별도로 설치 가능한 패키지로 포함한다.[23][24][25]
pax는 또한 윈도우 NT에도 존재했는데, 여기서는 파일 아카이브(테이프는 지원되지 않음)로 제한되었다.[3] 나중에 인테릭스 하위 시스템으로 이동되었다. Win32 ACL 아카이빙 또는 복원을 지원하지 않는다.[26] pax는 윈도우 2000에도 존재했다.[27]
Installer (macOS)에서 처리하는 패키지는 종종 Archive.pax.gz 파일에 내용의 대부분을 담고 있으며, 이는 시스템의 pax(heirloom) 유틸리티를 사용하여 읽을 수 있다.[28]
같이 보기
각주
- ↑ 가 나 다 The Open Group Base Specifications Issue 6 - POSIX.1-2001 (IEEE Std 1003.1) Copyright © 2001-2004 The IEEE and The Open Group
- ↑ IBM. “IBM System i Version 7.2 Programming Qshell” (PDF) (영어). 《IBM》. 2020년 9월 5일에 확인함.
- ↑ 가 나 에릭 피어스 (1997). 《Windows NT in a nutshell: a desktop quick reference for system administrators》. 오라일리 미디어. 271쪽. ISBN 978-1-56592-251-8.
- ↑ “GNU tar: 8.1 Using Less Space through Compression”. 《www.gnu.org》. 2016년 3월 6일에 원본 문서에서 보존된 문서. 2018년 4월 22일에 확인함.
- ↑ “GNU tar: 4.3.2 Extended File Attributes”. 《www.gnu.org》. 2019년 12월 28일에 원본 문서에서 보존된 문서. 2021년 1월 27일에 확인함.
- ↑ TAR versus Portability – PAX and USTAR, invisible-island.net
- ↑ 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
- ↑ pax, svnweb.freebsd.org
- ↑ 가 나 – FreeBSD 일반 명령어 매뉴얼 페이지
- ↑ “MirCPIO — paxmirabilis: tar and even ar!”. 《MirBSD》. 2020년 1월 24일에 확인함.
- ↑ “MirCPIO in Launchpad”. 《launchpad.net》. 2018년 4월 22일에 확인함.
- ↑ “Bug #456405 "pax lack of support for "pax" format fails LSB" : Bugs : MirCPIO”. 《bugs.launchpad.net》. 2018년 4월 22일에 확인함.
- ↑ pax for AIX 7.3, ibm.com
- ↑ pax for Solaris 11.1, docs.oracle.com
- ↑ tarfile, python.org
- ↑ libarchive, libarchive.org
- ↑ libarchive(3), freebsd.org
- ↑ HISTORY of the 7-Zip, 7-zip.org
- ↑ tar manual, gnu.org
- ↑ tar, freebsd.org
- ↑ “pax.1”. 《heirloom.sourceforge.net》. 2018년 4월 22일에 확인함.
- ↑ Release notes for LSB 3.0 보관됨 2011-07-17 - 웨이백 머신 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, pkgs.org
- ↑ spax, pkgs.org
- ↑ heirloom-pax, pkgs.org
- ↑ “System Administration of Backups, Tar, and Pax in Interix”. 2010년 8월 23일에 원본 문서에서 보존된 문서.
- ↑ Virtual x86, copy.sh
- ↑ “Extracting files from a pax.gz package”. cocoabuilder.com. 2015년 2월 14일에 원본 문서에서 보존된 문서. 2013년 8월 15일에 확인함.
추가 자료
- 프리쉬, 앨런 (2001). 《Windows 2000 Commands Pocket Reference》. 오라일리. ISBN 978-0-596-00148-3.
외부 링크
- Archiving with Pax 보관됨 2009-10-04 - 웨이백 머신 Article in FreeBSD basics on ONLamp.com 보관됨 2009-09-17 - 웨이백 머신, by Dru Lavigne 보관됨 2008-10-10 - 웨이백 머신 (2002-08-22)
- – 명령어와 유틸리티 오픈 그룹의 단일 유닉스 규격, Issue 7 참고
- 스크립트 오류가 있는 문서
- CS1 - 영어 인용 (en)
- 웹아카이브 틀 웨이백 링크
- 잘못된 파일 링크가 포함된 문서
- 위키데이터 속성 P18을 사용하는 문서
- 위키데이터 속성 P41을 사용하는 문서
- 위키데이터 속성 P94를 사용하는 문서
- 위키데이터 속성 P117을 사용하는 문서
- 위키데이터 속성 P154를 사용하는 문서
- 위키데이터 속성 P213을 사용하는 문서
- 위키데이터 속성 P227을 사용하는 문서
- 위키데이터 속성 P242를 사용하는 문서
- 위키데이터 속성 P244를 사용하는 문서
- 위키데이터 속성 P245를 사용하는 문서
- 위키데이터 속성 P268을 사용하는 문서
- 위키데이터 속성 P269를 사용하는 문서
- 위키데이터 속성 P271을 사용하는 문서
- 위키데이터 속성 P347을 사용하는 문서
- 위키데이터 속성 P349를 사용하는 문서
- 위키데이터 속성 P350을 사용하는 문서
- 위키데이터 속성 P373을 사용하는 문서
- 위키데이터 속성 P380을 사용하는 문서
- 위키데이터 속성 P396을 사용하는 문서
- 위키데이터 속성 P409를 사용하는 문서
- 위키데이터 속성 P428을 사용하는 문서
- 위키데이터 속성 P434를 사용하는 문서
- 위키데이터 속성 P435를 사용하는 문서
- 위키데이터 속성 P436을 사용하는 문서
- 위키데이터 속성 P454를 사용하는 문서
- 위키데이터 속성 P496을 사용하는 문서
- 위키데이터 속성 P549를 사용하는 문서
- 위키데이터 속성 P650을 사용하는 문서
- 위키데이터 속성 P651을 사용하는 문서
- 위키데이터 속성 P691을 사용하는 문서
- 위키데이터 속성 P716을 사용하는 문서
- 위키데이터 속성 P781을 사용하는 문서
- 위키데이터 속성 P791을 사용하는 문서
- 위키데이터 속성 P864를 사용하는 문서
- 위키데이터 속성 P865를 사용하는 문서
- 위키데이터 속성 P886을 사용하는 문서
- 위키데이터 속성 P902를 사용하는 문서
- 위키데이터 속성 P906을 사용하는 문서
- 위키데이터 속성 P947을 사용하는 문서
- 위키데이터 속성 P950을 사용하는 문서
- 위키데이터 속성 P966을 사용하는 문서
- 위키데이터 속성 P982를 사용하는 문서
- 위키데이터 속성 P1003을 사용하는 문서
- 위키데이터 속성 P1004를 사용하는 문서
- 위키데이터 속성 P1005를 사용하는 문서
- 위키데이터 속성 P1006을 사용하는 문서
- 위키데이터 속성 P1015를 사용하는 문서
- 위키데이터 속성 P1045를 사용하는 문서
- 위키데이터 속성 P1048을 사용하는 문서
- 위키데이터 속성 P1053을 사용하는 문서
- 위키데이터 속성 P1146을 사용하는 문서
- 위키데이터 속성 P1153을 사용하는 문서
- 위키데이터 속성 P1157을 사용하는 문서
- 위키데이터 속성 P1186을 사용하는 문서
- 위키데이터 속성 P1225를 사용하는 문서
- 위키데이터 속성 P1248을 사용하는 문서
- 위키데이터 속성 P1273을 사용하는 문서
- 위키데이터 속성 P1315를 사용하는 문서
- 위키데이터 속성 P1323을 사용하는 문서
- 위키데이터 속성 P1330을 사용하는 문서
- 위키데이터 속성 P1362를 사용하는 문서
- 위키데이터 속성 P1368을 사용하는 문서
- 위키데이터 속성 P1375를 사용하는 문서
- 위키데이터 속성 P1407을 사용하는 문서
- 위키데이터 속성 P1556을 사용하는 문서
- 위키데이터 속성 P1584를 사용하는 문서
- 위키데이터 속성 P1695를 사용하는 문서
- 위키데이터 속성 P1707을 사용하는 문서
- 위키데이터 속성 P1736을 사용하는 문서
- 위키데이터 속성 P1886을 사용하는 문서
- 위키데이터 속성 P1890을 사용하는 문서
- 위키데이터 속성 P1907을 사용하는 문서
- 위키데이터 속성 P1908을 사용하는 문서
- 위키데이터 속성 P1960을 사용하는 문서
- 위키데이터 속성 P1986을 사용하는 문서
- 위키데이터 속성 P2041을 사용하는 문서
- 위키데이터 속성 P2163을 사용하는 문서
- 위키데이터 속성 P2174를 사용하는 문서
- 위키데이터 속성 P2268을 사용하는 문서
- 위키데이터 속성 P2349를 사용하는 문서
- 위키데이터 속성 P2418을 사용하는 문서
- 위키데이터 속성 P2456을 사용하는 문서
- 위키데이터 속성 P2484를 사용하는 문서
- 위키데이터 속성 P2558을 사용하는 문서
- 위키데이터 속성 P2750을 사용하는 문서
- 위키데이터 속성 P2980을 사용하는 문서
- 위키데이터 속성 P3223을 사용하는 문서
- 위키데이터 속성 P3233을 사용하는 문서
- 위키데이터 속성 P3348을 사용하는 문서
- 위키데이터 속성 P3372를 사용하는 문서
- 위키데이터 속성 P3407을 사용하는 문서
- 위키데이터 속성 P3430을 사용하는 문서
- 위키데이터 속성 P3544를 사용하는 문서
- 위키데이터 속성 P3562를 사용하는 문서
- 위키데이터 속성 P3563을 사용하는 문서
- 위키데이터 속성 P3601을 사용하는 문서
- 위키데이터 속성 P3723을 사용하는 문서
- 위키데이터 속성 P3788을 사용하는 문서
- 위키데이터 속성 P3829를 사용하는 문서
- 위키데이터 속성 P3863을 사용하는 문서
- 위키데이터 속성 P3920을 사용하는 문서
- 위키데이터 속성 P3993을 사용하는 문서
- 위키데이터 속성 P4038을 사용하는 문서
- 위키데이터 속성 P4055를 사용하는 문서
- 위키데이터 속성 P4114를 사용하는 문서
- 위키데이터 속성 P4143을 사용하는 문서
- 위키데이터 속성 P4186을 사용하는 문서
- 위키데이터 속성 P4423을 사용하는 문서
- 위키데이터 속성 P4457을 사용하는 문서
- 위키데이터 속성 P4534를 사용하는 문서
- 위키데이터 속성 P4535를 사용하는 문서
- 위키데이터 속성 P4581을 사용하는 문서
- 위키데이터 속성 P4613을 사용하는 문서
- 위키데이터 속성 P4955를 사용하는 문서
- 위키데이터 속성 P5034를 사용하는 문서
- 위키데이터 속성 P5226을 사용하는 문서
- 위키데이터 속성 P5288을 사용하는 문서
- 위키데이터 속성 P5302를 사용하는 문서
- 위키데이터 속성 P5321을 사용하는 문서
- 위키데이터 속성 P5368을 사용하는 문서
- 위키데이터 속성 P5504를 사용하는 문서
- 위키데이터 속성 P5587을 사용하는 문서
- 위키데이터 속성 P5736을 사용하는 문서
- 위키데이터 속성 P5818을 사용하는 문서
- 위키데이터 속성 P6213을 사용하는 문서
- 위키데이터 속성 P6734를 사용하는 문서
- 위키데이터 속성 P6792를 사용하는 문서
- 위키데이터 속성 P6804를 사용하는 문서
- 위키데이터 속성 P6829를 사용하는 문서
- 위키데이터 속성 P7293을 사용하는 문서
- 위키데이터 속성 P7303을 사용하는 문서
- 위키데이터 속성 P7314를 사용하는 문서
- 위키데이터 속성 P7902를 사용하는 문서
- 위키데이터 속성 P8034를 사용하는 문서
- 위키데이터 속성 P8189를 사용하는 문서
- 위키데이터 속성 P8381을 사용하는 문서
- 위키데이터 속성 P8671을 사용하는 문서
- 위키데이터 속성 P8980을 사용하는 문서
- 위키데이터 속성 P9070을 사용하는 문서
- 위키데이터 속성 P9692를 사용하는 문서
- 위키데이터 속성 P9725를 사용하는 문서
- 위키데이터 속성 P9984를 사용하는 문서
- 위키데이터 속성 P10020을 사용하는 문서
- 위키데이터 속성 P10299를 사용하는 문서
- 위키데이터 속성 P10608을 사용하는 문서
- 위키데이터 속성 P10832를 사용하는 문서
- 위키데이터 속성 P11249를 사용하는 문서
- 위키데이터 속성 P11646을 사용하는 문서
- 위키데이터 속성 P11729를 사용하는 문서
- 위키데이터 속성 P12204를 사용하는 문서
- 위키데이터 속성 P12362를 사용하는 문서
- 위키데이터 속성 P12754를 사용하는 문서
- 위키데이터 속성 P13049를 사용하는 문서
- 1995년 소프트웨어
- 유닉스 SUS2008 유틸리티
- 유닉스 보관 및 압축 관련 유틸리티