web-dev-qa-db-fra.com

Créer un tar.xz en une seule commande

J'essaie de créer une archive compressée .tar.xz en une seule commande. Quelle est la syntaxe spécifique pour cela?

J'ai essayé tar cf - file | xz file.tar.xz, mais cela ne fonctionne pas.

121
George K.

Utilisez l'option de compression _-J_ pour xz. Et rappelez-vous de man tar :)

_tar cfJ <archive.tar.xz> <files>
_

Edit 2015-08-10:

Si vous passez les arguments à tar avec des tirets (ex: _tar -cf_ par opposition à _tar cf_) , puis l'option _-f_ doit venir en dernier , car elle spécifie le nom du fichier (grâce à @ ABB pour avoir pointé ça dehors!). Dans ce cas, la commande ressemble à:

_tar -cJf <archive.tar.xz> <files>
_
193
user2062950

Le commutateur -J ne fonctionne que sur les systèmes les plus récents. La commande universelle est:

Pour créer une archive .tar.xz

                tar cf - directory/ | xz -z - > directory.tar.xz

Explication

  1. 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.

  2. | dirige la sortie standard vers l'entrée d'un autre programme ...

  3. ... qui se trouve être xz -zf -. XZ est configuré pour créer (-z) l'archive à partir du fichier (-f) qui se trouve être une entrée standard (-).

  4. Vous redirigez la sortie de xz vers le fichier tar.xz.

39

Si vous aimez le mode pipe, voici la solution la plus propre:

tar c some-dir | xz > some-dir.tar.xz

Il n'est pas nécessaire de mettre l'option f pour traiter les fichiers, puis d'utiliser - pour spécifier que le fichier est l'entrée standard. Il n'est également pas nécessaire de spécifier l'option -z pour xz, car c'est la valeur 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 ne disposez que de tar archive, vous pouvez utiliser cat:

cat archive.tar | tar x

Si vous ne devez répertorier que les fichiers, utilisez tar t.

30
Rafael van Horn

Utilisation des options de compression xz

Si vous souhaitez utiliser les options de compression pour xz ou si vous utilisez tar sur MacOS, vous voudrez probablement éviter la syntaxe _tar -cJf_.

Selon man xz , voici comment procéder:

_tar cf - baz | xz -4e > baz.tar.xz_

Parce que j'ai aimé format de Wojciech Adam Koszek , mais pas d'information:

  1. c crée une nouvelle archive pour les fichiers spécifiés.
  2. f lit dans un répertoire (il est préférable de mettre cette seconde parce que _-cf_! = _-fc_)
  3. _-_ sorties vers la sortie standard
  4. _|_ conduit la sortie à la commande suivante
  5. _xz -4e_ appelle xz avec l'option de compression _-4e_. (égal à _-4_ _--extreme_)
  6. _> baz.tar.xz_ dirige le fichier taré et compressé vers _baz.tar.xz_

où _-4e_ est, utilisez vos propres options de compression. J'utilise souvent _-k_ à _--keep_ le fichier d'origine et _-9_ pour une compression très importante. _-z_ pour définir manuellement xz sur Zip, bien que le format par défaut soit zipping, sauf indication contraire.

Pour décompresser et décompresser

Pour faire écho à Rafael van Horn , décompresser et décompresser (voir note ci-dessous):

_xz -dc baz.tar.xz | tar x
_

Remarque: contrairement à réponse de Rafael , utilisez _xz -dc_ au lieu de catxz. La documentation le recommande si vous l'utilisez pour la génération de scripts. Il est préférable d'avoir l'habitude d'utiliser _-d_ ou _--decompress_ au lieu de unxz également. Toutefois, si vous devez le faire, l’utilisation de ces commandes à partir de la ligne de commande est acceptable.

5
Connor

Essayez ceci: tar -cf file.tar file-to-compress ; xz -z file.tar

Remarque:

  1. tar.gz et tar.xz ne sont pas identiques; xz fournit une meilleure compression.
  2. N'utilisez pas le canal | parce qu'il exécute des commandes simultanément. Utiliser ; ou & exécute les commandes les unes après les autres.
4
Jhim Preston