xz, unxz, xzcat, lzma, unlzma, lzcat - Compresser ou décompresser des
fichiers .xz et .lzma
xz [
option...] [
fichier...]
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.
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.
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.
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.
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.
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.
-
-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.
-
-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 contient les besoins en mémoire du
compresseur en mode mono-thread . Cela devrait à peine varier entre
les versions de xz. Les besoins en mémoire de quelques uns
des futurs modes multi-thread devraient sensiblement augmenter par rapport
au mode mono-thread.
- •
- 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.
-
-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. The sizes of the blocks are stored in
the block headers, which a future version of xz will use for
multi-threaded decompression.
-
- Par défaut, il n'y a pas de répartition de
bloc en mode mono-thread. Régler cette option n'affecte pas
l'utilisation de la mémoire. Aucune information de taille n'est
stockée dans l'en-tête de bloc, par conséquent les
fichiers créés en mode single-thread ne seront pas
identiques aux fichiers créés en mode multi-thread. Le
manque d'information de taille signifie aussi qu'une future version de
xz ne sera pas capable de décompresser les fichiers en mode
multi-thread.
-
--block-list=tailles
- Lors de la compression dans le format .xz, commencer
un nouveau bloc après les intervalles donnés des
données non compressées.
-
- Les tailles non-compressées des blocs sont
spécifiées sous forme de liste séparée par des
virgules. Omettre une taille (deux ou plus virgules consécutives)
est un raccourci pour utiliser la taille du bloc
précédent.
-
- Si le fichier en entrée est plus grand que la somme
des tailles, la dernière valeur est
répétée jusqu'à la fin du fichier. Une valeur
spéciale de 0 peut être utilisée comme
étant la dernière valeur pour indiquer que le reste du
fichier devrait être encodé comme un simple bloc.
-
- Si on spécifie des tailles qui
excèdent la taille du bloc de l'encodeur (soit la valeur en mode
threadé, soit la valeur spécifiée avec
--block-size= taille), l'encodeur créera des blocs
supplémentaires tout en gardant les limites indiquées dans
tailles. Par exemple, si on indique
--block-size=10MiB--block-list=5MiB,10MiB,8MiB,12MiB,24MiB
et que le fichier fait 80Mio, on aura 11 blocs de 5, 10, 8, 2, 10, 10, 4,
10, 10, et 1 Mio.
-
- 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.
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é.
Une chaîne de filtres personnalisée est indiquée en
utilisant une ou plusieurs options de filtre dans l'ordre où elles sont
souhaitées dans la chaîne de filtres. Cela fait, l'ordre des
options de filtre est significatif! Lors du décodage des flux bruts (
--format=raw), le filtre de chaîne est indiqué dans le
même ordre qu'il fût indiqué lors de la compression.
Les filtres prennent des
options spécifiques aux filtres sous la
forme d'une liste séparée par des virgules. Les virgules
supplémentaires dans les
options sont ignorées. Toutes
les options ont une valeur par défaut, donc vous ne devez indiquer que
celles que vous voulez changer.
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.
-
--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]
- 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 |
|
-
- 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. For example,
with the IA-64 filter, it's good to set pb=4 or even
pb=4,lp=4,lc=0 with LZMA2 (2^4=16). The x86 filter is an exception;
it's usually good to stick to LZMA2's default four-byte alignment 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.
-
-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.
Le mode robot est activé avec l'option
--robot. Cela rend la
sortie de
xz plus facile à analyser par d'autres programmes.
Actuellement,
--robot n'est seulement pris en charge qu'avec
--version,
--info-memory et
--list. Il sera pris en
charge pour la compression et la décompression dans le futur.
xz --robot --version affichera le numéro de version de
xz
et liblzma dans le format suivant :
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.
xz --robot --info-memory affiche une seule ligne avec trois colonnes
séparées par des tabulations :
- 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.
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.
- 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.
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
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.
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.
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.
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.
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.
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.
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.
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 :
Décompresser
bidule.xz en
bidule et ne pas supprimer
bidule.xz même si la compression réussit :
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 - truc | xz -4e > truc.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
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.
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 "Votre version de xz est trop ancienne." 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
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 toto.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 gros_toto.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 toto
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 code_source.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 libtoto.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 toto.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.
xzdec(1),
xzdiff(1),
xzgrep(1),
xzless(1),
xzmore(1),
gzip(1),
bzip2(1),
7z(1)
XZ Utilitaires: <
https://tukaani.org/xz/>
XZ Embarqué: <
https://tukaani.org/xz/embedded.html>
LZMA SDK: <
http://7-zip.org/sdk.html>