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
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.
|
tubes de sortie standard à 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 l’entrée standard ( -
).
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:
|
car cela exécute les commandes simultanément. En utilisant ;
ou &
exécute des commandes les unes après les autres. 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:
c
crée une nouvelle archive pour les fichiers spécifiés. f
lit dans un répertoire (il -cf
mieux mettre cette seconde car -cf
! = -fc
) -
sorties à la sortie standard |
les tubes sortent à la prochaine commande xz -4e
appelle xz
avec l’option de compression -4e
. (égal à -4
--extreme
) > baz.tar.xz
dirige le fichier goudronné et compressé sur baz.tar.xz
où -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.
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.