pax (kommando)
Originalförfattare | Mark H. Colburn (sponsrad av USENIX Association ) |
---|---|
Utvecklare | Olika öppen källkod och kommersiella utvecklare |
Initial release | 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
- Frisch, Æleen (2001). Windows 2000 Commands Pocket Reference . O'Reilly . ISBN 978-0-596-00148-3 .
externa länkar
- Arkivering med Pax Arkiverad 2009-10-04 på Wayback Machine Artikel i FreeBSD grunderna på ONLamp.com Arkiverad 2009-09-17 på Wayback Machine , av Dru Lavigne Arkiverad 2008-10-10 på Wayback Machine (2002-08- 22)
- The Single UNIX Specification , Version 4 från The Open Group – Shell and Utilities Reference,
- FreeBSD General Commands Manual –
- OpenBSD General Commands Manual –
- pax.1p – Linux Manual – POSIX Programmerarmanual, inte faktisk Linux
- Debians allmänna kommandohandbok –
- Referenshandbok för Solaris 10 User Commands –