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.
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>
_
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
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.
|
dirige la sortie standard vers l'entrée d'un autre programme ...
... 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 (-
).
Vous redirigez la sortie de xz
vers le fichier tar.xz
.
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
.
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:
c
crée une nouvelle archive pour les fichiers spécifiés.f
lit dans un répertoire (il est préférable de mettre cette seconde parce que _-cf
_! = _-fc
_)-
_ sorties vers la sortie standard|
_ conduit la sortie à la commande suivantexz -4e
_ appelle xz
avec l'option de compression _-4e
_. (é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. 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 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.
Essayez ceci: tar -cf file.tar file-to-compress ; xz -z file.tar
Remarque:
|
parce qu'il exécute des commandes simultanément. Utiliser ;
ou &
exécute les commandes les unes après les autres.