Provided by: xz-utils_5.6.2-2ubuntu0.2_amd64 

NOM
xz, unxz, xzcat, lzma, unlzma, lzcat - Compresser ou décompresser des fichiers .xz et .lzma
SYNOPSIS
xz [option...] [fichier...]
ALIAS DES COMMANDES
unxz est équivalent à xz --decompress.
xzcat est équivalent à xz --decompress --stdout
lzma est équivalent à xz --format=lzma
unlzma est équivalent à xz --format=lzma --decompress
lzcat est équivalent à xz --format=lzma --decompress -- stdout
Lors de l'écriture de scripts qui nécessitent de décompresser des fichiers, il est recommandé de toujours
utiliser la commande xz avec les arguments appropriés (xz -d ou xz -dc) au lieu des commandes unxz et
xzcat.
DESCRIPTION
xz is a general-purpose data compression tool with command line syntax similar to gzip(1) and bzip2(1).
The native file format is the .xz format, but the legacy .lzma format used by LZMA Utils and raw
compressed streams with no container format headers are also supported. In addition, decompression of the
.lz format used by lzip is supported.
xz compresse ou décompresse chaque fichier en fonction du mode d'opération choisi. Si aucun fichier n'est
donné ou fichier est -, xz lit depuis l'entrée standard et écrit les données traitées sur la sortie
standard. xz refusera (affichera une erreur et ignorera le fichier) d'écrire les données compressées sur
la sortie standard si c'est un terminal. De même, xz refusera de lire des données compressées depuis
l'entrée standard si c'est un terminal.
A moins que --sdout ne soit indiqué, les fichiers autres que - sont écrits dans un nouveau fichier dont
le nom est dérivé du nom de fichier source :
• Lors de la compression, le suffixe du format de fichier cible (.xz ou .lzma) est ajouté au nom de
fichier source pour obtenir le nom de fichier cible.
• When decompressing, the .xz, .lzma, or .lz suffix is removed from the filename to get the target
filename. xz also recognizes the suffixes .txz and .tlz, and replaces them with the .tar suffix.
Si le fichier cible existe déjà, une erreur est affichée et le fichier est ignoré.
Sauf s'il écrit dans la sortie standard, xz affichera un avertissement et ignorera le fichier dans les
cas suivants :
• fichier n'est pas un fichier normal. Les liens symboliques ne sont pas suivis et donc ne sont pas
considérés comme des fichiers normaux.
• fichier a plusieurs liens physiques.
• fichier a un setuid, setgid ou sticky bit positionné.
• Le mode d'opération est défini pour compresser et le fichier a déjà un suffixe du format de fichier
cible (.xz ou .txz lors d'une compression en format .xz, et .lzma ou .tlz lors d'une compression en
format .lzma).
• The operation mode is set to decompress and the file doesn't have a suffix of any of the supported
file formats (.xz, .txz, .lzma, .tlz, or .lz).
Après la compression ou la décompression réussie du fichier, xz copie les permissions du propriétaire, du
groupe, la date d'accès, et les modifications d'heure depuis le fichier source du fichier cible. Si la
copie du groupe échoue, les permissions sont modifiées pour que le fichier cible ne soit pas accessible
aux utilisateurs qui n'ont pas les droits d'accès au fichier source. xz ne prend actuellement pas en
charge la copie d'autres métadonnées telles que les listes de contrôle d'accès ou les attributs étendus.
Once the target file has been successfully closed, the source file is removed unless --keep was
specified. The source file is never removed if the output is written to standard output or if an error
occurs.
Envoyer SIGINFO ou SIGURSR1 au processus xz, lui fait afficher l'information de progression sur l'erreur
standard. Cela a un intérêt limité car lorsque l'erreur standard est un terminal, utiliser --verbose
affichera automatiquement un indicateur de progression du processus.
Utilisation de la mémoire
L'utilisation de la mémoire par xz varie de quelques centaines de kilo-octets à plusieurs gigaoctects en
fonction des paramètres de compression. Les réglages utilisés lors de la compression d'un fichier
déterminent les besoins en mémoire pour la décompression. Habituellement la décompression nécessite 5 à
20 de la quantité de mémoire utilisée pour la compression du fichier. Par exemple, décompresser un
fichier créé avec xz-9 recquiert habituellement 65 Mio de mémoire. Bien qu'il soit possible d'avoir des
fichiers .xz nécessitant plusieurs gigaoctets de mémoire pour être décompressés.
Especially users of older systems may find the possibility of very large memory usage annoying. To
prevent uncomfortable surprises, xz has a built-in memory usage limiter, which is disabled by default.
While some operating systems provide ways to limit the memory usage of processes, relying on it wasn't
deemed to be flexible enough (for example, using ulimit(1) to limit virtual memory tends to cripple
mmap(2)).
The memory usage limiter can be enabled with the command line option --memlimit=limit. Often it is more
convenient to enable the limiter by default by setting the environment variable XZ_DEFAULTS, for example,
XZ_DEFAULTS=--memlimit=150MiB. It is possible to set the limits separately for compression and
decompression by using --memlimit-compress=limit and --memlimit-decompress=limit. Using these two options
outside XZ_DEFAULTS is rarely useful because a single run of xz cannot do both compression and
decompression and --memlimit=limit (or -M limit) is shorter to type on the command line.
If the specified memory usage limit is exceeded when decompressing, xz will display an error and
decompressing the file will fail. If the limit is exceeded when compressing, xz will try to scale the
settings down so that the limit is no longer exceeded (except when using --format=raw or --no-adjust).
This way the operation won't fail unless the limit is very small. The scaling of the settings is done in
steps that don't match the compression level presets, for example, if the limit is only slightly less
than the amount required for xz -9, the settings will be scaled down only a little, not all the way down
to xz -8.
Concaténation et remplissage avec des fichiers .xz
Il est possible de concaténer les fichiers .xz tels quel. xz décompressera de tels fichiers comme s'ils
étaient un unique fichier .xz.
It is possible to insert padding between the concatenated parts or after the last part. The padding must
consist of null bytes and the size of the padding must be a multiple of four bytes. This can be useful,
for example, if the .xz file is stored on a medium that measures file sizes in 512-byte blocks.
La concaténation et le remplissage ne sont pas autorisés avec les fichiers .lzma ou les flux bruts.
OPTIONS
Suffixes entiers et valeurs spéciales.
Dans la plupart des endroits où un argument entier est attendu, un suffixe optionel permet d'indiquer
facilement les grands entiers. Il ne doit pas y avoir d'espace entre l'entier et le suffixe.
KiB Multiplier l'entier par 1024 (2^10). Ki, k, kB, K et KB sont acceptés comme synonymes de KiB.
MiB Multiplier l'entier par 1 048 576 (2^20). Mi, m, M et MB sont acceptés comme synonymes de MiB.
GiB Multiplier l'entier par 1 073 741 824 (2^30). Gi, g, G et GB sont acceptés comme synonymes de GiB.
La valeur spéciale max peut être utilisée pour indiquer la valeur maximale de l'entier prise en charge
par l'option.
Mode d'opération
Si plusieurs options de mode d'opération sont données, la dernière prend effet.
-z, --compress
Compresser. C'est le mode d'opération par défaut lorsque aucune option de mode opératoire n'est
spécifiée ou qu'aucun autre mode d'opération n'est sous-entendu par le nom de la commande (par
exemple unxz sous-entend --decompress).
-d, --decompress, --uncompress
Décompresser.
-t, --test
Tester l'intégrité des fichiers compressés. Cette option est équivalente à --decompress --stdout
sauf que les données décompressées sont rejetées au lieu d'être écrites sur la sortie standard.
Aucun fichier n'est créé ou supprimé.
-l, --list
Afficher l'information sur les fichiers compressés. Aucune sortie non-compressée n'est produite et
aucun fichier n'est créé ou supprimé. En mode liste, le programme ne peut pas lire les données
compressées depuis l'entrée standard ou depuis d'autres sources non adressables.
The default listing shows basic information about files, one file per line. To get more detailed
information, use also the --verbose option. For even more information, use --verbose twice, but
note that this may be slow, because getting all the extra information requires many seeks. The
width of verbose output exceeds 80 characters, so piping the output to, for example, less -S may
be convenient if the terminal isn't wide enough.
La sortie exacte peut varier suivant les versions de xz et les différents paramètres régionaux.
Pour une sortie lisible par la machine, utiliser --robot --list.
Modificateurs d'opération
-k, --keep
Ne pas effacer les fichiers d'entrée.
Since xz 5.2.6, this option also makes xz compress or decompress even if the input is a symbolic
link to a regular file, has more than one hard link, or has the setuid, setgid, or sticky bit set.
The setuid, setgid, and sticky bits are not copied to the target file. In earlier versions this
was only done with --force.
-f, --force
Cette option a plusieurs effets :
• Si le fichier cible existe déjà, l'effacer avant de compresser ou décompresser.
• Compresser ou décompresser même si l'entrée est un lien symbolique vers un fichier normal, a
plus qu'un lien physique, ou a le bit setuid, setgid ou sticky défini. Les bits setuid, setgid
et sticky bits ne sont pas copiés dans le fichier cible.
• Lorsque xz est utilisé avec --decompress --stdout et qu'il ne peut pas reconnaitre le type du
fichier source, copier le fichier source tel quel dans la sortie standard. Celà permet à xzcat
--force d'être utilisé comme cat(1) pour les fichiers qui n'ont pas été compressé avec xz.
Remarquez que dans le futur, xz devrait prendre en charge de nouveaux formats de fichiers
compressés, ce qui permettra à xz de décompresser plus de types de fichiers au lieu de les
copier tels quels dans la sortie standard. --format=format peut être utilisé pour contraindre
xz à décompresser seulement un format de fichier.
-c, --stdout, --to-stdout
Écrire les données compressées ou décompressées sur la sortie standard plutôt que dans un fichier.
Cela necessite --keep.
--single-stream
Décompresser seulement le premier flux .xz et ignorer silencieusement les possibles données
d'entrée résiduelles qui suivent le flux. Normalement ces déchets excédentaires provoquent
l'affichage d'une erreur par xz.
xz ne décompresse jamais plus d'un flux à partir de fichiers .lzma ou de flux bruts, mais cette
option fait aussi que xz ignorera les données résiduelles après le fichier .lzma ou le flux brut.
Cette option n'a aucun effet si le mode d'opération n'est pas --decompress ou --test.
--no-sparse
Désactiver la création de fichiers peu denses. Par défaut, lors de la décompression en un fichier
normal, xz essaie d'en faire un fichier creux si les données décompressées contiennent de longues
séquences de zéros binaires. Cela fonctionne aussi lors de l'écriture sur la sortie standard aussi
longtemps que la sortie standard est connectée à un fichier normal et que certaines conditions
supplémentaires sont satisfaites pour le faire de manière sécurisée. Créer des fichiers creux peut
épargner de l'espace disque et accélérer la décompression en réduisant la quantité
d'entrées/sorties sur le disque.
-S .suf, --suffix=.suf
Lors de la compression, utiliser .suf comme suffixe du fichier cible au lieu de .xz ou .lzma. Si
xz n'écrit pas sur la sortie standard et si le fichier source a déja le suffixe .suf, un
avertissement est affiché et le fichier est ignoré.
When decompressing, recognize files with the suffix .suf in addition to files with the .xz, .txz,
.lzma, .tlz, or .lz suffix. If the source file has the suffix .suf, the suffix is removed to get
the target filename.
Lors de la compression ou décompression de flux bruts (--fomat=raw), le suffixe doit toujours être
spécifié à moins d'écrire sur la sortie standard, car il n'y a pas de suffixe par défaut pour les
flux bruts.
--files[=fichier]
Lire les noms de fichier à traiter depuis fichier ; si fichier est omis , les noms de fichier sont
lus sur l'entrée standard. Les noms de fichier doivent se terminer avec le caractère de nouvelle
ligne. Un tiret (-) est considéré comme un nom de fichier normal ; ce qui ne signifie pas entrée
standard. Si les noms de fichier sont aussi donnés comme arguments de ligne de commande, ils sont
traités avant les noms de fichier lus depuis fichier.
--files0[=fichier]
Cela est identique à --files[=fichier] sauf que chaque nom de fichier doit se terminer par le
caractère null.
Format de fichier basique et options de compression
-F format, --format=format
Indiquer le format de fichier à compresser ou décompresser :
auto C'est celui par défaut. Lors de la compression, auto est équivalent à xz. Lors de la
décompression, le format du fichier en entrée est détecté automatiquement. Notez que les
flux bruts (créés avec --format=raw) ne peuvent pas être détectés automatiquement.
xz Compresser dans le format de fichier .xz ou n'accepter que les fichiers .xz à décompresser.
lzma, alone
Compresser au format de fichier .lzma historique, ou n'accepter que les fichiers .lzma lors
de la décompression. Le nom alternatif alone est fourni pour la rétrocompatibilité avec les
utilitaires LZMA.
lzip Accept only .lz files when decompressing. Compression is not supported.
The .lz format version 0 and the unextended version 1 are supported. Version 0 files were
produced by lzip 1.3 and older. Such files aren't common but may be found from file
archives as a few source packages were released in this format. People might have old
personal files in this format too. Decompression support for the format version 0 was
removed in lzip 1.18.
lzip 1.4 and later create files in the format version 1. The sync flush marker extension to
the format version 1 was added in lzip 1.6. This extension is rarely used and isn't
supported by xz (diagnosed as corrupt input).
raw Compresser ou décompresser un flux brut (sans en-têtes). Cela est réservé seulement aux
utilisateurs aguerris. Pour décoder des flux bruts, vous devez utiliser --format=raw et
spécifier explicitement la chaîne de filtre, qui normalement aurait du être stockée dans
les en-têtes du conteneur.
-C vérif., --check=vérif.
Spécifier le type d'intégrité à vérifier. La vérification est calculée à partir des données
non-compressées et stockées dans le fichier .xz. Cette option n'a effet que si la compression a
été faite dans le format .xz ; le format .lzma ne gère pas les vérifications d'intégrité. Le
contrôle d'intégrité (s'il y en a) est vérifié lorsque le fichier .xz est décompressé.
Types de vérification pris en charge :
none Ne pas calculer de vérification d'intégrité du tout. C'est généralement une mauvaise idée.
Cela peut être utile lorsque l'intégrité des données est vérifiée de toute façon par
d'autres manières.
crc32 Calculer CRC32 en utilisant le polynôme de IEEE-802.3 (Ethernet).
crc64 Calculer CRC64 en utilisant le polynôme de ECMA-182. C'est la manière utilisée par défaut,
car c'est légèrement mieux que CRC32 pour détecter les fichiers endommagés et la différence
de vitesse est négligeable.
sha256 Calculer SHA-256. C'est quelque peu plus lent que CRC32 et CRC64.
L'intégrité des en-têtes .xz est toujours vérifiée avec CRC32. Il n'est pas possible de le changer
ou de le désactiver.
--ignore-check
Ne pas contrôler la vérification d'intégrité des données lors de la décompression. Les valeurs
CRC32 dans les en-têtes .xz seront normalement toujours vérifiées.
N'utilisez pas cette option à moins de savoir ce que vous faites. Les raisons possibles pour
utiliser cette option :
• Essayer de récupérer des données d'un fichier .xz corrompu.
• Accélérer la décompression. Cela importe surtout avec SHA-256 ou avec les fichiers qui ont été
compressés extrêmement bien. Il est recommandé de ne pas utiliser cette option dans ce but à
moins que l'intégrité du fichier ne soit vérifiée extérieurement d'une autre manière.
-0 ... -9
Choisir un niveau de compression prédéfini. La valeur par défaut est 6. Si plusieurs niveaux de
préréglage sont spécifiés, c'est le dernier qui sera pris en compte. Si une chaîne de filtres
personnalisée a déjà été choisie, définir un niveau de compression préréglé efface la chaîne de
filtres personnalisée.
Les différences entre les préréglages sont plus significatives qu'avec gzip(1) et bzip2(1). les
réglages de compression sélectionnés déterminent les exigences en mémoire pour la décompression,
ainsi, utiliser un niveau de préréglage trop élevé peut rendre difficile à décompresser un fichier
sur un vieux système avec peu de RAM. Clairement, ce n'est pas une bonne idée d'utiliser -9
aveuglément pour tout comme ça l'est souvent avec gzip(1) et bzip2(1).
-0 ... -3
Ce sont des préréglages relativement rapides. 0 est parfois plus rapide que gzip -9 tout en
compressant bien mieux. Les réglages plus élevés ont souvent une rapidité comparable à
celle de bzip2(1) avec un taux de compression comparable ou meilleur, même si les résultats
dépendent beaucoup du genre de données compressées.
-4 ... -6
Good to very good compression while keeping decompressor memory usage reasonable even for
old systems. -6 is the default, which is usually a good choice for distributing files that
need to be decompressible even on systems with only 16 MiB RAM. (-5e or -6e may be worth
considering too. See --extreme.)
-7 ... -9
C'est comme -6 mais avec des besoins en mémoire plus élevés pour la compression et la
décompression. Ce n'est utile que lorsque les fichiers sont plus gros que 8 Mio, 16 Mio et
32 Mio respectivement.
Sur le même matériel, la vitesse de décompression est sensiblement un nombre constant d'octets de
données compressées par seconde. En d'autres termes, meilleure est la compression, plus rapide
sera en général la décompression. Cela signifie aussi que la quantité de sortie non compressée
produite par seconde peut varier beaucoup.
Le tableau suivant résume les caractéristiques des préréglages :
Préréglage DictSize CompCPU CompMem DecMem
-0 256 KiB 0 3 MiB 1 MiB
-1 1 MiB 1 9 MiB 2 MiB
-2 2 MiB 2 17 MiB 3 MiB
-3 4 MiB 3 32 MiB 5 MiB
-4 4 MiB 4 48 MiB 5 MiB
-5 8 MiB 5 94 MiB 9 MiB
-6 8 MiB 6 94 MiB 9 MiB
-7 16 MiB 6 186 MiB 17 MiB
-8 32 MiB 6 370 MiB 33 MiB
-9 64 MiB 6 674 MiB 65 MiB
Descriptions des colonnes :
• DictSize est la taille du dictionnaire de LZMA2. Utiliser un dictionnaire plus gros que la
taille du fichier non compressé est un gaspillage de mémoire. C'est pourquoi il est bon
d'éviter d'utiliser les préréglages de -7 à -9 lorsqu'il n'y en a pas vraiment besoin. A -6 et
plus bas, la quantité de mémoire gaspillée est généralement assez basse pour ne pas être un
problème.
• CompCPU est une représentation des préréglages de LZMA2 qui affectent la vitesse de
compression. La taille du dictionnaire aussi affecte la vitesse, alors comme CompCPU est le
même pour les niveaux de -6 à -9, les plus haut niveaux tendent à être un peu moins rapides.
Pour être encore moins rapide et du coup obtenir peut être une meilleure compression, consultez
--extreme.
• CompMem contains the compressor memory requirements in the single-threaded mode. It may vary
slightly between xz versions.
• DecMem contient les besoins en mémoire du décompresseur. Ce sont les réglages de la compression
qui déterminent les besoins en mémoire de la décompression. L'exacte utilisation de la mémoire
est légèrement supérieure à la taille du dictionnaire LZMA2, mais les valeurs dans la table ont
été arrondies au prochain Mio supérieur.
Memory requirements of the multi-threaded mode are significantly higher than that of the
single-threaded mode. With the default value of --block-size, each thread needs 3*3*DictSize plus
CompMem or DecMem. For example, four threads with preset -6 needs 660–670 MiB of memory.
-e, --extreme
Utilisez un variant plus lent que les préréglages (-0 à -9) pour espérer avoir un taux de
compression légèrement meilleur, mais en cas de malchance cela peut être pire. L'utilisation
mémoire du décompresseur n'est pas affectée, mais l'utilisation mémoire du compresseur augmente un
peu aux niveaux de préréglages de -0 à -3.
Depuis qu'il y a deux préréglages avec des tailles de dictionnaire de 4 Mio et 8 o, les
préréglages -3e et -5e utilisent des réglages légèrement plus rapides que -4e et -6e,
respectivement. De cette manière, il n'y a pas deux préréglages identiques.
Préréglage DictSize CompCPU CompMem DecMem
-0e 256 KiB 8 4 MiB 1 MiB
-1e 1 MiB 8 13 MiB 2 MiB
-2e 2 MiB 8 25 MiB 3 MiB
-3e 4 MiB 7 48 MiB 5 MiB
-4e 4 MiB 8 48 MiB 5 MiB
-5e 8 MiB 7 94 MiB 9 MiB
-6e 8 MiB 8 94 MiB 9 MiB
-7e 16 MiB 8 186 MiB 17 MiB
-8e 32 MiB 8 370 MiB 33 MiB
-9e 64 MiB 8 674 MiB 65 MiB
Par exemple, il y a un total de quatre préréglages qui utilisent un dictionnaire de 8 Mio et qui
sont dans l'ordre du plus rapide au plus lent : -5, -6, -5e et -6e.
--fast
--best Il y a néanmoins des alias trompeurs pour -0 et -9, respectivement. Ils ne sont fournis que pour
des besoins de rétro-compatibilité avec les utilitaires LZMA. Evitez d'utiliser ces options.
--block-size=taille
Lors de la compression dans le format .xz, les données de l'entrée sont réparties en blocs de
taille octets. Les blocs sont compressés indépendamment les un des autres, ce qui aide avec le
mode multithread (multi-threading) et rend possible la décompression à accès aléatoire limité.
Cette option est typiquement utilisée pour outrepasser la taille de bloc en mode multithread, mais
cette option peut aussi être utilisée en mode single-thread.
In multi-threaded mode about three times size bytes will be allocated in each thread for buffering
input and output. The default size is three times the LZMA2 dictionary size or 1 MiB, whichever is
more. Typically a good value is 2–4 times the size of the LZMA2 dictionary or at least 1 MiB.
Using size less than the LZMA2 dictionary size is waste of RAM because then the LZMA2 dictionary
buffer will never get fully used. In multi-threaded mode, the sizes of the blocks are stored in
the block headers. This size information is required for multi-threaded decompression.
In single-threaded mode no block splitting is done by default. Setting this option doesn't affect
memory usage. No size information is stored in block headers, thus files created in
single-threaded mode won't be identical to files created in multi-threaded mode. The lack of size
information also means that xz won't be able decompress the files in multi-threaded mode.
--block-list=items
When compressing to the .xz format, start a new block with an optional custom filter chain after
the given intervals of uncompressed data.
The items are a comma-separated list. Each item consists of an optional filter chain number
between 0 and 9 followed by a colon (:) and a required size of uncompressed data. Omitting an
item (two or more consecutive commas) is a shorthand to use the size and filters of the previous
item.
If the input file is bigger than the sum of the sizes in items, the last item is repeated until
the end of the file. A special value of 0 may be used as the last size to indicate that the rest
of the file should be encoded as a single block.
An alternative filter chain for each block can be specified in combination with the
--filters1=filters ... --filters9=filters options. These options define filter chains with an
identifier between 1–9. Filter chain 0 can be used to refer to the default filter chain, which is
the same as not specifying a filter chain. The filter chain identifier can be used before the
uncompressed size, followed by a colon (:). For example, if one specifies
--block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB then blocks will be created using:
• The filter chain specified by --filters1 and 2 MiB input
• The filter chain specified by --filters3 and 2 MiB input
• The filter chain specified by --filters2 and 4 MiB input
• The filter chain specified by --filters2 and 4 MiB input
• The default filter chain and 2 MiB input
• The default filter chain and 4 MiB input for every block until end of input.
If one specifies a size that exceeds the encoder's block size (either the default value in
threaded mode or the value specified with --block-size=size), the encoder will create additional
blocks while keeping the boundaries specified in items. For example, if one specifies
--block-size=10MiB --block-list=5MiB,10MiB,8MiB,12MiB,24MiB and the input file is 80 MiB, one will
get 11 blocks: 5, 10, 8, 10, 2, 10, 10, 4, 10, 10, and 1 MiB.
En mode multi-threadé les tailles de blocs sont stockées dans les en-têtes du bloc. Cela ne se
fait pas en mode mono-threadé, la sortie encodée ne sera donc pas identique à celle faite en mode
multi-threadé.
--flush-timeout=temps_d'attente
Lors de la compression, si plus que temps_d'attente millisecondes (un entier positif) se sont
écoulées depuis le précédent vidage et que lire plus de données bloquerait, toutes les données
d'entrée en attente sont vidées de l'encodeur et mises à disposition dans le flux de sortie. Cela
peut être utile si xz est utilisé pour compresser les données qui sont diffusées sur un réseau.
Des petites valeurs de temps_d'attente rendent les données disponibles à l'extrémité réceptrice
avec un léger retard, mais les grandes valeurs de temps_d'attente donnent un meilleur taux de
compression.
Cette option est désactivée par défaut. Si cette option est indiquée plus d'une fois, la dernière
prend effet. La valeur spéciale de temps_d'attente de 0 peut être utilisée pour explicitement
désactiver cette option.
Cette option n'est pas disponible sur les systèmes qui ne sont pas POSIX.
Cette option est encore expérimentale. Actuellement, xz ne convient pas pour décompresser le flux
en temps réel en raison de la façon dont xz effectue la mise en mémoire tampon.
--memlimit-compress=limite
Indiquer une limite d'utilisation de la mémoire pour la compression. Si cette option est indiquée
plusieurs fois, c'est la dernière qui est prise en compte.
If the compression settings exceed the limit, xz will attempt to adjust the settings downwards so
that the limit is no longer exceeded and display a notice that automatic adjustment was done. The
adjustments are done in this order: reducing the number of threads, switching to single-threaded
mode if even one thread in multi-threaded mode exceeds the limit, and finally reducing the LZMA2
dictionary size.
When compressing with --format=raw or if --no-adjust has been specified, only the number of
threads may be reduced since it can be done without affecting the compressed output.
If the limit cannot be met even with the adjustments described above, an error is displayed and xz
will exit with exit status 1.
La limite peut être indiquée de plusieurs façons :
• La limite peut être une valeur absolue en octets. Utiliser un suffixe d'entier comme MiB peut
être utile. Exemple : --memlimit-compress=80MiB
• La limite peut être indiquée sous forme d'un pourcentage de la mémoire physique totale (RAM).
Cela peut être particulièrement utile quand la variable d'environnement XZ_DEFAULTS est
indiquée dans un script d'initialisation de l'interpréteur partagé entre différents
ordinateurs. De cette façon la limite est automatiquement plus grande sur les systèmes avec
plus de mémoire. Exemple : --memlimit=70%
• The limit can be reset back to its default value by setting it to 0. This is currently
equivalent to setting the limit to max (no memory usage limit).
For 32-bit xz there is a special case: if the limit would be over 4020 MiB, the limit is set to
4020 MiB. On MIPS32 2000 MiB is used instead. (The values 0 and max aren't affected by this. A
similar feature doesn't exist for decompression.) This can be helpful when a 32-bit executable has
access to 4 GiB address space (2 GiB on MIPS32) while hopefully doing no harm in other situations.
Voir aussi la section utilisation de la mémoire.
--memlimit-decompress=limite
Régler une limite d'utilisation de la mémoire pour la décompression. Cela a un effet sur le mode
--list. Si l'opération n'est pas possible sans dépasser la limite, xz affichera une erreur et la
décompression échouera. Voir --memlimit-compress=limite pour les manières possibles d'indiquer la
limite.
--memlimit-mt-decompress=limit
Set a memory usage limit for multi-threaded decompression. This can only affect the number of
threads; this will never make xz refuse to decompress a file. If limit is too low to allow any
multi-threading, the limit is ignored and xz will continue in single-threaded mode. Note that if
also --memlimit-decompress is used, it will always apply to both single-threaded and
multi-threaded modes, and so the effective limit for multi-threading will never be higher than the
limit set with --memlimit-decompress.
In contrast to the other memory usage limit options, --memlimit-mt-decompress=limit has a
system-specific default limit. xz --info-memory can be used to see the current value.
This option and its default value exist because without any limit the threaded decompressor could
end up allocating an insane amount of memory with some input files. If the default limit is too
low on your system, feel free to increase the limit but never set it to a value larger than the
amount of usable RAM as with appropriate input files xz will attempt to use that amount of memory
even with a low number of threads. Running out of memory or swapping will not improve
decompression performance.
See --memlimit-compress=limit for possible ways to specify the limit. Setting limit to 0 resets
the limit to the default system-specific value.
-M limite, --memlimit=limite, --memory=limite
This is equivalent to specifying --memlimit-compress=limit --memlimit-decompress=limit
--memlimit-mt-decompress=limit.
--no-adjust
Display an error and exit if the memory usage limit cannot be met without adjusting settings that
affect the compressed output. That is, this prevents xz from switching the encoder from
multi-threaded mode to single-threaded mode and from reducing the LZMA2 dictionary size. Even when
this option is used the number of threads may be reduced to meet the memory usage limit as that
won't affect the compressed output.
Automatic adjusting is always disabled when creating raw streams (--format=raw).
-T threads, --threads=threads
Specify the number of worker threads to use. Setting threads to a special value 0 makes xz use up
to as many threads as the processor(s) on the system support. The actual number of threads can be
fewer than threads if the input file is not big enough for threading with the given settings or if
using more threads would exceed the memory usage limit.
The single-threaded and multi-threaded compressors produce different output. Single-threaded
compressor will give the smallest file size but only the output from the multi-threaded compressor
can be decompressed using multiple threads. Setting threads to 1 will use the single-threaded
mode. Setting threads to any other value, including 0, will use the multi-threaded compressor even
if the system supports only one hardware thread. (xz 5.2.x used single-threaded mode in this
situation.)
To use multi-threaded mode with only one thread, set threads to +1. The + prefix has no effect
with values other than 1. A memory usage limit can still make xz switch to single-threaded mode
unless --no-adjust is used. Support for the + prefix was added in xz 5.4.0.
If an automatic number of threads has been requested and no memory usage limit has been specified,
then a system-specific default soft limit will be used to possibly limit the number of threads. It
is a soft limit in sense that it is ignored if the number of threads becomes one, thus a soft
limit will never stop xz from compressing or decompressing. This default soft limit will not make
xz switch from multi-threaded mode to single-threaded mode. The active limits can be seen with xz
--info-memory.
Actuellement, la seule méthode de gestion avec des threads consiste à séparer l'entrée en blocs et
de les compresser indépendamment les uns des autres. La taille par défaut des blocs dépend du
niveau de compression et peut-être remplacée avec l'option --block-size=taille.
Threaded decompression only works on files that contain multiple blocks with size information in
block headers. All large enough files compressed in multi-threaded mode meet this condition, but
files compressed in single-threaded mode don't even if --block-size=size has been used.
The default value for threads is 0. In xz 5.4.x and older the default is 1.
Chaînes de filtres de compresseur personnalisées
A custom filter chain allows specifying the compression settings in detail instead of relying on the
settings associated to the presets. When a custom filter chain is specified, preset options (-0 ... -9
and --extreme) earlier on the command line are forgotten. If a preset option is specified after one or
more custom filter chain options, the new preset takes effect and the custom filter chain options
specified earlier are forgotten.
Une chaîne de filtre est comparable à une redirection (pipe) sur la ligne de commande. Lors de la
compression, les entrées non compressées vont au premier filtre, dont la sortie va au prochain filtre
(s'il y en a). La sortie du dernier filtre est écrite sur le fichier compressé. Le nombre maximal de
filtres dans la chaîne est quatre, mais habituellement, un chaîne de filtre n'a qu'un ou deux filtres.
Beaucoup de filtres ont des limitations sur l'endroit où ils peuvent se placer dans la chaîne de filtre :
quelques filtres ne peuvent fonctionner qu'en tant que dernier filtre dans la chaîne, quelques uns en
tant que non dernier filtre, et d'autres à n'importe quelle position dans la chaîne. Suivant le filtre,
cette limitation est soit inhérente au profil du filtre, soit existe pour des raisons de sécurité.
A custom filter chain can be specified in two different ways. The options --filters=filters and
--filters1=filters ... --filters9=filters allow specifying an entire filter chain in one option using the
liblzma filter string syntax. Alternatively, a filter chain can be specified by using one or more
individual filter options in the order they are wanted in the filter chain. That is, the order of the
individual filter options is significant! When decoding raw streams (--format=raw), the filter chain must
be specified in the same order as it was specified when compressing. Any individual filter or preset
options specified before the full chain option (--filters=filters) will be forgotten. Individual filters
specified after the full chain option will reset the filter chain.
Both the full and individual filter options take filter-specific options as a comma-separated list. Extra
commas in options are ignored. Every option has a default value, so specify those you want to change.
Pour voir l'entièreté de la chaîne de filtres et ses options, utilisez xz -vv (ce qui est comme utiliser
--verbose deux fois). Cela fonctionne aussi pour voir les options de chaîne de filtres utilisées par les
préréglages.
--filters=filters
Specify the full filter chain or a preset in a single option. Each filter can be separated by
spaces or two dashes (--). filters may need to be quoted on the shell command line so it is parsed
as a single option. To denote options, use : or =. A preset can be prefixed with a - and followed
with zero or more flags. The only supported flag is e to apply the same options as --extreme.
--filters1=filters ... --filters9=filters
Specify up to nine additional filter chains that can be used with --block-list.
For example, when compressing an archive with executable files followed by text files, the
executable part could use a filter chain with a BCJ filter and the text part only the LZMA2
filter.
--filters-help
Display a help message describing how to specify presets and custom filter chains in the --filters
and --filters1=filters ... --filters9=filters options, and exit successfully.
--lzma1[=options]
--lzma2[=options]
Ajouter le filtre LZMA1 ou LZMA2 à la chaîne de filtres. Ces filtres ne peuvent être utilisés que
comme dernier filtre dans la chaîne.
LZMA1 est un filtre historique, qui n'est pris en charge presque uniquement à cause de l'ancien
format de fichier .lzma, qui ne prend en charge que LZMA1. LZMA2 est une version mise à jour de
LZMA1 pour régler certains problèmes pratiques de LZMA1. Le format xz utilise LZMA2 et ne prend
pas du tout en charge LZMA1. Les taux et vitesses de compression de LZMA1 et LZMA2 sont
pratiquement identiques.
LZMA1 et LZMA2 partagent le même ensemble d'options :
preset=préréglage
Reset all LZMA1 or LZMA2 options to preset. Preset consist of an integer, which may be
followed by single-letter preset modifiers. The integer can be from 0 to 9, matching the
command line options -0 ... -9. The only supported modifier is currently e, which matches
--extreme. If no preset is specified, the default values of LZMA1 or LZMA2 options are
taken from the preset 6.
dict=taille
La taille du dictionnaire (historique du tampon) indique combien d'octets des données
récement décompressées sont gardés en mémoire. L'algorithme essaie de trouver les séquences
d'octets répétées (identiques) dans les données décompressées et les remplace par les
données actuellement dans le dictionnaire. Plus gros est le dictionnaire, plus grande est
la chance de trouver une correspondance. Ainsi, l'augmentation de la taille du dictionnaire
augmente habituellement le taux de compression, mais un dictionnaire plus gros que le
fichier non compressé est un gachis de mémoire.
Généralement la taille du dictionnaire est entre 64 Kio et 64 Mio. Le minimum étant 4 Kio.
La taille maximale pour la compression est habituellement 1,5 Gio (1536 Mio). Le
décompresseur prend en charge les dictionnaires jusqu'à un octet de moins que 4 Gio, ce qui
est le maximum pour les formats de flux LZMA1 et LZMA2.
La taille du dictionnaire et le chercheur de correspondance (match finder) (mf) déterminent
ensemble l'utilisation de la mémoire de l'encodeur LZMA1 ou LZMA2. La même (ou une plus
grosse) taille de dictionnaire est requise pour décompresser que ce qui a été utilisé pour
la compression, ainsi l'utilisation de la mémoire du décodeur est déterminée par la taille
du dictionnaire utilisée lors de la compression. Les en-têtes de .xz stockent la taille de
dictionnaire sous la forme 2^n ou 2^n + 2^(n-1), de sorte que ces tailles sont quelque peu
préférées pour la compression. Les autres tailles seront arrondies à la hausse lorsque
stockées dans les en-têtes de .xz.
lc=lc Spécifiez le nombre d'octets de contexte littéraux. Le minimum est 0 et le maximum est 4.
La valeur par défaut est 3. En plus, la somme de lc et lp ne doit pas excéder 4.
Tous les octets qui ne peuvent pas être codés comme des correspondances sont codés comme
des littéraux. C'est à dire que les littéraux sont simplement des octets 8 bits encodés un
à la fois.
The literal coding makes an assumption that the highest lc bits of the previous
uncompressed byte correlate with the next byte. For example, in typical English text, an
upper-case letter is often followed by a lower-case letter, and a lower-case letter is
usually followed by another lower-case letter. In the US-ASCII character set, the highest
three bits are 010 for upper-case letters and 011 for lower-case letters. When lc is at
least 3, the literal coding can take advantage of this property in the uncompressed data.
The default value (3) is usually good. If you want maximum compression, test lc=4.
Sometimes it helps a little, and sometimes it makes compression worse. If it makes it
worse, test lc=2 too.
lp=lp Indiquer le nombre de bits de position littérale. Le minimum est 0 et le maximum 4; par
défaut c'est 0.
Lp affecte le type d'alignement dans les données décompressées qui est présumé lors de
l'encodage des littéraux. Voir pb ci dessous pour plus d'information sur l'alignement.
pb=pb Indiquer le nombre de bits de position. Le minimum est 0 et le maximum 4; par défaut 2.
Pb affecte quel genre d'alignement est présumé en général dans les données non compressées.
Par défaut c'est un alignement de quatre octets (2^pb=2^2=4), ce qui est généralement un
bon choix lorsqu'il n'y a pas de meilleure estimation.
When the alignment is known, setting pb accordingly may reduce the file size a little. For
example, with text files having one-byte alignment (US-ASCII, ISO-8859-*, UTF-8), setting
pb=0 can improve compression slightly. For UTF-16 text, pb=1 is a good choice. If the
alignment is an odd number like 3 bytes, pb=0 might be the best choice.
Même si l'alignement présumé peut être ajusté avec pb et lp, LZMA1 et LZMA2 favorisent
toujours légèrement l'alignement sur 16 octets. Il peut être utile d'en tenir compte lors
de la conception de formats de fichiers susceptibles d'être souvent compressés avec LZMA1
ou LZMA2.
mf=mf Match finder has a major effect on encoder speed, memory usage, and compression ratio.
Usually Hash Chain match finders are faster than Binary Tree match finders. The default
depends on the preset: 0 uses hc3, 1–3 use hc4, and the rest use bt4.
Les chercheurs de correspondance suivants sont pris en charge. Les formules d'utilisation
de la mémoire ci-dessous sont des approximations grossières qui sont les plus proches de la
réalité lorsque dict est une puissance de deux.
hc3 Chaîne de hachage avec hachage de 2 et 3 octets
Valeur minimale pour nice : 3
Utilisation de la mémoire :
dict * 7.5 (if dict <= 16 Mio);
dict * 5.5 + 64 MiB (si dict > 16 Mio)
hc4 Chaîne de hachage avec hachage de 2, 3 et 4 octets
Valeur minimale pour nice : 4
Utilisation de la mémoire :
dict * 7.5 (si dict <= 32 Mio);
dict * 6.5 (si dict > 32 Mio)
bt2 Arbre binaire avec hachage de 2 octets
Valeur minimale pour nice : 2
Utilisation de la mémoire : dict * 9.5
bt3 Arbre binaire avec hachage de 2 et 3 octets
Valeur minimale pour nice : 3
Utilisation de la mémoire :
dict * 11.5 (si dict <= 16 Mio);
dict * 9.5 + 64 MiB (si dict > 16 Mio)
bt4 Arbre binaire avec hachage 2, 3 et 4 octets
Valeur minimale pour nice : 4
Utilisation de la mémoire :
dict * 11.5 (si dict <= 32 Mio);
dict * 10.5 (si dict > 32 Mio)
mode=mode
Compression mode specifies the method to analyze the data produced by the match finder.
Supported modes are fast and normal. The default is fast for presets 0–3 and normal for
presets 4–9.
Habituellement, fast est utilisé avec les chercheurs de correspondance de chaîne de hachage
et normal avec les chercheurs de correspondance d'arbre binaire. C'est aussi ce que font
les préréglages.
nice=nice
Spécifier ce qui est considéré comme une bonne longueur pour une correspondance. Une fois
que la correspondance d'au moins nice octets est trouvée, l'algorithme arrête de chercher
de meilleures correspondances possibles.
Nice can be 2–273 bytes. Higher values tend to give better compression ratio at the expense
of speed. The default depends on the preset.
depth=profondeur
Spécifier la profondeur de recherche maximale dans l'outil de recherche de correspondances.
La valeur par défaut est 0, ce qui fait que le compresseur détermine une profondeur
raisonnable en fonction de mf et nice.
Reasonable depth for Hash Chains is 4–100 and 16–1000 for Binary Trees. Using very high
values for depth can make the encoder extremely slow with some files. Avoid setting the
depth over 1000 unless you are prepared to interrupt the compression in case it is taking
far too long.
Lors du décodage des flux bruts (--format=raw), LZMA2 nécessite seulement la taille du
dictionnaire. LZMA1 nécessite aussi lc, lp et pb.
--x86[=options]
--arm[=options]
--armthumb[=options]
--arm64[=options]
--powerpc[=options]
--ia64[=options]
--sparc[=options]
--riscv[=options]
Ajouter un filtre branch/call/jump (BCJ) à la chaîne de filtres. Ces filtres ne peuvent être
utilisés que s'ils ne sont pas le dernier filtre de la chaîne de filtrage.
A BCJ filter converts relative addresses in the machine code to their absolute counterparts. This
doesn't change the size of the data but it increases redundancy, which can help LZMA2 to produce
0–15 % smaller .xz file. The BCJ filters are always reversible, so using a BCJ filter for wrong
type of data doesn't cause any data loss, although it may make the compression ratio slightly
worse. The BCJ filters are very fast and use an insignificant amount of memory.
Ces filtres BCJ présentent des problèmes connus liés au taux de compression :
• Some types of files containing executable code (for example, object files, static libraries,
and Linux kernel modules) have the addresses in the instructions filled with filler values.
These BCJ filters will still do the address conversion, which will make the compression worse
with these files.
• If a BCJ filter is applied on an archive, it is possible that it makes the compression ratio
worse than not using a BCJ filter. For example, if there are similar or even identical
executables then filtering will likely make the files less similar and thus compression is
worse. The contents of non-executable files in the same archive can matter too. In practice one
has to try with and without a BCJ filter to see which is better in each situation.
Different instruction sets have different alignment: the executable file must be aligned to a
multiple of this value in the input data to make the filter work.
Filtre Alignement Notes
x86 1 32 bits ou 64 bits x86
ARM 4
ARM-Thumb 2
ARM64 4 4096-byte alignment is best
PowerPC 4 Grand boutiste seulement
IA-64 16 Itanium
SPARC 4
RISC-V 2
Since the BCJ-filtered data is usually compressed with LZMA2, the compression ratio may be
improved slightly if the LZMA2 options are set to match the alignment of the selected BCJ filter.
Examples:
• IA-64 filter has 16-byte alignment so pb=4,lp=4,lc=0 is good with LZMA2 (2^4=16).
• RISC-V code has 2-byte or 4-byte alignment depending on whether the file contains 16-bit
compressed instructions (the C extension). When 16-bit instructions are used, pb=2,lp=1,lc=3 or
pb=1,lp=1,lc=3 is good. When 16-bit instructions aren't present, pb=2,lp=2,lc=2 is the best.
readelf -h can be used to check if "RVC" appears on the "Flags" line.
• ARM64 is always 4-byte aligned so pb=2,lp=2,lc=2 is the best.
• The x86 filter is an exception. It's usually good to stick to LZMA2's defaults (pb=2,lp=0,lc=3)
when compressing x86 executables.
Tous les filtres BCJ prennent en charge les mêmes options :
start=décalage
Spécifier le décalage de départ qui est utilisé lors de la conversion entre les adresses
relatives et absolues. Le décalage doit être un multiple de l'alignement du filtre (voir la
table ci-dessus). Sa valeur par défaut est zéro. En pratique, cette dernière convient ;
indiquer un décalage personnalisé est la plupart du temps inutile.
--delta[=options]
Ajouter le filtre Delta à la chaîne de filtres. Le filtre Delta ne peut être utilisé que s'il
n'est pas le dernier filtre dans la chaîne.
Currently only simple byte-wise delta calculation is supported. It can be useful when compressing,
for example, uncompressed bitmap images or uncompressed PCM audio. However, special purpose
algorithms may give significantly better results than Delta + LZMA2. This is true especially with
audio, which compresses faster and better, for example, with flac(1).
options prises en charge :
dist=distance
Specify the distance of the delta calculation in bytes. distance must be 1–256. The default
is 1.
Par exemple, avec dist=2 et une entrée huit octets A1 B1 A2 B3 A3 B5 A4 B7, la sortie sera
A1 B1 01 02 01 02 01 02.
Autres options
-q, --quiet
Supprimer les avertissements et les notifications. Indiquer cela deux fois supprimera aussi les
erreurs. Cette option n'a aucun effet sur le statut de sortie. Cela dit, même si un avertissement
était supprimé, le statut de sortie indiquant un avertissement sera encore utilisé.
-v, --verbose
Être bavard. Si l'erreur standard est connectée à un terminal, xz affichera une barre de
progression. Indiquer --verbose deux fois donnera une sortie encore plus bavarde.
La barre de progression montre l'information suivante :
• Le pourcentage de complétion est montré si la taille du fichier en entrée est connue.
Néanmoins, le pourcentage ne peut pas être montré en cas de redirection.
• Quantité de données compressées produites (compression) ou consommées (décompression).
• Quantité de données non compressées consommées (compression) ou produites (décompression).
• Le taux de compression, calculé en divisant la quantité de données compréssées déjà traitées
par la quantité de données décompressées déjà traitées.
• Vitesse de compression ou de décompression. Elle correspond à la quantité de données non
compressées consommées (compression) ou produites (décompression) par seconde. Elle apparait
quelques secondes après le début du traitement du fichier par xz.
• Temps écoulé dans le format M:SS ou H:MM:SS.
• Estimated remaining time is shown only when the size of the input file is known and a couple of
seconds have already passed since xz started processing the file. The time is shown in a less
precise format which never has any colons, for example, 2 min 30 s.
When standard error is not a terminal, --verbose will make xz print the filename, compressed size,
uncompressed size, compression ratio, and possibly also the speed and elapsed time on a single
line to standard error after compressing or decompressing the file. The speed and elapsed time are
included only when the operation took at least a few seconds. If the operation didn't finish, for
example, due to user interruption, also the completion percentage is printed if the size of the
input file is known.
-Q, --no-warn
Ne pas mettre l'état de sortie à 2 même si une condition méritant un avertissement a été détectée.
Cette option n'affecte pas le niveau de verbosité, néanmoins, les deux options --quiet et
--no-warn doivent être utilisées pour ne pas afficher d'avertissements, ni altérer le statut de
sortie.
--robot
Afficher les messages dans un format analysable par une machine. Ceci est destiné à faciliter
l'écriture des frontaux qui voudraient utiliser xz plutôt que liblzma, ce qui pourrait être le cas
pour différents scripts. La sortie avec cette option activée est destinée à rester stable sur les
différentes versions de xz. Consulter le paragraphe ROBOT MODE pour les détails.
--info-memory
Display, in human-readable format, how much physical memory (RAM) and how many processor threads
xz thinks the system has and the memory usage limits for compression and decompression, and exit
successfully.
-h, --help
Afficher un message d'aide décrivant les options les plus couramment utilisées et quitter.
-H, --long-help
Afficher un message d'aide décrivant toutes les options de xz et quitter.
-V, --version
Afficher le numéro de version de xz et de liblzma dans un format lisible par un humain. Pour
obtenir une sortie analysable par la machine, spécifiez --robot avant --version.
MODE ROBOT
The robot mode is activated with the --robot option. It makes the output of xz easier to parse by other
programs. Currently --robot is supported only together with --list, --filters-help, --info-memory, and
--version. It will be supported for compression and decompression in the future.
Mode liste
xz --robot --list utilise une sortie séparée par des tabulations. La première colonne de toutes les
lignes possède une chaîne qui indique le type d'information trouvée sur cette ligne :
name C'est toujours la première ligne au début de la liste d'un fichier. La seconde colonne de la ligne
est le nom de fichier.
file Cette ligne contient l'information globale sur le fichier .xz. Cette ligne est toujours écrite
après la ligne name.
stream Ce type de ligne n'est utilisée que lorsque --verbose a été indiquée. Il y a autant de lignes
stream qu'il y a de flux dans le fichier .xz.
block Ce type de ligne n'est utilisé seulement lorsque --verbose a été indiquée. Il y a autant de lignes
block qu'il y a de blocs dans le fichier .xz. Les lignes block sont affichées après toutes les
lignes stream ; les différents types de lignes ne sont pas imbriqués.
summary
Ce type de ligne n'est utilisé que lorsque --verbose a été indiqué deux fois. Cette ligne est
affichée après toutes les lignes block. Comme la ligne file, la ligne summary contient
l'information globale sur le fichier .xz.
totals Cette ligne est toujours la toute dernière ligne de la sortie. Elle affiche les comptes et les
tailles totaux.
Les colonnes des lignes file :
2. Nombre de flux dans le fichier
3. Nombre total de blocs dans le ou les flux.
4. Taille compressée du fichier
5. Taille décompressée du fichier
6. Compression ratio, for example, 0.123. If ratio is over 9.999, three dashes (---) are
displayed instead of the ratio.
7. Liste de noms de contrôles d'intégrité séparés par des virgules. Les chaînes suivantes sont
utilisées pour les types de vérification connus : None, CRC32, CRC64 et SHA256. Pour le types
de vérification inconnus, Unknown-N est utilisé, où N est un identifiant de vérification sous
la forme d'un nombre décimal (un ou deux chiffres).
8. Taille totale du remplissage du flux dans le fichier
Les colonnes des lignes stream :
2. Numéro de flux (le premier flux a le numéro 1)
3. Nombre de blocs dans le flux
4. Décalage de départ compressé
5. Décalage de départ décompressé
6. Taille compressée (ne comprend pas le remplissage du flux)
7. Taille décompressée
8. Taux de compression
9. Nom de la vérification d'intégrité
10. Taille du remplissage de flux
Les colonnes des lignes block :
2. Numéro du flux qui contient ce bloc
3. Numéro du bloc relatif au commencement du flux (le premier bloc a pour numéro 1)
4. Numéro du bloc relatif au début du fichier
5. Décalage de départ compressé relatif au début du fichier
6. Décalage de départ décompressé relatif au début du fichier
7. Taille compressée totale du bloc (en-têtes inclus)
8. Taille décompressée
9. Taux de compression
10. Nom de la vérification d'intégrité
Si --verbose a été indiqué deux fois, les colonnes additionnelles sont inclues sur les lignes block.
Elles ne sont pas affichées avec un seul --verbose, car l'obtention de ces informations nécessite de
nombreuses recherches et peut donc être lente :
11. Valeur de la vérification d'intégrité en hexadécimal
12. Taille d'en-tête de bloc
13. Drapeaux du bloc : c indique que la taille compressée est présente, et u indique que la taille
décompréssée est présente. Si le drapeau n'est pas indiqué, un tiret (-) est affiché à la
place pour que la longueur de la chaîne reste fixe. De nouveaux drapeaux pourraient être
ajoutés à la fin de la chaîne dans le futur.
14. Taille des données effectivement compressées dans le bloc (en excluant l'en-tête de bloc, le
remplissage de bloc et les champs de vérification).
15. Quantité de mémoire (en octets) nécessaire pour décompresser ce bloc avec cette version de xz.
16. Chaîne de filtrage. Remarquez que la plupart des options utilisées au moment de la compression
ne peuvent pas être connues, car seules les options nécessaires pour la décompression sont
stockées dans les en-têtes .xz.
Les colonnes des lignes summary :
2. Quantité de mémoire (en octets) nécessaire pour décompresser ce fichier avec cette version de
xz.
3. yes ou no indique si tous les en-têtes de bloc stockent à la fois la taille compressée et la
taille décompressée.
Depuis xz 5.1.2alpha:
4. Version minimale de xz nécessaire pour décompresser le fichier.
Les colonnes de la ligne totals :
2. Nombre de flux
3. Nombre de blocs
4. Taille compressée
5. Taille décompressée
6. Taux de compression moyen
7. Liste séparée par des virgules des noms de vérification d'intégrité qui étaient présents dans
les fichiers
8. Taille de remplissage de flux
9. Nombre de fichiers. Permet de garder l'ordre des colonnes précédentes comme sur les lignes
file.
Si --verbose a été indiqué deux fois, des colonnes supplémentaires sont incluses sur la ligne totals :
10. Quantité maximale de mémoire (en octets) nécessaire pour décompresser les fichiers avec cette
version de xz.
11. yes ou no indique si tous les en-têtes de bloc stockent à la fois la taille compressée et la
taille décompressée.
Depuis xz 5.1.2alpha:
12. Version minimale de xz nécessaire pour décompresser le fichier.
Les versions futures pourront ajouter de nouveaux types de lignes et de nouvelles colonnes pourront être
ajoutées aux types de lignes existants, mais les colonnes existantes ne seront pas modifiées.
Filters help
xz --robot --filters-help prints the supported filters in the following format:
filter:option=<value>,option=<value>...
filter Name of the filter
option Name of a filter specific option
value Numeric value ranges appear as <min-max>. String value choices are shown within < > and separated
by a | character.
Each filter is printed on its own line.
Information de limite de mémoire
xz --robot --info-memory prints a single line with multiple tab-separated columns:
1. Total amount of physical memory (RAM) in bytes.
2. Memory usage limit for compression in bytes (--memlimit-compress). A special value of 0 indicates the
default setting which for single-threaded mode is the same as no limit.
3. Memory usage limit for decompression in bytes (--memlimit-decompress). A special value of 0 indicates
the default setting which for single-threaded mode is the same as no limit.
4. Since xz 5.3.4alpha: Memory usage for multi-threaded decompression in bytes
(--memlimit-mt-decompress). This is never zero because a system-specific default value shown in the
column 5 is used if no limit has been specified explicitly. This is also never greater than the value
in the column 3 even if a larger value has been specified with --memlimit-mt-decompress.
5. Since xz 5.3.4alpha: A system-specific default memory usage limit that is used to limit the number of
threads when compressing with an automatic number of threads (--threads=0) and no memory usage limit
has been specified (--memlimit-compress). This is also used as the default value for
--memlimit-mt-decompress.
6. Since xz 5.3.4alpha: Number of available processor threads.
Dans le futur, la sortie de xz --robot --info-memory pourrait avoir plus de colonnes, mais jamais plus
qu'une ligne unique.
Version
xz --robot --version prints the version number of xz and liblzma in the following format:
XZ_VERSION=XYYYZZZS
LIBLZMA_VERSION=XYYYZZZS
X Version majeure.
YYY Version mineure. Les numéros pairs sont stables. Les numéros impairs sont des versions alpha ou
beta.
ZZZ Niveau de correctif pour les options stables ou juste un compteur pour les options de
développement.
S Stabilité. 0 est alpha, 1 est bêta et 2 est stable. S devrait toujours être 2 quand YYY est pair.
XYYYZZZS sont identiques sur les deux lignes si xz et liblzma sont issus de la même version d'utilitaires
XZ.
Exemples : 4.999.9beta est 49990091 et 5.0.0 est 50000002.
STATUT DE SORTIE
0 Tout est bon.
1 Une erreur est survenue.
2 Quelquechose méritant un avertissement s'est produit, mais aucune erreur véritable n'est survenue.
Les notifications (pas les avertissements ou les erreurs) affichées sur l'erreur standard n'affectent pas
le statut de sortie.
ENVIRONNEMENT
xz analyse les listes d'options séparées par des espaces à partir des variables d'environnement
XZ_DEFAULTS et XZ_OPT, dans cet ordre, avant d'analyser les options de la ligne de commandes. Remarquez
que seules les options sont analysées depuis l'environnement des variables ; toutes les non-options sont
ignorées silencieusement. L'analyse est faite avec getopt_long(3) qui est aussi utilisé pour les
arguments de la ligne de commandes.
XZ_DEFAULTS
Options par défaut propres à l'utilisateur ou pour tout le système. Elles sont le plus souvent
définies dans un script d'initialisation de l'interpréteur pour activer le limiteur d'utilisation
de la mémoire de xz par défaut. A part pour les scripts d'initialisation de l'interpréteur ou des
cas similaires, les sripts ne doivent jamais définir ou désactiver XZ_DEFAULTS.
XZ_OPT This is for passing options to xz when it is not possible to set the options directly on the xz
command line. This is the case when xz is run by a script or tool, for example, GNU tar(1):
XZ_OPT=-2v tar caf foo.tar.xz foo
Scripts may use XZ_OPT, for example, to set script-specific default compression options. It is
still recommended to allow users to override XZ_OPT if that is reasonable. For example, in sh(1)
scripts one may use something like this:
XZ_OPT=${XZ_OPT-"-7e"}
export XZ_OPT
Compatibilité des utilitaires LZMA
La syntaxe de la ligne de commande de xz est quasimment un sur-ensemble de lzma, unlzma et lzcat comme
ils sont trouvés dans les utilitaires LZMA 4.32.x . Dans la pluspart des cas, il est possible de
remplacer les outils LZMA par les outils XZ sans casser les scripts existants. Il existe cependant
certaines incompatibilités qui peuvent parfois poser des problèmes.
Niveaux de préréglage de la compression
La numérotation des préréglages de niveau de compression est différente entre les outils xz et LZMA. La
différence la plus importante est la manière dont les tailles de dictionnaire sont affectées aux
différents préréglages. La taille de dictionnaire est à peu près égale à celle d'utilisation de la
mémoire de la décompression.
Niveau xz Utilitaires LZMA
-0 256 KiB N/A
-1 1 MiB 64 KiB
-2 2 MiB 1 MiB
-3 4 MiB 512 KiB
-4 4 MiB 1 MiB
-5 8 MiB 2 MiB
-6 8 MiB 4 MiB
-7 16 MiB 8 MiB
-8 32 MiB 16 MiB
-9 64 MiB 32 MiB
Les différences de tailles des dictionnaires affectent aussi l'utilisation de la mémoire du compresseur,
mais il y a quelques autres différences entre les outils LZMA et les outils XZ, qui rendent la différence
encore plus grande :
Niveau xz Utilitaires LZMA 4.32.x
-0 3 MiB N/A
-1 9 MiB 2 MiB
-2 17 MiB 12 MiB
-3 32 MiB 12 MiB
-4 48 MiB 16 MiB
-5 94 MiB 26 MiB
-6 94 MiB 45 MiB
-7 186 MiB 83 MiB
-8 370 MiB 159 MiB
-9 674 MiB 311 MiB
Le niveau de préréglage par défaut dans les outils LZMA est -7 alors que pour les outils XZ c'est -6, les
deux utilisent ainsi un dictionnaire de 8 Mio par défaut.
Fichiers .lzma en flux ou non
The uncompressed size of the file can be stored in the .lzma header. LZMA Utils does that when
compressing regular files. The alternative is to mark that uncompressed size is unknown and use
end-of-payload marker to indicate where the decompressor should stop. LZMA Utils uses this method when
uncompressed size isn't known, which is the case, for example, in pipes.
xz prend en charge la décompression des fichiers .lzma avec ou sans marqueur de fin de charge utile, mais
tous les fichiers .lzma créés par xz utiliseront un marqueur de fin de charge utile et ont la taille non
compréssée marquée comme inconnue dans l'en-tête .lzma. Cela peut être un problème dans quelques
situations inhabituelles. Par exemple, un décompresseur .lzma dans un périphérique embarqué pourrait ne
fonctionner qu'avec des fichiers dont la taille non comprimée est connue. Si vous vous heurtez à ce
problème, vous devez utiliser les utilitaires LZMA ou LZMA SDK pour créer des fichiers .lzma avec une
taille non compressée connue.
Fichiers .lzma non pris en charge
Le format .lzma autorise des valeurs lc jusqu'à 8, et des valeurs lp jusqu'à 4. Les outils LZMA peuvent
décompresser des fichiers avec tous les lc et lp, mais créez toujours les fichiers avec lc=3 et lp=0.
Créer des fichiers avec d'autres valeurs lc et lp est possible avec xz et avec LZMA SDK.
L'implémentation du filtre LZMA1 dans liblzma nécessite que la somme de lc et lp soit inférieure ou égale
à 4. Ainsi, les fichiers .lzma qui excèdent cette limitation ne peuvent pas être décompressés avec xz.
Les outils LZMA créent seulement des fichiers .lzma qui ont une taille de dictionnaire de 2^n (une
puissance de 2) mais acceptent les fichiers avec toutes les tailles de dictionnaire. Libzlma n'accepte
que les fichiers .lzma qui ont une taille dictionnaire de 2^n ou 2^n + 2^(n-1). Cela afin de diminuer les
faux positifs lors de la détection des fichiers .lzma.
Ces limitations ne devraient pas poser problème en pratique, car pratiquement tous les fichiers .lzma ont
été compressés avec des réglages que liblzma accepte.
Déchets excédentaires
Lors de la décompession, l'utilitaire LZMA ignore silencieusement tout ce qui est après le premier flux
.lzma. Dans la majorité des situations, c'est un bogue. Cela veut dire aussi que les outils LZMA ne
gèrent pas la décompression de fichiers .lzma concaténés.
S'il reste des données après le premier flux .lzma, xz considère que le fichier est corrompu sauf si
--single-stream a été utilisé. Cela peut casser des scripts obscurs qui ont supposé que les déchets de
fin de ligne sont ignorés.
NOTES
La sortie compressée peut varier
La sortie compressée exacte produite par les même fichiers non compressés en entrée peut varier en
fonction des différentes versions de l'utilitaire XZ, même si les options de compression sont identiques.
En effet, il est possible d'améliorer l'encodeur (compression plus rapide ou meilleure) sans affecter le
format du fichier. La sortie peut même varier entre différentes compilations de la même version
d'utilitaire XZ, si des options de construction différentes sont utilisées.
Cela signifie qu'une fois que --rsyncable a été implémenté, les fichiers résultants ne seront pas
nécessairement synchronisables avec rsync à moins que les nouveaux et anciens fichiers n'aient été
compressés avec la même version de xz. Ce problème peut être résolu si une partie de l'implémentation est
gelée pour garantir la stabilité de la sortie rsyncable à travers les versions de xz.
Décompresseurs .xz embarqués
Les implémentations de décompresseur embarqué comme XZ Embedded ne gèrent pas nécessairement les fichiers
créés avec d'autres types de vérification d'intégrité que none et CRC32. Comme la valeur par défaut est
--check=crc64, vous devez utiliser --check=none ou --check=crc32 lors de la création de fichiers pour les
systèmes embarqués.
En dehors des systèmes embarqués, tous les décompresseurs de format .xz gèrent tous les types de
vérification ou sont au moins capables de décompresser le fichier sans effectuer la vérification
d'intégrité si ce type de vérification particulière n'est pas pris en charge.
XZ Embedded prend en charge les filtres BCJ, mais seulement avec le décalage de départ par défaut.
EXEMPLES
Bases
Compresser le fichier toto en toto.xz en utilisant le niveau de compression par défaut (-6) et supprimer
toto si la compression réussit :
xz foo
Décompresser bidule.xz en bidule et ne pas supprimer bidule.xz même si la compression réussit :
xz -dk bar.xz
Create baz.tar.xz with the preset -4e (-4 --extreme), which is slower than the default -6, but needs less
memory for compression and decompression (48 MiB and 5 MiB, respectively):
tar cf - baz | xz -4e > baz.tar.xz
Un mélange de fichiers compressés et non compressés peuvent être décompressés vers la sortie standard
avec une simple commande :
xz -dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt
Compression en parallèle de plusieurs fichiers
Sur GNU et *BSD, find(1) et xargs(1) peuvent être utilisés pour mettre en parallèle la compression de
plusieurs fichiers :
find . -type f \! -name '*.xz' -print0 \
| xargs -0r -P4 -n16 xz -T1
L'option P passée à xargs(1) fixe le nombre de processus xz en parallèles. La meilleure valeur pour
l'option n dépend du nombre de fichiers à compresser. S-il n'y a que quelques fichiers, la valeur sera
probablement 1 ; avec des dizaines de milliers de fichiers, 100 ou même plus serait approprié pour
réduire le nombre de processus xz que xargs(1) créera éventuellement.
L'option -T1 de xz est là pour le forcer en mode mono-thread, car xargs(1) est utilisé pour contrôler la
quantité de mise en parallèle.
Mode robot
Calculer combien d'octets ont été économisés au total après avoir compressé plusieurs fichiers :
xz --robot --list *.xz | awk '/^totals/{print $5-$4}'
Un script peut vouloir savoir qu'il utilise une version suffisamment récente de xz. Le script sh(1)
suivant vérifie que le numéro de version de l'outil xz soit au minimum 5.0.0. Cette méthode est
compatible avec les vieilles versions bêta, qui ne gèrent pas l'option --robot :
if ! eval "$(xz --robot --version 2> /dev/null)" ||
[ "$XZ_VERSION" -lt 50000002 ]; then
echo "Your xz is too old."
fi
unset XZ_VERSION LIBLZMA_VERSION
Régler une limite d'utilisation de la mémoire pour la décompression en utilisant XZ_OPT, mais si une
limite a déjà été définie, ne pas l'augmenter :
NEWLIM=$((123 << 20)) # 123 MiB
OLDLIM=$(xz --robot --info-memory | cut -f3)
if [ $OLDLIM -eq 0 -o $OLDLIM -gt $NEWLIM ]; then
XZ_OPT="$XZ_OPT --memlimit-decompress=$NEWLIM"
export XZ_OPT
fi
Chaînes de filtres de compresseur personnalisées
L'utilisation la plus simple des chaînes de filtres personnalisées est la personnalisation d'un
préréglage LZMA2. Cela peut être utile, car les préréglages ne couvrent qu'un sous-ensemble des réglages
de compression potentiellement utiles.
Les colonnes CompCPU des tableaux des descriptions des options -0 à -9 et --extreme sont utiles lors de
la personnalisation des préréglages LZMA2. Voici les parties pertinentes recueillies à partir de ces deux
tableaux :
Préréglage CompCPU
-0 0
-1 1
-2 2
-3 3
-4 4
-5 5
-6 6
-5e 7
-6e 8
If you know that a file requires somewhat big dictionary (for example, 32 MiB) to compress well, but you
want to compress it quicker than xz -8 would do, a preset with a low CompCPU value (for example, 1) can
be modified to use a bigger dictionary:
xz --lzma2=preset=1,dict=32MiB foo.tar
Avec certains fichiers, la commande ci-dessus peut être plus rapide que xz-6 tout en compressant bien
mieux. Cependant, il faut souligner que seuls certains fichiers bénéficient d'un grand dictionnaire tout
en gardant la valeur de CompCPU faible. La siutation la plus évidente où un gros dictionnaire peut
baucoup aider, est une archive contenant des fichiers très similaires de quelques megaoctets chacun. La
taille de dictionnaire doit être significativement plus grosse que tout fichier individuel pour permettre
à LZMA2 de tirer pleinement partie des similarités entre des fichiers consécutifs.
Si une utilisation de la mémoire élevée pour la compression et décompression convient, et que le fichier
à compresser a une taille de plusieurs centaines de megaoctets, il peut être utile d'utiliser un plus
gros dictionnaire que celui fourni par xz-9 (64 Mio) :
xz -vv --lzma2=dict=192MiB big_foo.tar
Utiliser -vv (--verbose--verbose) comme dans l'exemple ci-dessus peut être utile pour voir les besoins en
mémoire du compresseur et du décompresseur. Rappelez-vous qu'utiliser un dictionnaire plus gros que la
taille du fichier non compressé est un gachis de mémoire, donc la commande ci-dessus n'est pas utile pour
les petits fichiers.
Sometimes the compression time doesn't matter, but the decompressor memory usage has to be kept low, for
example, to make it possible to decompress the file on an embedded system. The following command uses -6e
(-6 --extreme) as a base and sets the dictionary to only 64 KiB. The resulting file can be decompressed
with XZ Embedded (that's why there is --check=crc32) using about 100 KiB of memory.
xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo
If you want to squeeze out as many bytes as possible, adjusting the number of literal context bits (lc)
and number of position bits (pb) can sometimes help. Adjusting the number of literal position bits (lp)
might help too, but usually lc and pb are more important. For example, a source code archive contains
mostly US-ASCII text, so something like the following might give slightly (like 0.1 %) smaller file than
xz -6e (try also without lc=4):
xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar
Using another filter together with LZMA2 can improve compression with certain file types. For example, to
compress a x86-32 or x86-64 shared library using the x86 BCJ filter:
xz --x86 --lzma2 libfoo.so
Notez que l'ordre des options de filtre est significatif. Si --x86 est indiqué après --lzma2, xz donnera
une erreur, car il ne peut y avoir aucun filtre après LZMA2, et aussi parce que le filtre BCJ x86 ne peut
pas être utilisé comme dernier filtre dans la chaîne.
Le filtre Delta associé à LZMA2 peut donner de bons résultats avec les images bitmap. Cela devrait
habituellement battre PNG, qui a quelques filtres avancés supplémentaires qu'un simple delta, mais qui
utilise Deflate pour la compression effective.
The image has to be saved in uncompressed format, for example, as uncompressed TIFF. The distance
parameter of the Delta filter is set to match the number of bytes per pixel in the image. For example,
24-bit RGB bitmap needs dist=3, and it is also good to pass pb=0 to LZMA2 to accommodate the three-byte
alignment:
xz --delta=dist=3 --lzma2=pb=0 foo.tiff
If multiple images have been put into a single archive (for example, .tar), the Delta filter will work on
that too as long as all images have the same number of bytes per pixel.
VOIR AUSSI
xzdec(1), xzdiff(1), xzgrep(1), xzless(1), xzmore(1), gzip(1), bzip2(1), 7z(1)
XZ Utils: <https://tukaani.org/xz/>
XZ Embedded: <https://tukaani.org/xz/embedded.html>
LZMA SDK: <https://7-zip.org/sdk.html>
Tukaani 2024-04-08 XZ(1)