Je veux compresser plusieurs images dans une archive .xz. Comment je fais ça?
Je veux compresser plusieurs images dans une archive .xz. Comment je fais ça?
Réponses:
Bien que comme détaillé par Zacharee1 et par heemayl soit généralement ce que vous voudrez faire, une autre façon est de diriger les données goudronnées vers la commande:tar cJf archive files...
xz
tar c files... | xz > archive.tar.xz
Étant donné qu'Ubuntu tar
prend en charge l' J
option, cette autre méthode est particulièrement utile lorsque vous souhaitez transmettre des options à xz
.
Dans cet exemple, je tar et xzip certains fichiers TIFF avec un niveau élevé de compression ( -9
vers xz
) et une sortie détaillée ( v
vers tar
, -v
vers xz
):
ek@Io:~/Pictures$ tar vc *.tif{,f} | xz -9v > pics.tar.xz
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
100 % 207.3 KiB / 290.0 KiB = 0.715
Bien entendu, cela pourrait également se faire en deux étapes distinctes:
ek@Io:~/Pictures$ tar vcf pics.tar *.tif{,f}
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
ek@Io:~/Pictures$ xz -9v pics.tar
pics.tar (1/1)
100 % 207.3 KiB / 290.0 KiB = 0.715
Ces deux façons ne sont pas réellement équivalentes dans leur fonctionnement, bien que les .tar.xz
fichiers qu'ils produisent à la fin devraient être les mêmes (et l'étaient lorsque je les ai testés).
tar
est redirigée ( |
) vers l' entrée de xz
. xz
reçoit des données de tar
presque immédiatement, et aucun fichier tar non compressé intermédiaire n'est jamais créé. Cela signifie que la première méthode est essentiellement équivalente àtar cJf archive files...
, à l'exception des arguments supplémentaires passés à xz
.xz
dans la deuxième commande. ( xz
supprime automatiquement le fichier d'origine lorsqu'il est terminé, sauf s'il est invoqué avec -k
/ --keep
.)Pour en savoir plus, consultez cet article de Rafael van Horn et les pages de manuel tar
et xz
.
tar -J
est de spécifier la variable d'environnement XZ_OPT
, ce qui rend l'invocation quelque chose comme:XZ_OPT="-9v" tar -Jcf out.tar.xz [files]
Utiliser tar
avec -J
option:
tar -cvJf images.tar.xz /directory/containing/images/*
tar
est utilisé pour combiner plusieurs fichiers en un seul (Archive), puis nous devons compresser l'archive à l'aide de l'algorithme de compression XZ.
De man tar
:
-c, --create
create a new archive
-v, --verbose
verbosely list files processed
-J, --xz
-f, --file ARCHIVE
use archive file or device ARCHIVE
Notez également que images.tar.xz
sera créé dans le répertoire courant, si vous souhaitez le sauvegarder ailleurs, utilisez /full/path/to/images.tar.xz
.
xz
soit le plus lent parmi xz
, gzip
en bzip2
raison de son taux de compression plus élevé que les autres..la lenteur vaut la peine d'être traitée si vous voulez plus de compression ..
Utilisez cette commande: tar cJf <archive.tar.xz> <files>
. Séparez les chemins d'accès aux fichiers par un espace.
-cfJ
-
devant .. de man tar
: A function letter need not be prefixed with ``-''
..so tar cJf
est absolument OK.
tar cJf
, ce qui donnerait à OP une autre façon de le faire car ma réponse était déjà couverte tar --cvJf
au début ..