Réponses:
Utilisez l' -Joption 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 -cfpar opposition à tar cf), alors l' -foption 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>
fdernier, même sans le tiret.
tarsur macOS semble prendre en charge -Jmais 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 -Jne 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 - directorylit 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 xzvers le tar.xzfichier.
-fne 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 -T0ou des -0 -T0options, 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 -6est 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' foption 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' -zoption pour xz, car elle est par défaut.
Cela fonctionne avec gzipet bzip2aussi:
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 tararchives, 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 tarsur MacOS, vous voudrez probablement éviter la tar -cJfsyntaxe.
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. flit dans un répertoire (mieux vaut mettre cette seconde car -cf! = -fc)- sorties vers la sortie standard| conduit la sortie vers la commande suivantexz -4eappels xzavec l' -4eoption de compression. (égal à -4 --extreme)> baz.tar.xz dirige le fichier taré et compressé vers baz.tar.xz où -4eest, utilisez vos propres options de compression. Je l' utilise souvent -kpour --keeple fichier d' origine et -9pour la compression vraiment lourd. -zà définir manuellement xzsur 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 -dcplace 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 -dou --decompressplutôt unxzque d'utiliser . Cependant, si vous le devez, utiliser ces commandes à partir de la ligne de commande est très bien.
tar -cJfsyntaxe 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.Joption, 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.