Antworten:
Verwenden Sie die -JKomprimierungsoption für xz. Und denk man tardran :)
tar cfJ <archive.tar.xz> <files>
Bearbeiten 10.08.2015:
Wenn Sie die Argumente tar mit Bindestrichen übergeben (z. tar -cfB. im Gegensatz zu tar cf), muss die -fOption als letztes verwendet werden , da sie den Dateinamen angibt (danke an @ABB für den Hinweis!). In diesem Fall sieht der Befehl folgendermaßen aus:
tar -cJf <archive.tar.xz> <files>
fletzte auch ohne Bindestrich zu setzen.
tarunter macOS scheint zu unterstützen, -Jaber die Funktion wird nicht in der Manpage angegeben. Musste es hier nachschlagen. Obwohl sie XZ im Abschnitt über --options...
Switch -Jfunktioniert nur auf neueren Systemen. Der universelle Befehl lautet:
So erstellen Sie ein .tar.xz-Archiv
tar cf - directory/ | xz -z - > directory.tar.xz
Erläuterung
tar cf - directoryliest das Verzeichnis / und beginnt, es in das TAR-Format zu bringen. Die Ausgabe dieser Operation wird auf der Standardausgabe generiert.
| leitet die Standardausgabe an die Eingabe eines anderen Programms weiter ...
... was zufällig ist xz -z -. XZ ist so konfiguriert, dass -zdas Archiv von der Standardeingabe ( -) komprimiert ( ) wird.
Sie leiten die Ausgabe von xzin die tar.xzDatei um.
-fbedeutet nicht "aus Datei", wenn an übergeben xz. Stattdessen ist es die Abkürzung für --force(siehe xz (1) für Details) und wird am besten nur verwendet, wenn dies erforderlich ist.
tar cf - directory/ | xz -z -T0 - > directory.tar.xz
-1 -T0oder -0 -T0um Optionen, die normalerweise in einer vergleichbaren oder schnelleren Zeit immer noch eine kleinere Datei als gzip liefern, während die Standardeinstellung -6erheblich langsamer ist als gzip.
Wenn Sie den Pipe-Modus mögen, ist dies die sauberste Lösung:
tar c some-dir | xz > some-dir.tar.xz
Es ist nicht erforderlich, die fOption zu setzen, um mit Dateien umzugehen, und dann -anzugeben, dass die Datei die Standardeingabe ist. Es ist auch nicht erforderlich, die -zOption für anzugeben xz, da dies die Standardeinstellung ist.
Es funktioniert mit gzipund bzip2auch:
tar c some-dir | gzip > some-dir.tar.gz
oder
tar c some-dir | bzip2 > some-dir.tar.bz2
Das Dekomprimieren ist auch ganz einfach:
xzcat tarball.tar.xz | tar x
bzcat tarball.tar.bz2 | tar x
zcat tarball.tar.gz | tar x
Wenn Sie nur ein tarArchiv haben, können Sie Folgendes verwenden cat:
cat archive.tar | tar x
Wenn Sie nur die Dateien auflisten müssen, verwenden Sie tar t.
Wenn Sie Komprimierungsoptionen für xzoder unter tarMacOS verwenden möchten, möchten Sie wahrscheinlich die tar -cJfSyntax vermeiden .
Nach man xzder Art und Weise , dies zu tun ist:
tar cf - baz | xz -4e > baz.tar.xz
Weil mir das Format von Wojciech Adam Koszek gefallen hat , aber keine Informationen:
c Erstellt ein neues Archiv für die angegebenen Dateien. fliest aus einem Verzeichnis (am besten diese Sekunde setzen, weil -cf! = -fc)- Ausgänge zum Standardausgang| Pipes werden an den nächsten Befehl ausgegebenxz -4eAnrufe xzmit der -4eKomprimierungsoption. (gleich -4 --extreme)> baz.tar.xz Leitet die geteerte und komprimierte Datei an baz.tar.xz Wo -4eist, verwenden Sie Ihre eigenen Komprimierungsoptionen. Ich verwende oft -kauf --keepdie Originaldatei und -9für wirklich starke Kompression. -zmanuell xzauf zip einstellen , standardmäßig jedoch zippen, wenn nicht anders angegeben.
Echo Rafael van Horn , zu dekomprimieren und entpacken (siehe Anmerkung unten):
xz -dc baz.tar.xz | tar x
Hinweis: Verwenden Sie im Gegensatz zu Rafaels Antwortxz -dc anstelle von catxz. Die Dokumente empfehlen dies, falls Sie dies für die Skripterstellung verwenden. Am besten haben Sie die Angewohnheit, -doder --decompressstatt zu verwenden unxz. Wenn Sie jedoch müssen, ist die Verwendung dieser Befehle über die Befehlszeile in Ordnung.
tar -cJfSyntax unter MacOS nicht verwendet wird? Nur neugierig, weil ich das gerade tat und es zu funktionieren schien.
Versuche dies: tar -cf file.tar file-to-compress ; xz -z file.tar
Hinweis:
| da hierdurch Befehle gleichzeitig ausgeführt werden. Verwendung ;oder &führt Befehle einen nach dem anderen.JOption, aber das funktioniert. Ich denke du brauchst RHEL6.
tar -c file-to-compress | xz -z > file.tar.xz.
&wird kein Befehl nach dem anderen gestartet. Stattdessen wird der erste als Hintergrundprozess gestartet.
vdem Befehl switch (tar -cJvf) hinzufügen , um ausführlich zu sein, werden die Dateien angezeigt, die dem Archiv hinzugefügt werden.