Wie kann ich in Sun Solaris einen komprimierten Teer erzeugen?


11

Ich bin bei Sun Solaris OS angemeldet. Ich möchte eine komprimierte TAR-Datei erstellen und extrahieren. Ich habe diesen normalen UNIX-Befehl ausprobiert:

tar -cvzf file.tar.gz directory1

Es kann unter Sun OS nicht mit folgendem Fehler ausgeführt werden

bash-3.2$ tar -cvzf file.tar.tz directory1
tar: z: unknown function modifier
Usage: tar {c|r|t|u|x}[BDeEFhilmnopPqTvw@[0-7]][bfk][X...] [blocksize] [tarfile] [size] [exclude-file...] {file | -I include-file | -C directory file}...

2
Warum ist es Ihrer Meinung nach ein normaler UNIX-Befehl?
schaiba

Ich denke, Sie müssen einige Zeit damit verbringen, die Unterschiede zwischen Unixes Linux- und GNU-Tools zu lesen.
Coteyr

4
Als sie diese zFlagge zu GNU tar hinzufügten, verloren wir unser bestes Beispiel dafür, wie man Menschen lehrt, logisch zu denken und eine Pipeline zu konstruieren ...

Antworten:


26

Um die Erstellung einer temporären Zwischendatei zu vermeiden, können Sie diesen Befehl verwenden

tar cvf - directory1|gzip -c >file.tar.gz

2
Dies hat den potenziellen Vorteil, dass ein Teil der Verarbeitung parallel erfolgen kann.
Psmears

Wird das f -benötigt oder wird Solaris tarstandardmäßig auf stdout ausgegeben?
Mark

2
@Mark: Laut Manpage wird "Wenn nicht angegeben f, tarwird das durch die TAPEUmgebungsvariable angegebene Gerät verwendet , falls festgelegt; andernfalls werden die in definierten Standardwerte verwendet /etc/default/tar." Also, nein, es sieht nicht so aus, als könnten Sie davon ausgehen, dass dies f -nicht benötigt wird.
Ilmari Karonen

10

Es sieht so aus, als ob Solaris tarnicht weiß, wie man komprimiert. Also mach es einfach manuell:

tar -cvf file.tar directory1 && gzip file.tar

Das ist -zsowieso alles, was der Wechsel von GNU tar bewirkt. Der obige Befehl wird erzeugt file.tar.gz.


Dies funktioniert (solange Sie über genügend freien Speicherplatz verfügen, um das unkomprimierte Zwischenarchiv zu speichern file.tar), ist jedoch unnötig langsam und verschwendet unnötigen Speicherplatz. Ich kann mir keine Situation vorstellen, in der dies Romeo Ninovs Antwort vorzuziehen wäre .
Ilmari Karonen

1
@IlmariKaronen kann ich auch nicht. Ich habe gerade zuerst daran gedacht.
Terdon

2

Überprüfen Sie, ob Sie SUNWgtarinstalliert haben. Dies ist die GNU-Version von tarund bietet /usr/sfw/bin/gtar, die die Verwendung der GNU-Optionen zum Tarieren ermöglicht.


-1

Bitte versuchen Sie es mit dem folgenden Befehl

tar -cvf file.tar directory1 && gzip file.tar

(um die Datei auf Solaris zu komprimieren)

gunzip file.tar.gz

(entpacken)


1
Dies fügt nicht eine ganze Menge über eine vorherige Antwort hinaus hinzu
Jeff Schaller

Außerdem wird nur die gesamte TAR-Datei (einschließlich aller Binärdateien in den Headern) auf dem Terminal abgelegt, anstatt die Archivierung der Dateien aufzuheben. Sie müssten das Terminal wahrscheinlich danach zurücksetzen.
Paul_Pedant
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.