Créer un tar.xz en une seule commande

J’essaie de créer une .tar.xz 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 tar cf - file | xz file.tar.xz , mais cela ne fonctionne pas.

Utilisez l’option de compression -J pour xz . Et rappelez-vous de man tar 🙂

 tar cfJ   

Modifier 2015-08-10:

Si vous transmettez les arguments à tar avec des tirets (ex: tar -cf par opposition à tar cf ), alors l’option -f doit venir en dernier , car elle spécifie le nom du fichier (grâce à @ABB pour le signaler!). Dans ce cas, la commande ressemble à:

 tar -cJf   

Switch -J ne fonctionne que sur les nouveaux systèmes. 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. | tubes de sortie standard à 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 l’entrée standard ( - ).

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

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’option f pour traiter les fichiers, puis d’utiliser - pour spécifier que le fichier est l’entrée standard. Il n’est pas non plus nécessaire de spécifier l’option -z pour xz , car c’est la valeur par défaut.

Cela fonctionne aussi avec gzip et bzip2 :

 tar c some-dir | gzip > some-dir.tar.gz 

ou

 tar c some-dir | bzip2 > some-dir.tar.bz2 

La décompression est également très simple:

 xzcat tarball.tar.xz | tar x bzcat tarball.tar.bz2 | tar x zcat tarball.tar.gz | tar x 

Si vous ne disposez que d’archives tar , vous pouvez utiliser cat :

 cat archive.tar | tar x 

Si vous ne devez lister que les fichiers, utilisez tar t .

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

Remarque:

  1. tar.gz et tar.xz ne sont pas les mêmes; xz fournit une meilleure compression.
  2. Ne pas utiliser de tuyau | car cela exécute les commandes simultanément. En utilisant ; ou & exécute des commandes les unes après les autres.

Utilisation des options de compression xz

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

Selon l’ man xz , la manière de procéder est la suivante:

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

Parce que j’ai aimé le format de Wojciech Adam Koszek , mais pas l’information:

  1. c crée une nouvelle archive pour les fichiers spécifiés.
  2. f lit dans un répertoire (il -cf mieux mettre cette seconde car -cf ! = -fc )
  3. - sorties à la sortie standard
  4. | les tubes sortent à la prochaine commande
  5. xz -4e appelle xz avec l’option de compression -4e . (égal à -4 --extreme )
  6. > baz.tar.xz dirige le fichier goudronné et compressé sur baz.tar.xz

-4e est, utilisez vos propres options de compression. J’utilise souvent -k pour --keep le fichier original et -9 pour une compression très lourde. -z pour définir manuellement xz sur zip, bien que la valeur par défaut soit zippée si elle n’est pas dirigée autrement.

Pour décompresser et décompresser

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

 xz -dc baz.tar.xz | tar x 

Note: contrairement à la réponse de Rafael , utilisez xz -dc au lieu de catxz . Les documents le recommandent au cas où vous l’utiliseriez pour les scripts. Mieux --decompress prendre l’habitude d’utiliser -d ou --decompress au lieu de unxz . Cependant, si vous devez le faire, utiliser ces commandes à partir de la ligne de commande convient.