Réponses:
Utilisez l' -J
option de compression pour xz
. Et n'oubliez pas de man tar
:)
tar cfJ <archive.tar.xz> <files>
Modifier le 10/08/2015:
Si vous passez les arguments tar
avec des tirets (ex: tar -cf
par opposition à tar cf
), alors l' -f
option doit venir en dernier , car elle spécifie le nom du fichier (merci à @ABB pour l'avoir signalé!). Dans ce cas, la commande ressemble à:
tar -cJf <archive.tar.xz> <files>
f
dernier, même sans le tiret.
tar
sur macOS semble prendre en charge -J
mais la fonctionnalité n'est pas donnée dans la page de manuel. J'ai dû le chercher ici. Bien qu'ils mentionnent XZ dans la section sur --options
...
Switch -J
ne fonctionne que sur les systèmes plus récents. La commande universelle est:
Pour créer une archive .tar.xz
tar cf - directory/ | xz -z - > directory.tar.xz
Explication
tar cf - directory
lit le répertoire / et commence à le mettre au format TAR. La sortie de cette opération est générée sur la sortie standard.
|
conduit la sortie standard vers l'entrée d'un autre programme ...
... ce qui se trouve être xz -z -
. XZ est configuré pour compresser ( -z
) l'archive à partir de l'entrée standard ( -
).
Vous redirigez la sortie xz
vers le tar.xz
fichier.
-f
ne signifie pas «à partir du fichier» lorsqu'il est transmis à xz
. Au lieu de cela, il est l'abréviation de --force
(voir xz (1) pour plus de détails), et il est préférable de ne pas l'utiliser sauf si nécessaire.
tar cf - directory/ | xz -z -T0 - > directory.tar.xz
-1 -T0
ou des -0 -T0
options, ce qui vous donnera généralement toujours un fichier plus petit que gzip dans un temps comparable ou plus rapide, alors que la valeur par défaut -6
est considérablement plus lente que gzip.
Si vous aimez le mode pipe, c'est la solution la plus propre:
tar c some-dir | xz > some-dir.tar.xz
Il n'est pas nécessaire de mettre l' f
option pour traiter les fichiers, puis de l'utiliser -
pour spécifier que le fichier est l'entrée standard. Il n'est pas non plus nécessaire de spécifier l' -z
option pour xz
, car elle est par défaut.
Cela fonctionne avec gzip
et bzip2
aussi:
tar c some-dir | gzip > some-dir.tar.gz
ou
tar c some-dir | bzip2 > some-dir.tar.bz2
La décompression est également assez simple:
xzcat tarball.tar.xz | tar x
bzcat tarball.tar.bz2 | tar x
zcat tarball.tar.gz | tar x
Si vous n'avez que des tar
archives, vous pouvez utiliser cat
:
cat archive.tar | tar x
Si vous avez besoin de lister uniquement les fichiers, utilisez tar t
.
Si vous souhaitez utiliser des options de compression pour xz
, ou si vous utilisez tar
sur MacOS, vous voudrez probablement éviter la tar -cJf
syntaxe.
Selon man xz
, la façon de procéder est:
tar cf - baz | xz -4e > baz.tar.xz
Parce que j'ai aimé le format de Wojciech Adam Koszek , mais pas les informations:
c
crée une nouvelle archive pour les fichiers spécifiés. f
lit dans un répertoire (mieux vaut mettre cette seconde car -cf
! = -fc
)-
sorties vers la sortie standard|
conduit la sortie vers la commande suivantexz -4e
appels xz
avec l' -4e
option de compression. (égal à -4
--extreme
)> baz.tar.xz
dirige le fichier taré et compressé vers baz.tar.xz
où -4e
est, utilisez vos propres options de compression. Je l' utilise souvent -k
pour --keep
le fichier d' origine et -9
pour la compression vraiment lourd. -z
à définir manuellement xz
sur zip, bien qu'il soit par défaut zipping si ce n'est pas indiqué autrement.
Pour faire écho à Rafael van Horn , pour décompresser et décompresser (voir note ci-dessous):
xz -dc baz.tar.xz | tar x
Remarque: contrairement à la réponse de Rafael , utilisez à la xz -dc
place de catxz
. La documentation le recommande au cas où vous l'utiliseriez pour la création de scripts. Mieux vaut avoir l'habitude d'utiliser -d
ou --decompress
plutôt unxz
que d'utiliser . Cependant, si vous le devez, utiliser ces commandes à partir de la ligne de commande est très bien.
tar -cJf
syntaxe sur MacOS? Juste curieux, parce que je faisais ça tout à l'heure et que ça semblait marcher.
Essaye ça: tar -cf file.tar file-to-compress ; xz -z file.tar
Remarque:
|
car cela exécute les commandes simultanément. Utiliser ;
ou &
exécuter des commandes l'une après l'autre.J
option, mais cela fonctionne. Je pense que vous avez besoin de RHEL6.
tar -c file-to-compress | xz -z > file.tar.xz
.
&
ne lancera pas une commande l'une après l'autre. Au lieu de cela, il lancera le premier en tant que processus d'arrière-plan.
v
à la commande commutateurs (tar -cJvf
) pour être détaillé montre les fichiers ajoutés à l'archive.