Antworten:
Verwenden Sie die -J
Komprimierungsoption für xz
. Und denk man tar
dran :)
tar cfJ <archive.tar.xz> <files>
Bearbeiten 10.08.2015:
Wenn Sie die Argumente tar
mit Bindestrichen übergeben (z. tar -cf
B. im Gegensatz zu tar cf
), muss die -f
Option 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>
f
letzte auch ohne Bindestrich zu setzen.
tar
unter macOS scheint zu unterstützen, -J
aber die Funktion wird nicht in der Manpage angegeben. Musste es hier nachschlagen. Obwohl sie XZ im Abschnitt über --options
...
Switch -J
funktioniert 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 - directory
liest 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 -z
das Archiv von der Standardeingabe ( -
) komprimiert ( ) wird.
Sie leiten die Ausgabe von xz
in die tar.xz
Datei um.
-f
bedeutet 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 -T0
oder -0 -T0
um Optionen, die normalerweise in einer vergleichbaren oder schnelleren Zeit immer noch eine kleinere Datei als gzip liefern, während die Standardeinstellung -6
erheblich 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 f
Option zu setzen, um mit Dateien umzugehen, und dann -
anzugeben, dass die Datei die Standardeingabe ist. Es ist auch nicht erforderlich, die -z
Option für anzugeben xz
, da dies die Standardeinstellung ist.
Es funktioniert mit gzip
und bzip2
auch:
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 tar
Archiv 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 xz
oder unter tar
MacOS verwenden möchten, möchten Sie wahrscheinlich die tar -cJf
Syntax vermeiden .
Nach man xz
der 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. f
liest aus einem Verzeichnis (am besten diese Sekunde setzen, weil -cf
! = -fc
)-
Ausgänge zum Standardausgang|
Pipes werden an den nächsten Befehl ausgegebenxz -4e
Anrufe xz
mit der -4e
Komprimierungsoption. (gleich -4
--extreme
)> baz.tar.xz
Leitet die geteerte und komprimierte Datei an baz.tar.xz
Wo -4e
ist, verwenden Sie Ihre eigenen Komprimierungsoptionen. Ich verwende oft -k
auf --keep
die Originaldatei und -9
für wirklich starke Kompression. -z
manuell xz
auf 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, -d
oder --decompress
statt zu verwenden unxz
. Wenn Sie jedoch müssen, ist die Verwendung dieser Befehle über die Befehlszeile in Ordnung.
tar -cJf
Syntax 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.J
Option, 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.
v
dem Befehl switch (tar -cJvf
) hinzufügen , um ausführlich zu sein, werden die Dateien angezeigt, die dem Archiv hinzugefügt werden.