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 tarprend en charge l' Joption, 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 ( -9vers xz) et une sortie détaillée ( vvers tar, -vvers 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.xzfichiers qu'ils produisent à la fin devraient être les mêmes (et l'étaient lorsque je les ai testés).
tarest redirigée ( |) vers l' entrée de xz. xzreçoit des données de tarpresque 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.xzdans la deuxième commande. ( xzsupprime 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 taret xz.
tar -Jest 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 taravec -Joption:
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.xzsera créé dans le répertoire courant, si vous souhaitez le sauvegarder ailleurs, utilisez /full/path/to/images.tar.xz.
xzsoit le plus lent parmi xz, gzipen bzip2raison 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 cJfest absolument OK.
tar cJf, ce qui donnerait à OP une autre façon de le faire car ma réponse était déjà couverte tar --cvJfau début ..