Pax (Befehl)

Pax
Originalautor (en) Mark H. Colburn (gesponsert von Die Usenix Association)
Entwickler (en) Verschiedene Open Source und kommerziell Entwickler
Erstveröffentlichung 1989; Vor 33 Jahren
Geschrieben in Colburn Pax, Müller Pax, Erbstückprojekt Pax: C
Betriebssystem Unix, Unix-artig, Ibm i, Fenster
Plattform Plattformübergreifend
Typ Befehl
Lizenz Colburn Pax: Vorherige BSD -Lizenz
Müller Pax: BSD-4-Klausel
Erbstück -Projekt Pax: Zlib
Fenster: Proprietäre Software

Pax ist ein Archivierungsnutzung verfügbar für verschiedene Betriebssysteme und seit 1995 definiert.[1] Anstatt die inkompatiblen Optionen zu sortieren, die sich zwischeneinander gestrichen haben Teer und CPIOzusammen mit ihren Implementierungen in verschiedenen Versionen von Unix, das IEEE Entworfene neue Archiv -Utility Pax, die verschiedene Archivformate mit nützlichen Optionen beider Erzivere unterstützen könnte. Das Pax Befehl ist auf Unix und verfügbar Unix-artig Betriebssysteme und weiter Ibm i,[2] Microsoft Windows NT,[3] und Windows 2000.

Im Jahr 2001 definierte IEEE eine neue Pax Format, das im Grunde genommen ist Teer mit zusätzlichen erweiterten Attributen.[4][5] Das Format wird nicht durch PAX -Befehle in den meisten Linux -Verteilungen und in FreeBSD unterstützt, aber es wird von unterstützt Teer Befehle von GNU und FreeBSD; Das Format wird durch PAX-Befehle in AIX, Solaris und HP-UX weiter unterstützt.

Der Name "Pax" ist ein Akronym für Tragbarer Archivaustausch. Der Befehlsaufruf und die Struktur sind etwas eine Vereinigung von beidem Teer und CPIO.

Geschichte

Die erste öffentliche Umsetzung von PAX wurde 1989 von Mark H. Colburn geschrieben. Colburn verzeichnete sie an Comp.Sources.unix wie Usenix/IEEE -POSIX -Ersatz für Tar und CPIO. Handbuchseiten für PAX auf HP-UX, Irrix, und SCO UNIX Attribut Pax Colburn.[6]

Bereits bei POSIX.2 Draft 10 ab Juli 1990 Covers Pax Befehl.[7] Darüber hinaus, POSIX.2 und IEEE 1003.1B -Entwürfe im Jahr 1991 Cover Pax Befehl mit CPIO- und Ustar -Archivformaten.

Eine weitere Version des PAX -Programms wurde von Keith Muller von 1992–1993 erstellt.[8] Die Version erschien zuerst in 4.4bs (1995).[9] Der Befehl pax erschien in X/offen Ausgabe 4 (Einzel -Unix -Spezifikation Version 1) 1995,[1] Mit CPIO- und Ustar -Archivformaten, die auch die einzigen zwei Formate in der Single Unix -Spezifikation von 1997 waren.

In 1997, Sun Microsystems schlug eine Methode zum Hinzufügen von Erweiterungen zum Ustar -Format vor. Diese Methode wurde für den posix.1-2001 Standard als neu angenommen Pax Datei Format. Die POSIX -Spezifikation für die Pax Das Dienstprogramm wurde aktualisiert, um dieses Format aufzunehmen.[1]

Merkmale

Modi

PAX hat vier allgemeine Modi, die durch eine Kombination der -r ("lesen und -W ("schreiben") Optionen.

Diese Tabelle fasst das modale Verhalten zusammen:

Möglichkeit Modus Beschreibung
(keiner) "aufführen" Zeigt Inhalt des Archivs an, ändert oder extrahiert nichts.
-r "lesen" liest und extrahiert Inhalt eines Archivs
-W "schreiben" Erstellt Archive oder findet Dateien an ein Archiv an
-rw "Kopieren" liest und kopiert Dateien und Verzeichnisbaum in ein bestimmtes Verzeichnis

Dieses Modell ähnelt CPIO, das einen ähnlichen Satz von Grundvorgängen aufweist.

Beispiele

Listen Sie die Inhalt eines Archivs auf:

$ pax <archive.tar

Extrahieren Sie den Inhalt eines Archivs in das aktuelle Verzeichnis:

$ pax -r <archive.tar

Erstellen Sie ein Archiv des aktuellen Verzeichnisses:

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

Kopieren Sie den aktuellen Verzeichnisbaum an einen anderen Ort:

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

(Das Zielverzeichnis muss existieren vorher!)

Befehlsaufruf

Standardmäßig verwendet PAX die Standardeingang/-ausgabe für Archiv- und Listungsvorgänge. Dies kann mit der Option "Tar-Stil" geändert werden -f Das gibt die Archivdatei an. PAX unterscheidet sich von CPIO, indem sie den Inhalt eines Verzeichnisses rekursiv berücksichtigt. Um dieses Verhalten zu deaktivieren, hat POSIX PAX eine Option -d es zu deaktivieren.

Das Pax Befehl ist ein Mischmash von CPIO und Teer Merkmale. Wie Teer, Pax Prozesse Verzeichniseinträge rekursiv, eine Funktion, die mit deaktiviert werden kann -d Für Verhalten im CPIO-Stil. Die Handhabung von Dateieingaben/Ausgängen ist auch ein Mix: Wenn in der Befehlszeile eine Liste von Dateinamen angegeben ist, werden sie als angenommen Muschelkugel für die Dateieingabe oder -listung (Teer-ähnlich); Andernfalls Pax nimmt die CPIO-Stilverhalten der Verwendung der Standardeingabe für eine Dateiliste. Endlich, Pax Unterstützt das Lesen/Schreiben in eine benannte Archivdatei mit Tar's -f FILE Möglichkeit.

Wenn man beispielsweise eine Archivierung im CPIO-Stil des aktuellen Verzeichnisses wünscht, Pax kann mit verwendet werden mit finden Genau wie einer mit CPIO:

$ finden . -Tepth -print | pax -wd> archive.tar

(Dieses Konstrukt ist ohne Filter sinnlos finden, wie es mit dem obigen Beispiel identisch wird.)

Der Befehl zum Extrahieren des Inhalts für ein Archiv ist der gleiche wie CPIO:

$ pax -r <archive.tar

Es ist möglich, diese Befehle in a aufzurufen Teer-ähnliche Syntax auch:

$ pax -wf archive.tar. # schreiben (Archiv) $ pax -rf archive.tar # lesen (extrahieren) $ pax -f archive.tar # aufführen $ pax -rw. Archive_dir # Kopieren 

Kompression

Die meisten Implementierungen von PAX verwenden die -Z (gzip) und -j (BZIP2) Schalter zur Komprimierung; Diese Funktion wird jedoch nicht von POSIX angegeben. Es ist wichtig zu beachten, dass PAX nicht an komprimierte Archive angehängt ist.
Beispiel zum Extrahieren eines GZIP -Archivs:

$ pax -rzf archive.tar.gz

Wie bei TAR und CPIO kann die PAX -Ausgabe an ein anderes Kompressor/Dekompressorprogramm geleitet werden. Als Beispiel xz wird hier verwendet:

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

und Auflistung eines XZ-komprimierten Archivs als Eingabe:

$ xzcat archive.tar.xz | Pax

Formatunterstützung

POSIX.1-2001 erfordert das Pax Der Befehl unterstützt das Archivformate CPIO, Ustar und Pax mindestens.

Die Versionen von Pax Befehl, der aus der 4.4bsd -Implementierung stammt -x Möglichkeit:

  • CPIO - Das im IEEE STD 1003.2 ("POSIX.2") Standard angegebene erweiterte CPIO -Interchange -Format.
  • BCPIO - Das alte binäre CPIO -Format.
  • SV4CPIO - Das System V Release 4 CPIO.
  • SV4CRC - Das System V Release 4 CPIO mit Datei -CRC -Prüfsummen.
  • Teer - Das alte BSD -Teerformat wie in BSD4.3 gefunden.
  • Ustar (Ursprünglich) - Das im IEEE STD 1003.2 ("possix.2") Standard angegebene Teer -Austauschformat.

Der POSIX.1-2001 Pax Das Format wird von dieser BSD -Version von nicht unterstützt Pax Befehl. Das Format wird nicht bei den meisten Linux -Verteilungen unterstützt (deren Pax Befehl ist von der Mirbs Zweig von Mircpio-paxmirabilis)[10][11][12] und weiter Freebsd.[9] Das Format wird von unterstützt von Pax Befehl in aix,[13] Solaris[14] und HP-UX. Es wird weiter vom Python -Tarfile -Modul unterstützt,[15] durch BSD-lizenziert libarchive,[16][17] von 7-Zip[18] und weiter von Gnu tar[19] und Freebsd Teer.[20] Das Erbstückprojekt Pax Command, das 2003 von Gunnar Ritter entwickelt wurde, unterstützt die Pax Format sowie viele zusätzliche Formate.[21]

Mehrere Bände

PAX unterstützt die Archivierung auf mehreren Bänden. Wenn das Ende eines Bandes erreicht ist, wird die folgende Nachricht angezeigt:

$ pax -wf /dev /fd0.AUFMERKSAMKEIT! PAX -Archivvolumenänderung erforderlich. /dev/fd0 bereit für das Archivvolumen: 2 Laden Sie die nächsten Speichermedien (falls erforderlich) und stellen Sie sicher, dass das Schreiben aktiviert ist. Geben Sie "y" ein, um fortzufahren, ". So beenden Sie PAX oder "S", um auf ein neues Gerät zu wechseln. Wenn Sie Speichermedien nicht ändern können, geben Sie "s" ein Ist das Gerät bereit und online? > 

Bei der Wiederherstellung eines Archivs aus mehreren Medien fragt Pax auf die gleiche Weise nach den nächsten Medien, wenn das Ende der Medien vor dem Ende des Archivs erreicht wird.

Standardisierung, Empfang und Popularität

Obwohl Pax im Jahr 2001 von IEEE standardisiert wurde, hat er ab 2010 relativ wenig Popularität oder Akzeptanz. Dies liegt zum Teil daran, dass es von den UNIX -Benutzern keine Notwendigkeit gab. Es war nur das POSIX -Komitee, das eine konsistentere Schnittstelle haben möchte. Pax ist auch ziemlich gesprächig und erwartet Benutzerinteraktionen, wenn etwas schief geht.

Pax muss in allen konformanten Systemen vorhanden sein Linux Standard Base Seit Version 3.0 (veröffentlicht am 6. Juli 2005),[22] Aber bisher nur wenige Linux -Verteilungen Versenden und installieren Sie es standardmäßig. Die meisten Verteilungen enthalten jedoch PAX als separat installierbares Paket.[23][24][25]

Pax war auch in anwesend Windows NT, wo es auf Dateiarchive beschränkt ist (nicht unterstützte Bänder).[3] Es wurde später in die bewegt Interix Teilsystem. Es unterstützt keine Archivierung oder Wiederherstellung Win32 ACLS.[26] Pax war in Windows 2000 weiter vorhanden.[27]

Pakete von der behandelt Installationsprogramm (macOS) Tragen Sie oft den Großteil ihres Inhalts in einer Archiv.pax.gz -Datei, die mit dem PAX -Dienstprogramm des Systems (Erbstücks) des Systems gelesen werden kann.[28]

Siehe auch

Verweise

  1. ^ a b c Die offenen Gruppenbasisspezifikationen Ausgabe 6 - POSIX.1-2001 (IEEE STD 1003.1) Copyright © 2001-2004 The IEEE und Die offene Gruppe
  2. ^ IBM. "IBM System I Version 7.2 Programmierung Qshell" (PDF). Abgerufen 2020-09-05.
  3. ^ a b Eric Pearce (1997). Windows NT in der Kurzschale: Ein Desktop -Schnellreferenz für Systemadministratoren. O'Reilly Media, Inc. p.271. ISBN 978-1-56592-251-8.
  4. ^ "GNU TAR: 8.1 Verwenden Sie weniger Platz durch Komprimierung". www.gnu.org. Archiviert von das Original am 6. März 2016. Abgerufen 22. April 2018.
  5. ^ "GNU TAR: 4.3.2 Erweiterte Dateiattribute". www.gnu.org. Archiviert von das Original am 28. Dezember 2019. Abgerufen 27. Januar 2021.
  6. ^ Teer versus Portabilität - Pax und Ustar, Invisible-Island.net
  7. ^ IEEE P1003.2 Entwurf 11.2 - September 1991 (PDF) - Shell and Utilities, Princeton.edu - Entwurf 11 zeigt Änderungen an Pax Es muss also in Entwurf 10 gewesen sein
  8. ^ Pax, svnweb.freebsd.org
  9. ^ a b Pax (1)- -Freebsd Allgemeine Befehle Handbuch
  10. ^ "Mircpio - Paxmirabilis: Teer und sogar Ar!". Mirbs. Abgerufen 24. Januar 2020.
  11. ^ "Mircpio in Launchpad". Startpad.net. Abgerufen 22. April 2018.
  12. ^ "Bug #456405" Pax Mangel an Unterstützung für das "pax" -Format fehlschlägt lsb ": bugs: mircpio". bugs.launchpad.net. Abgerufen 22. April 2018.
  13. ^ Pax für AIX 7.3, ibm.com
  14. ^ Pax Für Solaris 11.1, docs.oracle.com
  15. ^ Tarfile, python.org
  16. ^ libarchive, libarchive.org
  17. ^ libarchive (3), Freebsd.org
  18. ^ Geschichte der 7-Zip, 7-izip.org
  19. ^ Teer Handbuch, gnu.org
  20. ^ Teer, Freebsd.org
  21. ^ "pax.1". Erbstück.SourceForge.net. Abgerufen 22. April 2018.
  22. ^ Versionshinweise für LSB 3.0 Archiviert 2011-07-17 bei der Wayback -Maschine Beachten Sie, dass Pax hinzugefügt wurde: LSB 3.0. Befehle und Dienstprogramme Benötigt Pax, aber LSB 2.1.0. Befehle und Dienstprogramme braucht es nicht
  23. ^ Pax, pkgs.org
  24. ^ Spaxe, pkgs.org
  25. ^ Erbstück-Pax, pkgs.org
  26. ^ "Systemverwaltung von Backups, Teer und Pax in Interix". Archiviert von das Original Am 2010-08-23.
  27. ^ Virtueller x86, copy.sh
  28. ^ "Extrahieren von Dateien aus einem pax.gz -Paket". Cocoabuilder.com. Archiviert von das Original am 14. Februar 2015. Abgerufen 15. August 2013.

Weitere Lektüre

  • Frisch, Æleen (2001). Windows 2000 -Befehle Taschenreferenz. O'Reilly. ISBN 978-0-596-00148-3.

Externe Links