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}...
Girish Sunkara
quelle
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
Romeo Ninov
quelle
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.

terdon
quelle
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.

MikeA
quelle
-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)

Nilesh Varshney
quelle
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