pax (kommando)

pax
Originalförfattare Mark H. Colburn (sponsrad av USENIX Association )
Utvecklare Olika öppen källkod och kommersiella utvecklare
Initial release 1989 ; 34 år sedan ( 1989 )
Skrivet i Colburn pax, Muller pax, Heirloom Project pax: C
Operativ system Unix , Unix-like , IBM i , Windows
Plattform Cross-platform
Typ Kommando
Licens


Colburn pax: Tidigare BSD-licens Muller pax: BSD-4-Clause Heirloom Project pax: zlib Windows: Proprietär programvara

pax är ett arkiveringsverktyg tillgängligt för olika operativsystem och definierat sedan 1995. Istället för att reda ut de inkompatibla alternativen som har smugit sig upp mellan tar och cpio , tillsammans med deras implementeringar i olika versioner av Unix , designade IEEE ett nytt arkivverktyg pax som kunde stödja olika arkivformat med användbara alternativ från båda arkiverna. Kommandot pax är tillgängligt på Unix- och Unix-liknande operativsystem och på IBM i och Microsoft Windows NT fram till Windows 2000 .

2001 definierade IEEE ett nytt pax- format som i princip är tar med ytterligare utökade attribut. Formatet stöds inte av pax-kommandon i de flesta Linux-distributioner och i FreeBSD, men det stöds av tar -kommandon från GNU och FreeBSD; formatet stöds ytterligare av pax-kommandon i AIX, Solaris och HP-UX.

Namnet "pax" är en akronym för portable archive exchange . Kommandoanropet och strukturen är något en förening av både tar och cpio .

Historia

Den första offentliga implementeringen av pax skrevs av Mark H. Colburn 1989. Colburn lade upp den på comp.sources.unix som Usenix/IEEE POSIX-ersättning för TAR och CPIO . Manualsidor för pax på HP-UX , IRIX och SCO UNIX attribut pax till Colburn.

Så tidigt som POSIX.2 draft 10 från juli 1990 täcker pax -kommando. Dessutom täcker POSIX.2- och IEEE 1003.1b-utkast från 1991 pax -kommando, med cpio- och ustar-arkivformat.

En annan version av pax-programmet skapades av Keith Muller 1992–1993. Versionen dök upp först i 4.4BSD (1995). Pax-kommandot dök upp i X/Open nummer 4 ( Single Unix Specification version 1) 1995, med cpio- och ustar-arkivformaten, som också var de enda två formaten som fanns med i 1997 års Single Unix-specifikation.

1997 föreslog Sun Microsystems en metod för att lägga till tillägg till formatet ustar. Denna metod accepterades för POSIX.1-2001-standarden som det nya pax -filformatet. POSIX-specifikationen för pax -verktyget uppdaterades för att inkludera detta format.

Funktioner

Lägen

pax har fyra allmänna lägen som anropas av en kombination av alternativen -r ("läs") och -w ("skriv").

Den här tabellen sammanfattar det modala beteendet:

Alternativ Läge Beskrivning
(ingen) "lista" visar innehållet i arkivet, ändrar eller extraherar ingenting.
-r "läsa" läser och extraherar innehållet i ett arkiv
-w "skriva" skapar arkiv eller lägger till filer i ett arkiv
-rw "kopiera" läser och kopierar filer och katalogträd till en specificerad katalog

Denna modell liknar cpio, som har en liknande uppsättning grundläggande operationer.

Exempel

Lista innehållet i ett arkiv:

 $  pax < archive.tar 

Extrahera innehållet i ett arkiv till den aktuella katalogen:

 $  pax -r < archive.tar 

Skapa ett arkiv för den aktuella katalogen:

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

Kopiera nuvarande katalogträd till en annan plats:

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

(Målkatalogen måste finnas i förväg!)

Kommandoanrop

Som standard använder pax standardinmatning/utdata för arkivering och listning. Detta kan ändras med alternativet "tar-stil" -f som anger arkivfilen. Pax skiljer sig från cpio genom att rekursivt beakta innehållet i en katalog; för att inaktivera detta beteende har POSIX pax ett alternativ -d för att inaktivera det.

Pax - kommandot är en mix av cpio- och tar -funktioner. Precis som tar bearbetar pax katalogposter rekursivt, en funktion som kan inaktiveras med -d för beteende i cpio-stil . Hanteringen av filinmatning/utdata är också en blandning: när en lista med filnamn anges på kommandoraden tas de som skalglober för filinmatning eller listning (tjärliknande); annars tar pax beteendet i cpio -stil att använda standardinmatningen för en fillista. Slutligen, pax stöder läsning/skrivning till en namngiven arkivfil med tars -f FILE- alternativ.

Till exempel, om man önskar en cpio-stil arkivering av den aktuella katalogen, kan pax användas med find precis som man gör med cpio:

 $  hitta. -djuptryck   |  pax -wd > archive.tar 

(Denna konstruktion är meningslös utan några filter för find , eftersom den blir identisk med exemplet ovan.)

Kommandot för att extrahera innehållet för ett arkiv är detsamma som cpio :

 $  pax -r < archive.tar 

Det är möjligt att anropa dessa kommandon i en tar -liknande syntax också:




 $  pax -wf archive.tar .  # skriv (arkiv)  $  pax -rf archive.tar  # läs (extrahera)  $  pax -f archive.tar  # list  $  pax -rw . archive_dir   # kopia 

Kompression


De flesta implementeringar av pax använder switcharna -z ( gzip ) och -j ( bzip2 ) för komprimering; denna funktion specificeras dock inte av POSIX. Det är viktigt att notera att pax inte kan läggas till i komprimerade arkiv. Exempel för att extrahera ett gzippat arkiv:

 $  pax -rzf archive.tar.gz 

Som i tar och cpio kan pax-utgången kopplas till ett annat kompressor-/dekomprimeringsprogram. Som ett exempel används xz här:

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

och listar ett xz-komprimerat arkiv som indata:

 $  xzcat archive.tar.xz  |  pax 

Formatstöd

POSIX.1-2001 kräver att pax -kommandot minst stöder arkivformaten cpio, ustar och pax.

De versioner av pax -kommandot som härrör från 4.4BSD-implementeringen ärver vanligtvis formaten som stöds av den versionen, valbara via -x -alternativet:

  • cpio – Det utökade cpio-utbytesformatet som specificeras i standarden IEEE Std 1003.2 ("POSIX.2").
  • bcpio – Det gamla binära cpio-formatet.
  • sv4cpio – System V release 4 cpio.
  • sv4crc – System V release 4 cpio med fil crc kontrollsummor.
  • tar – Det gamla BSD-tjärformatet som finns i BSD4.3.
  • ustar (standard) – Tar-utbytesformatet som anges i standarden IEEE Std 1003.2 ("POSIX.2").

POSIX.1-2001 pax -formatet stöds inte av denna BSD-version av pax -kommandot. Formatet stöds inte på de flesta Linux-distributioner (vars pax- kommando är från MirBSD -grenen av MirCPIO-paxmirabilis ) och på FreeBSD . Formatet stöds av pax- kommando i AIX, Solaris och HP-UX. Den stöds vidare av Python-tarfilmodulen, av BSD-licensierad libarchive, av 7-ZIP och vidare av GNU tar och FreeBSD tar. Heirloom Project pax-kommandot, utvecklat av Gunnar Ritter 2003, stöder pax -formatet såväl som många extra format.

Flera volymer

pax stöder arkivering på flera volymer. När slutet av en volym nås visas följande meddelande:






 $  pax -wf /dev/fd0 .  UPPMÄRKSAMHET! volymändring av pax-arkiv krävs.   /dev/fd0 redo för arkivvolym: 2  Ladda NÄSTA LAGRINGSMEDIA (om det behövs) och se till att det är SKRIV AKTIVAT.  Skriv "y" för att fortsätta, "." för att avsluta pax, eller "s" för att byta till ny enhet.   Om du inte kan byta lagringsmedia, skriv "s"  Är enheten redo och online? >  

När du återställer ett arkiv från flera medier, frågar pax efter nästa media på samma sätt, när slutet av media nås före slutet av arkivet.

Standardisering, mottagning och popularitet

Trots att den standardiserades 2001 av IEEE, från och med 2010, åtnjuter pax relativt liten popularitet eller adoption. [ citat behövs ] Detta beror delvis på att det inte fanns något behov av det från Unix-användarna; det var bara POSIX-kommittén som vill ha ett mer konsekvent gränssnitt. Pax är också ganska pratsam och förväntar sig användarinteraktioner när saker går fel. [ citat behövs ]

pax måste finnas i alla överensstämmande system av Linux Standard Base sedan version 3.0 (släpptes den 6 juli 2005), men än så länge skickas och installeras få Linux-distributioner som standard. De flesta distributioner inkluderar dock pax som ett separat installerbart paket.

pax har också funnits i Windows NT , där det är begränsat till filarkiv (band stöds inte). Det flyttades senare till Interix -delsystemet. Det stöder inte arkivering eller återställning av Win32 ACL :er . pax fanns vidare i Windows 2000.

Paket som hanteras av installationsprogrammet (macOS) har ofta huvuddelen av sitt innehåll i en Archive.pax.gz-fil som kan läsas med hjälp av systemets pax-verktyg (heirloom).

Se även

Vidare läsning

externa länkar