'\" t
.\"
.\" Author: Lasse Collin
.\"
.\" This file has been put into the public domain.
.\" You can do whatever you want with this file.
.\"
.TH XZ 1 "2013-10-25" "Tukaani" "XZ Utils"
.
.SH NAME
xz, unxz, xzcat, lzma, unlzma, lzcat \- Compress or decompress .xz and .lzma files
.
.SH SYNOPSIS
.B xz
.RI [ option... ]
.RI [ file... ]
.
.SH COMMAND ALIASES
.B unxz
is equivalent to
.BR "xz \-\-decompress" .
.br
.B xzcat
is equivalent to
.BR "xz \-\-decompress \-\-stdout" .
.br
.B lzma
is equivalent to
.BR "xz \-\-format=lzma" .
.br
.B unlzma
is equivalent to
.BR "xz \-\-format=lzma \-\-decompress" .
.br
.B lzcat
is equivalent to
.BR "xz \-\-format=lzma \-\-decompress \-\-stdout" .
.PP
When writing scripts that need to decompress files,
it is recommended to always use the name
.B xz
with appropriate arguments
.RB ( "xz \-d"
or
.BR "xz \-dc" )
instead of the names
.B unxz
and
.BR xzcat .
.
.SH DESCRIPTION
.B xz
is a general-purpose data compression tool with
command line syntax similar to
.BR gzip (1)
and
.BR bzip2 (1).
The native file format is the
.B .xz
format, but the legacy
.B .lzma
format used by LZMA Utils and
raw compressed streams with no container format headers
are also supported.
.PP
.B xz
compresses or decompresses each
.I file
according to the selected operation mode.
If no
.I files
are given or
.I file
is
.BR \- ,
.B xz
reads from standard input and writes the processed data
to standard output.
.B xz
will refuse (display an error and skip the
.IR file )
to write compressed data to standard output if it is a terminal.
Similarly,
.B xz
will refuse to read compressed data
from standard input if it is a terminal.
.PP
Unless
.B \-\-stdout
is specified,
.I files
other than
.B \-
are written to a new file whose name is derived from the source
.I file
name:
.IP \(bu 3
When compressing, the suffix of the target file format
.RB ( .xz
or
.BR .lzma )
is appended to the source filename to get the target filename.
.IP \(bu 3
When decompressing, the
.B .xz
or
.B .lzma
suffix is removed from the filename to get the target filename.
.B xz
also recognizes the suffixes
.B .txz
and
.BR .tlz ,
and replaces them with the
.B .tar
suffix.
.PP
If the target file already exists, an error is displayed and the
.I file
is skipped.
.PP
Unless writing to standard output,
.B xz
will display a warning and skip the
.I file
if any of the following applies:
.IP \(bu 3
.I File
is not a regular file.
Symbolic links are not followed,
and thus they are not considered to be regular files.
.IP \(bu 3
.I File
has more than one hard link.
.IP \(bu 3
.I File
has setuid, setgid, or sticky bit set.
.IP \(bu 3
The operation mode is set to compress and the
.I file
already has a suffix of the target file format
.RB ( .xz
or
.B .txz
when compressing to the
.B .xz
format, and
.B .lzma
or
.B .tlz
when compressing to the
.B .lzma
format).
.IP \(bu 3
The operation mode is set to decompress and the
.I file
doesn't have a suffix of any of the supported file formats
.RB ( .xz ,
.BR .txz ,
.BR .lzma ,
or
.BR .tlz ).
.PP
After successfully compressing or decompressing the
.IR file ,
.B xz
copies the owner, group, permissions, access time,
and modification time from the source
.I file
to the target file.
If copying the group fails, the permissions are modified
so that the target file doesn't become accessible to users
who didn't have permission to access the source
.IR file .
.B xz
doesn't support copying other metadata like access control lists
or extended attributes yet.
.PP
Once the target file has been successfully closed, the source
.I file
is removed unless
.B \-\-keep
was specified.
The source
.I file
is never removed if the output is written to standard output.
.PP
Sending
.B SIGINFO
or
.B SIGUSR1
to the
.B xz
process makes it print progress information to standard error.
This has only limited use since when standard error
is a terminal, using
.B \-\-verbose
will display an automatically updating progress indicator.
.
.SS "Memory usage"
The memory usage of
.B xz
varies from a few hundred kilobytes to several gigabytes
depending on the compression settings.
The settings used when compressing a file determine
the memory requirements of the decompressor.
Typically the decompressor needs 5\ % to 20\ % of
the amount of memory that the compressor needed when
creating the file.
For example, decompressing a file created with
.B xz \-9
currently requires 65\ MiB of memory.
Still, it is possible to have
.B .xz
files that require several gigabytes of memory to decompress.
.PP
Especially users of older systems may find
the possibility of very large memory usage annoying.
To prevent uncomfortable surprises,
.B 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 (e.g. using
.BR ulimit (1)
to limit virtual memory tends to cripple
.BR mmap (2)).
.PP
The memory usage limiter can be enabled with
the command line option \fB\-\-memlimit=\fIlimit\fR.
Often it is more convenient to enable the limiter
by default by setting the environment variable
.BR XZ_DEFAULTS ,
e.g.\&
.BR XZ_DEFAULTS=\-\-memlimit=150MiB .
It is possible to set the limits separately
for compression and decompression
by using \fB\-\-memlimit\-compress=\fIlimit\fR and
\fB\-\-memlimit\-decompress=\fIlimit\fR.
Using these two options outside
.B XZ_DEFAULTS
is rarely useful because a single run of
.B xz
cannot do both compression and decompression and
.BI \-\-memlimit= limit
(or \fB\-M\fR \fIlimit\fR)
is shorter to type on the command line.
.PP
If the specified memory usage limit is exceeded when decompressing,
.B xz
will display an error and decompressing the file will fail.
If the limit is exceeded when compressing,
.B xz
will try to scale the settings down so that the limit
is no longer exceeded (except when using \fB\-\-format=raw\fR
or \fB\-\-no\-adjust\fR).
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, e.g. if the limit is
only slightly less than the amount required for
.BR "xz \-9" ,
the settings will be scaled down only a little,
not all the way down to
.BR "xz \-8" .
.
.SS "Concatenation and padding with .xz files"
It is possible to concatenate
.B .xz
files as is.
.B xz
will decompress such files as if they were a single
.B .xz
file.
.PP
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 e.g. if the
.B .xz
file is stored on a medium that measures file sizes
in 512-byte blocks.
.PP
Concatenation and padding are not allowed with
.B .lzma
files or raw streams.
.
.SH OPTIONS
.
.SS "Integer suffixes and special values"
In most places where an integer argument is expected,
an optional suffix is supported to easily indicate large integers.
There must be no space between the integer and the suffix.
.TP
.B KiB
Multiply the integer by 1,024 (2^10).
.BR Ki ,
.BR k ,
.BR kB ,
.BR K ,
and
.B KB
are accepted as synonyms for
.BR KiB .
.TP
.B MiB
Multiply the integer by 1,048,576 (2^20).
.BR Mi ,
.BR m ,
.BR M ,
and
.B MB
are accepted as synonyms for
.BR MiB .
.TP
.B GiB
Multiply the integer by 1,073,741,824 (2^30).
.BR Gi ,
.BR g ,
.BR G ,
and
.B GB
are accepted as synonyms for
.BR GiB .
.PP
The special value
.B max
can be used to indicate the maximum integer value
supported by the option.
.
.SS "Operation mode"
If multiple operation mode options are given,
the last one takes effect.
.TP
.BR \-z ", " \-\-compress
Compress.
This is the default operation mode when no operation mode option
is specified and no other operation mode is implied from
the command name (for example,
.B unxz
implies
.BR \-\-decompress ).
.TP
.BR \-d ", " \-\-decompress ", " \-\-uncompress
Decompress.
.TP
.BR \-t ", " \-\-test
Test the integrity of compressed
.IR files .
This option is equivalent to
.B "\-\-decompress \-\-stdout"
except that the decompressed data is discarded instead of being
written to standard output.
No files are created or removed.
.TP
.BR \-l ", " \-\-list
Print information about compressed
.IR files .
No uncompressed output is produced,
and no files are created or removed.
In list mode, the program cannot read
the compressed data from standard
input or from other unseekable sources.
.IP ""
The default listing shows basic information about
.IR files ,
one file per line.
To get more detailed information, use also the
.B \-\-verbose
option.
For even more information, use
.B \-\-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 e.g.\&
.B "less\ \-S"
may be convenient if the terminal isn't wide enough.
.IP ""
The exact output may vary between
.B xz
versions and different locales.
For machine-readable output,
.B \-\-robot \-\-list
should be used.
.
.SS "Operation modifiers"
.TP
.BR \-k ", " \-\-keep
Don't delete the input files.
.TP
.BR \-f ", " \-\-force
This option has several effects:
.RS
.IP \(bu 3
If the target file already exists,
delete it before compressing or decompressing.
.IP \(bu 3
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.
.IP \(bu 3
When used with
.B \-\-decompress
.BR \-\-stdout
and
.B xz
cannot recognize the type of the source file,
copy the source file as is to standard output.
This allows
.B xzcat
.B \-\-force
to be used like
.BR cat (1)
for files that have not been compressed with
.BR xz .
Note that in future,
.B xz
might support new compressed file formats, which may make
.B xz
decompress more types of files instead of copying them as is to
standard output.
.BI \-\-format= format
can be used to restrict
.B xz
to decompress only a single file format.
.RE
.TP
.BR \-c ", " \-\-stdout ", " \-\-to\-stdout
Write the compressed or decompressed data to
standard output instead of a file.
This implies
.BR \-\-keep .
.TP
.B \-\-single\-stream
Decompress only the first
.B .xz
stream, and
silently ignore possible remaining input data following the stream.
Normally such trailing garbage makes
.B xz
display an error.
.IP ""
.B xz
never decompresses more than one stream from
.B .lzma
files or raw streams, but this option still makes
.B xz
ignore the possible trailing data after the
.B .lzma
file or raw stream.
.IP ""
This option has no effect if the operation mode is not
.B \-\-decompress
or
.BR \-\-test .
.TP
.B \-\-no\-sparse
Disable creation of sparse files.
By default, if decompressing into a regular file,
.B xz
tries to make the file sparse if the decompressed data contains
long sequences of binary zeros.
It also works when writing to standard output
as long as standard output is connected to a regular file
and certain additional conditions are met to make it safe.
Creating sparse files may save disk space and speed up
the decompression by reducing the amount of disk I/O.
.TP
\fB\-S\fR \fI.suf\fR, \fB\-\-suffix=\fI.suf
When compressing, use
.I .suf
as the suffix for the target file instead of
.B .xz
or
.BR .lzma .
If not writing to standard output and
the source file already has the suffix
.IR .suf ,
a warning is displayed and the file is skipped.
.IP ""
When decompressing, recognize files with the suffix
.I .suf
in addition to files with the
.BR .xz ,
.BR .txz ,
.BR .lzma ,
or
.B .tlz
suffix.
If the source file has the suffix
.IR .suf ,
the suffix is removed to get the target filename.
.IP ""
When compressing or decompressing raw streams
.RB ( \-\-format=raw ),
the suffix must always be specified unless
writing to standard output,
because there is no default suffix for raw streams.
.TP
\fB\-\-files\fR[\fB=\fIfile\fR]
Read the filenames to process from
.IR file ;
if
.I file
is omitted, filenames are read from standard input.
Filenames must be terminated with the newline character.
A dash
.RB ( \- )
is taken as a regular filename; it doesn't mean standard input.
If filenames are given also as command line arguments, they are
processed before the filenames read from
.IR file .
.TP
\fB\-\-files0\fR[\fB=\fIfile\fR]
This is identical to \fB\-\-files\fR[\fB=\fIfile\fR] except
that each filename must be terminated with the null character.
.
.SS "Basic file format and compression options"
.TP
\fB\-F\fR \fIformat\fR, \fB\-\-format=\fIformat
Specify the file
.I format
to compress or decompress:
.RS
.TP
.B auto
This is the default.
When compressing,
.B auto
is equivalent to
.BR xz .
When decompressing,
the format of the input file is automatically detected.
Note that raw streams (created with
.BR \-\-format=raw )
cannot be auto-detected.
.TP
.B xz
Compress to the
.B .xz
file format, or accept only
.B .xz
files when decompressing.
.TP
.BR lzma ", " alone
Compress to the legacy
.B .lzma
file format, or accept only
.B .lzma
files when decompressing.
The alternative name
.B alone
is provided for backwards compatibility with LZMA Utils.
.TP
.B raw
Compress or uncompress a raw stream (no headers).
This is meant for advanced users only.
To decode raw streams, you need use
.B \-\-format=raw
and explicitly specify the filter chain,
which normally would have been stored in the container headers.
.RE
.TP
\fB\-C\fR \fIcheck\fR, \fB\-\-check=\fIcheck
Specify the type of the integrity check.
The check is calculated from the uncompressed data and
stored in the
.B .xz
file.
This option has an effect only when compressing into the
.B .xz
format; the
.B .lzma
format doesn't support integrity checks.
The integrity check (if any) is verified when the
.B .xz
file is decompressed.
.IP ""
Supported
.I check
types:
.RS
.TP
.B none
Don't calculate an integrity check at all.
This is usually a bad idea.
This can be useful when integrity of the data is verified
by other means anyway.
.TP
.B crc32
Calculate CRC32 using the polynomial from IEEE-802.3 (Ethernet).
.TP
.B crc64
Calculate CRC64 using the polynomial from ECMA-182.
This is the default, since it is slightly better than CRC32
at detecting damaged files and the speed difference is negligible.
.TP
.B sha256
Calculate SHA-256.
This is somewhat slower than CRC32 and CRC64.
.RE
.IP ""
Integrity of the
.B .xz
headers is always verified with CRC32.
It is not possible to change or disable it.
.TP
.BR \-0 " ... " \-9
Select a compression preset level.
The default is
.BR \-6 .
If multiple preset levels are specified,
the last one takes effect.
If a custom filter chain was already specified, setting
a compression preset level clears the custom filter chain.
.IP ""
The differences between the presets are more significant than with
.BR gzip (1)
and
.BR bzip2 (1).
The selected compression settings determine
the memory requirements of the decompressor,
thus using a too high preset level might make it painful
to decompress the file on an old system with little RAM.
Specifically,
.B "it's not a good idea to blindly use \-9 for everything"
like it often is with
.BR gzip (1)
and
.BR bzip2 (1).
.RS
.TP
.BR "\-0" " ... " "\-3"
These are somewhat fast presets.
.B \-0
is sometimes faster than
.B "gzip \-9"
while compressing much better.
The higher ones often have speed comparable to
.BR bzip2 (1)
with comparable or better compression ratio,
although the results
depend a lot on the type of data being compressed.
.TP
.BR "\-4" " ... " "\-6"
Good to very good compression while keeping
decompressor memory usage reasonable even for old systems.
.B \-6
is the default, which is usually a good choice
e.g. for distributing files that need to be decompressible
even on systems with only 16\ MiB RAM.
.RB ( \-5e
or
.B \-6e
may be worth considering too.
See
.BR \-\-extreme .)
.TP
.B "\-7 ... \-9"
These are like
.B \-6
but with higher compressor and decompressor memory requirements.
These are useful only when compressing files bigger than
8\ MiB, 16\ MiB, and 32\ MiB, respectively.
.RE
.IP ""
On the same hardware, the decompression speed is approximately
a constant number of bytes of compressed data per second.
In other words, the better the compression,
the faster the decompression will usually be.
This also means that the amount of uncompressed output
produced per second can vary a lot.
.IP ""
The following table summarises the features of the presets:
.RS
.RS
.PP
.TS
tab(;);
c c c c c
n n n n n.
Preset;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
.TE
.RE
.RE
.IP ""
Column descriptions:
.RS
.IP \(bu 3
DictSize is the LZMA2 dictionary size.
It is waste of memory to use a dictionary bigger than
the size of the uncompressed file.
This is why it is good to avoid using the presets
.BR \-7 " ... " \-9
when there's no real need for them.
At
.B \-6
and lower, the amount of memory wasted is
usually low enough to not matter.
.IP \(bu 3
CompCPU is a simplified representation of the LZMA2 settings
that affect compression speed.
The dictionary size affects speed too,
so while CompCPU is the same for levels
.BR \-6 " ... " \-9 ,
higher levels still tend to be a little slower.
To get even slower and thus possibly better compression, see
.BR \-\-extreme .
.IP \(bu 3
CompMem contains the compressor memory requirements
in the single-threaded mode.
It may vary slightly between
.B xz
versions.
Memory requirements of some of the future multithreaded modes may
be dramatically higher than that of the single-threaded mode.
.IP \(bu 3
DecMem contains the decompressor memory requirements.
That is, the compression settings determine
the memory requirements of the decompressor.
The exact decompressor memory usage is slightly more than
the LZMA2 dictionary size, but the values in the table
have been rounded up to the next full MiB.
.RE
.TP
.BR \-e ", " \-\-extreme
Use a slower variant of the selected compression preset level
.RB ( \-0 " ... " \-9 )
to hopefully get a little bit better compression ratio,
but with bad luck this can also make it worse.
Decompressor memory usage is not affected,
but compressor memory usage increases a little at preset levels
.BR \-0 " ... " \-3 .
.IP ""
Since there are two presets with dictionary sizes
4\ MiB and 8\ MiB, the presets
.B \-3e
and
.B \-5e
use slightly faster settings (lower CompCPU) than
.B \-4e
and
.BR \-6e ,
respectively.
That way no two presets are identical.
.RS
.RS
.PP
.TS
tab(;);
c c c c c
n n n n n.
Preset;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
.TE
.RE
.RE
.IP ""
For example, there are a total of four presets that use
8\ MiB dictionary, whose order from the fastest to the slowest is
.BR \-5 ,
.BR \-6 ,
.BR \-5e ,
and
.BR \-6e .
.TP
.B \-\-fast
.PD 0
.TP
.B \-\-best
.PD
These are somewhat misleading aliases for
.B \-0
and
.BR \-9 ,
respectively.
These are provided only for backwards compatibility
with LZMA Utils.
Avoid using these options.
.TP
.BI \-\-block\-size= size
When compressing to the
.B .xz
format, split the input data into blocks of
.I size
bytes.
The blocks are compressed independently from each other.
.\" FIXME: Explain how to these can be used for random access and threading.
.TP
.BI \-\-block\-list= sizes
When compressing to the
.B .xz
format, start a new block after
the given intervals of uncompressed data.
.IP ""
The uncompressed
.I sizes
of the blocks are specified as a comma-separated list.
Omitting a size (two or more consecutive commas) is a shorthand
to use the size of the previous block.
.IP ""
If the input file is bigger than the sum of
.IR sizes ,
the last value in
.I sizes
is repeated until the end of the file.
A special value of
.B 0
may be used as the last value to indicate that
the rest of the file should be encoded as a single block.
.IP ""
If this option is used in threaded mode and one specifies
.I sizes
that exceed the encoder's block size
(either the default value or the value specified
with \fB\-\-block\-size=\fIsize\fR),
the encoder will create additional blocks while
keeping the boundaries specified in
.IR sizes .
For example, if one specifies
.B \-\-threads=2
.B \-\-block\-size=10MiB
.B \-\-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.
.IP ""
.\" FIXME
.B "In single-threaded mode \-\-block\-size is ignored"
.B "if \-\-block\-list is also specified."
.B "This might change before 5.2.0 is released."
.TP
.BI \-\-flush\-timeout= timeout
When compressing, if more than
.I timeout
milliseconds (a positive integer) has passed since the previous flush and
reading more input would block,
all the pending input data is flushed from the encoder and
made available in the output stream.
This can be useful if
.B xz
is used to compress data that is streamed over a network.
Small
.I timeout
values make the data available at the receiving end
with a small delay, but large
.I timeout
values give better compression ratio.
.IP ""
This feature is disabled by default.
If this option is specified more than once, the last one takes effect.
The special
.I timeout
value of
.B 0
can be used to explicitly disable this feature.
.IP ""
This feature is not available on non-POSIX systems.
.IP ""
.\" FIXME
.B "This feature is still experimental."
Currently
.B xz
is unsuitable for decompressing the stream in real time due to how
.B xz
does buffering.
.TP
.BI \-\-memlimit\-compress= limit
Set a memory usage limit for compression.
If this option is specified multiple times,
the last one takes effect.
.IP ""
If the compression settings exceed the
.IR limit ,
.B xz
will adjust the settings downwards so that
the limit is no longer exceeded and display a notice that
automatic adjustment was done.
Such adjustments are not made when compressing with
.B \-\-format=raw
or if
.B \-\-no\-adjust
has been specified.
In those cases, an error is displayed and
.B xz
will exit with exit status 1.
.IP ""
The
.I limit
can be specified in multiple ways:
.RS
.IP \(bu 3
The
.I limit
can be an absolute value in bytes.
Using an integer suffix like
.B MiB
can be useful.
Example:
.B "\-\-memlimit\-compress=80MiB"
.IP \(bu 3
The
.I limit
can be specified as a percentage of total physical memory (RAM).
This can be useful especially when setting the
.B XZ_DEFAULTS
environment variable in a shell initialization script
that is shared between different computers.
That way the limit is automatically bigger
on systems with more memory.
Example:
.B "\-\-memlimit\-compress=70%"
.IP \(bu 3
The
.I limit
can be reset back to its default value by setting it to
.BR 0 .
This is currently equivalent to setting the
.I limit
to
.B max
(no memory usage limit).
Once multithreading support has been implemented,
there may be a difference between
.B 0
and
.B max
for the multithreaded case, so it is recommended to use
.B 0
instead of
.B max
until the details have been decided.
.RE
.IP ""
See also the section
.BR "Memory usage" .
.TP
.BI \-\-memlimit\-decompress= limit
Set a memory usage limit for decompression.
This also affects the
.B \-\-list
mode.
If the operation is not possible without exceeding the
.IR limit ,
.B xz
will display an error and decompressing the file will fail.
See
.BI \-\-memlimit\-compress= limit
for possible ways to specify the
.IR limit .
.TP
\fB\-M\fR \fIlimit\fR, \fB\-\-memlimit=\fIlimit\fR, \fB\-\-memory=\fIlimit
This is equivalent to specifying \fB\-\-memlimit\-compress=\fIlimit
\fB\-\-memlimit\-decompress=\fIlimit\fR.
.TP
.B \-\-no\-adjust
Display an error and exit if the compression settings exceed
the memory usage limit.
The default is to adjust the settings downwards so
that the memory usage limit is not exceeded.
Automatic adjusting is always disabled when creating raw streams
.RB ( \-\-format=raw ).
.TP
\fB\-T\fR \fIthreads\fR, \fB\-\-threads=\fIthreads
Specify the number of worker threads to use.
Setting
.I threads
to a special value
.B 0
makes
.B xz
use as many threads as there are CPU cores on the system.
The actual number of threads can be less than
.I 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.
.IP ""
Currently the only threading method is to split the input into
blocks and compress them independently from each other.
The default block size depends on the compression level and
can be overriden with the
.BI \-\-block\-size= size
option.
.IP ""
.B "It is possible that the details of this option change before"
.B "the next stable XZ Utils release."
.B "This may include the meaning of the special value 0."
.\" FIXME
.
.SS "Custom compressor filter chains"
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 (\fB\-0\fR ... \fB\-9\fR and \fB\-\-extreme\fR)
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.
.PP
A filter chain is comparable to piping on the command line.
When compressing, the uncompressed input goes to the first filter,
whose output goes to the next filter (if any).
The output of the last filter gets written to the compressed file.
The maximum number of filters in the chain is four,
but typically a filter chain has only one or two filters.
.PP
Many filters have limitations on where they can be
in the filter chain:
some filters can work only as the last filter in the chain,
some only as a non-last filter, and some work in any position
in the chain.
Depending on the filter, this limitation is either inherent to
the filter design or exists to prevent security issues.
.PP
A custom filter chain is specified by using one or more
filter options in the order they are wanted in the filter chain.
That is, the order of filter options is significant!
When decoding raw streams
.RB ( \-\-format=raw ),
the filter chain is specified in the same order as
it was specified when compressing.
.PP
Filters take filter-specific
.I options
as a comma-separated list.
Extra commas in
.I options
are ignored.
Every option has a default value, so you need to
specify only those you want to change.
.PP
To see the whole filter chain and
.IR options ,
use
.B "xz \-vv"
(that is, use
.B \-\-verbose
twice).
This works also for viewing the filter chain options used by presets.
.TP
\fB\-\-lzma1\fR[\fB=\fIoptions\fR]
.PD 0
.TP
\fB\-\-lzma2\fR[\fB=\fIoptions\fR]
.PD
Add LZMA1 or LZMA2 filter to the filter chain.
These filters can be used only as the last filter in the chain.
.IP ""
LZMA1 is a legacy filter,
which is supported almost solely due to the legacy
.B .lzma
file format, which supports only LZMA1.
LZMA2 is an updated
version of LZMA1 to fix some practical issues of LZMA1.
The
.B .xz
format uses LZMA2 and doesn't support LZMA1 at all.
Compression speed and ratios of LZMA1 and LZMA2
are practically the same.
.IP ""
LZMA1 and LZMA2 share the same set of
.IR options :
.RS
.TP
.BI preset= preset
Reset all LZMA1 or LZMA2
.I options
to
.IR preset .
.I Preset
consist of an integer, which may be followed by single-letter
preset modifiers.
The integer can be from
.B 0
to
.BR 9 ,
matching the command line options \fB\-0\fR ... \fB\-9\fR.
The only supported modifier is currently
.BR e ,
which matches
.BR \-\-extreme .
If no
.B preset
is specified, the default values of LZMA1 or LZMA2
.I options
are taken from the preset
.BR 6 .
.TP
.BI dict= size
Dictionary (history buffer)
.I size
indicates how many bytes of the recently processed
uncompressed data is kept in memory.
The algorithm tries to find repeating byte sequences (matches) in
the uncompressed data, and replace them with references
to the data currently in the dictionary.
The bigger the dictionary, the higher is the chance
to find a match.
Thus, increasing dictionary
.I size
usually improves compression ratio, but
a dictionary bigger than the uncompressed file is waste of memory.
.IP ""
Typical dictionary
.I size
is from 64\ KiB to 64\ MiB.
The minimum is 4\ KiB.
The maximum for compression is currently 1.5\ GiB (1536\ MiB).
The decompressor already supports dictionaries up to
one byte less than 4\ GiB, which is the maximum for
the LZMA1 and LZMA2 stream formats.
.IP ""
Dictionary
.I size
and match finder
.RI ( mf )
together determine the memory usage of the LZMA1 or LZMA2 encoder.
The same (or bigger) dictionary
.I size
is required for decompressing that was used when compressing,
thus the memory usage of the decoder is determined
by the dictionary size used when compressing.
The
.B .xz
headers store the dictionary
.I size
either as
.RI "2^" n
or
.RI "2^" n " + 2^(" n "\-1),"
so these
.I sizes
are somewhat preferred for compression.
Other
.I sizes
will get rounded up when stored in the
.B .xz
headers.
.TP
.BI lc= lc
Specify the number of literal context bits.
The minimum is 0 and the maximum is 4; the default is 3.
In addition, the sum of
.I lc
and
.I lp
must not exceed 4.
.IP ""
All bytes that cannot be encoded as matches
are encoded as literals.
That is, literals are simply 8-bit bytes
that are encoded one at a time.
.IP ""
The literal coding makes an assumption that the highest
.I lc
bits of the previous uncompressed byte correlate
with the next byte.
E.g. 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
.I lc
is at least 3, the literal coding can take advantage of
this property in the uncompressed data.
.IP ""
The default value (3) is usually good.
If you want maximum compression, test
.BR lc=4 .
Sometimes it helps a little, and
sometimes it makes compression worse.
If it makes it worse, test e.g.\&
.B lc=2
too.
.TP
.BI lp= lp
Specify the number of literal position bits.
The minimum is 0 and the maximum is 4; the default is 0.
.IP ""
.I Lp
affects what kind of alignment in the uncompressed data is
assumed when encoding literals.
See
.I pb
below for more information about alignment.
.TP
.BI pb= pb
Specify the number of position bits.
The minimum is 0 and the maximum is 4; the default is 2.
.IP ""
.I Pb
affects what kind of alignment in the uncompressed data is
assumed in general.
The default means four-byte alignment
.RI (2^ pb =2^2=4),
which is often a good choice when there's no better guess.
.IP ""
When the aligment is known, setting
.I pb
accordingly may reduce the file size a little.
E.g. with text files having one-byte
alignment (US-ASCII, ISO-8859-*, UTF-8), setting
.B pb=0
can improve compression slightly.
For UTF-16 text,
.B pb=1
is a good choice.
If the alignment is an odd number like 3 bytes,
.B pb=0
might be the best choice.
.IP ""
Even though the assumed alignment can be adjusted with
.I pb
and
.IR lp ,
LZMA1 and LZMA2 still slightly favor 16-byte alignment.
It might be worth taking into account when designing file formats
that are likely to be often compressed with LZMA1 or LZMA2.
.TP
.BI 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
.IR preset :
0 uses
.BR hc3 ,
1\-3
use
.BR hc4 ,
and the rest use
.BR bt4 .
.IP ""
The following match finders are supported.
The memory usage formulas below are rough approximations,
which are closest to the reality when
.I dict
is a power of two.
.RS
.TP
.B hc3
Hash Chain with 2- and 3-byte hashing
.br
Minimum value for
.IR nice :
3
.br
Memory usage:
.br
.I dict
* 7.5 (if
.I dict
<= 16 MiB);
.br
.I dict
* 5.5 + 64 MiB (if
.I dict
> 16 MiB)
.TP
.B hc4
Hash Chain with 2-, 3-, and 4-byte hashing
.br
Minimum value for
.IR nice :
4
.br
Memory usage:
.br
.I dict
* 7.5 (if
.I dict
<= 32 MiB);
.br
.I dict
* 6.5 (if
.I dict
> 32 MiB)
.TP
.B bt2
Binary Tree with 2-byte hashing
.br
Minimum value for
.IR nice :
2
.br
Memory usage:
.I dict
* 9.5
.TP
.B bt3
Binary Tree with 2- and 3-byte hashing
.br
Minimum value for
.IR nice :
3
.br
Memory usage:
.br
.I dict
* 11.5 (if
.I dict
<= 16 MiB);
.br
.I dict
* 9.5 + 64 MiB (if
.I dict
> 16 MiB)
.TP
.B bt4
Binary Tree with 2-, 3-, and 4-byte hashing
.br
Minimum value for
.IR nice :
4
.br
Memory usage:
.br
.I dict
* 11.5 (if
.I dict
<= 32 MiB);
.br
.I dict
* 10.5 (if
.I dict
> 32 MiB)
.RE
.TP
.BI mode= mode
Compression
.I mode
specifies the method to analyze
the data produced by the match finder.
Supported
.I modes
are
.B fast
and
.BR normal .
The default is
.B fast
for
.I presets
0\-3 and
.B normal
for
.I presets
4\-9.
.IP ""
Usually
.B fast
is used with Hash Chain match finders and
.B normal
with Binary Tree match finders.
This is also what the
.I presets
do.
.TP
.BI nice= nice
Specify what is considered to be a nice length for a match.
Once a match of at least
.I nice
bytes is found, the algorithm stops
looking for possibly better matches.
.IP ""
.I Nice
can be 2\-273 bytes.
Higher values tend to give better compression ratio
at the expense of speed.
The default depends on the
.IR preset .
.TP
.BI depth= depth
Specify the maximum search depth in the match finder.
The default is the special value of 0,
which makes the compressor determine a reasonable
.I depth
from
.I mf
and
.IR nice .
.IP ""
Reasonable
.I depth
for Hash Chains is 4\-100 and 16\-1000 for Binary Trees.
Using very high values for
.I depth
can make the encoder extremely slow with some files.
Avoid setting the
.I depth
over 1000 unless you are prepared to interrupt
the compression in case it is taking far too long.
.RE
.IP ""
When decoding raw streams
.RB ( \-\-format=raw ),
LZMA2 needs only the dictionary
.IR size .
LZMA1 needs also
.IR lc ,
.IR lp ,
and
.IR pb .
.TP
\fB\-\-x86\fR[\fB=\fIoptions\fR]
.PD 0
.TP
\fB\-\-powerpc\fR[\fB=\fIoptions\fR]
.TP
\fB\-\-ia64\fR[\fB=\fIoptions\fR]
.TP
\fB\-\-arm\fR[\fB=\fIoptions\fR]
.TP
\fB\-\-armthumb\fR[\fB=\fIoptions\fR]
.TP
\fB\-\-sparc\fR[\fB=\fIoptions\fR]
.PD
Add a branch/call/jump (BCJ) filter to the filter chain.
These filters can be used only as a non-last filter
in the filter chain.
.IP ""
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
.B .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.
.IP ""
It is fine to apply a BCJ filter on a whole executable;
there's no need to apply it only on the executable section.
Applying a BCJ filter on an archive that contains both executable
and non-executable files may or may not give good results,
so it generally isn't good to blindly apply a BCJ filter when
compressing binary packages for distribution.
.IP ""
These BCJ filters are very fast and
use insignificant amount of memory.
If a BCJ filter improves compression ratio of a file,
it can improve decompression speed at the same time.
This is because, on the same hardware,
the decompression speed of LZMA2 is roughly
a fixed number of bytes of compressed data per second.
.IP ""
These BCJ filters have known problems related to
the compression ratio:
.RS
.IP \(bu 3
Some types of files containing executable code
(e.g. 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.
.IP \(bu 3
Applying a BCJ filter on an archive containing multiple similar
executables can make the compression ratio worse than not using
a BCJ filter.
This is because the BCJ filter doesn't detect the boundaries
of the executable files, and doesn't reset
the address conversion counter for each executable.
.RE
.IP ""
Both of the above problems will be fixed
in the future in a new filter.
The old BCJ filters will still be useful in embedded systems,
because the decoder of the new filter will be bigger
and use more memory.
.IP ""
Different instruction sets have have different alignment:
.RS
.RS
.PP
.TS
tab(;);
l n l
l n l.
Filter;Alignment;Notes
x86;1;32-bit or 64-bit x86
PowerPC;4;Big endian only
ARM;4;Little endian only
ARM-Thumb;2;Little endian only
IA-64;16;Big or little endian
SPARC;4;Big or little endian
.TE
.RE
.RE
.IP ""
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
.B pb=4
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.
.IP ""
All BCJ filters support the same
.IR options :
.RS
.TP
.BI start= offset
Specify the start
.I offset
that is used when converting between relative
and absolute addresses.
The
.I offset
must be a multiple of the alignment of the filter
(see the table above).
The default is zero.
In practice, the default is good; specifying a custom
.I offset
is almost never useful.
.RE
.TP
\fB\-\-delta\fR[\fB=\fIoptions\fR]
Add the Delta filter to the filter chain.
The Delta filter can be only used as a non-last filter
in the filter chain.
.IP ""
Currently only simple byte-wise delta calculation is supported.
It can be useful when compressing e.g. 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 e.g. with
.BR flac (1).
.IP ""
Supported
.IR options :
.RS
.TP
.BI dist= distance
Specify the
.I distance
of the delta calculation in bytes.
.I distance
must be 1\-256.
The default is 1.
.IP ""
For example, with
.B dist=2
and eight-byte input A1 B1 A2 B3 A3 B5 A4 B7, the output will be
A1 B1 01 02 01 02 01 02.
.RE
.
.SS "Other options"
.TP
.BR \-q ", " \-\-quiet
Suppress warnings and notices.
Specify this twice to suppress errors too.
This option has no effect on the exit status.
That is, even if a warning was suppressed,
the exit status to indicate a warning is still used.
.TP
.BR \-v ", " \-\-verbose
Be verbose.
If standard error is connected to a terminal,
.B xz
will display a progress indicator.
Specifying
.B \-\-verbose
twice will give even more verbose output.
.IP ""
The progress indicator shows the following information:
.RS
.IP \(bu 3
Completion percentage is shown
if the size of the input file is known.
That is, the percentage cannot be shown in pipes.
.IP \(bu 3
Amount of compressed data produced (compressing)
or consumed (decompressing).
.IP \(bu 3
Amount of uncompressed data consumed (compressing)
or produced (decompressing).
.IP \(bu 3
Compression ratio, which is calculated by dividing
the amount of compressed data processed so far by
the amount of uncompressed data processed so far.
.IP \(bu 3
Compression or decompression speed.
This is measured as the amount of uncompressed data consumed
(compression) or produced (decompression) per second.
It is shown after a few seconds have passed since
.B xz
started processing the file.
.IP \(bu 3
Elapsed time in the format M:SS or H:MM:SS.
.IP \(bu 3
Estimated remaining time is shown
only when the size of the input file is
known and a couple of seconds have already passed since
.B xz
started processing the file.
The time is shown in a less precise format which
never has any colons, e.g. 2 min 30 s.
.RE
.IP ""
When standard error is not a terminal,
.B \-\-verbose
will make
.B 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, e.g. due to user interruption,
also the completion percentage is printed
if the size of the input file is known.
.TP
.BR \-Q ", " \-\-no\-warn
Don't set the exit status to 2
even if a condition worth a warning was detected.
This option doesn't affect the verbosity level, thus both
.B \-\-quiet
and
.B \-\-no\-warn
have to be used to not display warnings and
to not alter the exit status.
.TP
.B \-\-robot
Print messages in a machine-parsable format.
This is intended to ease writing frontends that want to use
.B xz
instead of liblzma, which may be the case with various scripts.
The output with this option enabled is meant to be stable across
.B xz
releases.
See the section
.B "ROBOT MODE"
for details.
.TP
.BR \-\-info\-memory
Display, in human-readable format, how much physical memory (RAM)
.B xz
thinks the system has and the memory usage limits for compression
and decompression, and exit successfully.
.TP
.BR \-h ", " \-\-help
Display a help message describing the most commonly used options,
and exit successfully.
.TP
.BR \-H ", " \-\-long\-help
Display a help message describing all features of
.BR xz ,
and exit successfully
.TP
.BR \-V ", " \-\-version
Display the version number of
.B xz
and liblzma in human readable format.
To get machine-parsable output, specify
.B \-\-robot
before
.BR \-\-version .
.
.SH "ROBOT MODE"
The robot mode is activated with the
.B \-\-robot
option.
It makes the output of
.B xz
easier to parse by other programs.
Currently
.B \-\-robot
is supported only together with
.BR \-\-version ,
.BR \-\-info\-memory ,
and
.BR \-\-list .
It will be supported for compression and
decompression in the future.
.
.SS Version
.B "xz \-\-robot \-\-version"
will print the version number of
.B xz
and liblzma in the following format:
.PP
.BI XZ_VERSION= XYYYZZZS
.br
.BI LIBLZMA_VERSION= XYYYZZZS
.TP
.I X
Major version.
.TP
.I YYY
Minor version.
Even numbers are stable.
Odd numbers are alpha or beta versions.
.TP
.I ZZZ
Patch level for stable releases or
just a counter for development releases.
.TP
.I S
Stability.
0 is alpha, 1 is beta, and 2 is stable.
.I S
should be always 2 when
.I YYY
is even.
.PP
.I XYYYZZZS
are the same on both lines if
.B xz
and liblzma are from the same XZ Utils release.
.PP
Examples: 4.999.9beta is
.B 49990091
and
5.0.0 is
.BR 50000002 .
.
.SS "Memory limit information"
.B "xz \-\-robot \-\-info\-memory"
prints a single line with three tab-separated columns:
.IP 1. 4
Total amount of physical memory (RAM) in bytes
.IP 2. 4
Memory usage limit for compression in bytes.
A special value of zero indicates the default setting,
which for single-threaded mode is the same as no limit.
.IP 3. 4
Memory usage limit for decompression in bytes.
A special value of zero indicates the default setting,
which for single-threaded mode is the same as no limit.
.PP
In the future, the output of
.B "xz \-\-robot \-\-info\-memory"
may have more columns, but never more than a single line.
.
.SS "List mode"
.B "xz \-\-robot \-\-list"
uses tab-separated output.
The first column of every line has a string
that indicates the type of the information found on that line:
.TP
.B name
This is always the first line when starting to list a file.
The second column on the line is the filename.
.TP
.B file
This line contains overall information about the
.B .xz
file.
This line is always printed after the
.B name
line.
.TP
.B stream
This line type is used only when
.B \-\-verbose
was specified.
There are as many
.B stream
lines as there are streams in the
.B .xz
file.
.TP
.B block
This line type is used only when
.B \-\-verbose
was specified.
There are as many
.B block
lines as there are blocks in the
.B .xz
file.
The
.B block
lines are shown after all the
.B stream
lines; different line types are not interleaved.
.TP
.B summary
This line type is used only when
.B \-\-verbose
was specified twice.
This line is printed after all
.B block
lines.
Like the
.B file
line, the
.B summary
line contains overall information about the
.B .xz
file.
.TP
.B totals
This line is always the very last line of the list output.
It shows the total counts and sizes.
.PP
The columns of the
.B file
lines:
.PD 0
.RS
.IP 2. 4
Number of streams in the file
.IP 3. 4
Total number of blocks in the stream(s)
.IP 4. 4
Compressed size of the file
.IP 5. 4
Uncompressed size of the file
.IP 6. 4
Compression ratio, for example
.BR 0.123.
If ratio is over 9.999, three dashes
.RB ( \-\-\- )
are displayed instead of the ratio.
.IP 7. 4
Comma-separated list of integrity check names.
The following strings are used for the known check types:
.BR None ,
.BR CRC32 ,
.BR CRC64 ,
and
.BR SHA\-256 .
For unknown check types,
.BI Unknown\- N
is used, where
.I N
is the Check ID as a decimal number (one or two digits).
.IP 8. 4
Total size of stream padding in the file
.RE
.PD
.PP
The columns of the
.B stream
lines:
.PD 0
.RS
.IP 2. 4
Stream number (the first stream is 1)
.IP 3. 4
Number of blocks in the stream
.IP 4. 4
Compressed start offset
.IP 5. 4
Uncompressed start offset
.IP 6. 4
Compressed size (does not include stream padding)
.IP 7. 4
Uncompressed size
.IP 8. 4
Compression ratio
.IP 9. 4
Name of the integrity check
.IP 10. 4
Size of stream padding
.RE
.PD
.PP
The columns of the
.B block
lines:
.PD 0
.RS
.IP 2. 4
Number of the stream containing this block
.IP 3. 4
Block number relative to the beginning of the stream
(the first block is 1)
.IP 4. 4
Block number relative to the beginning of the file
.IP 5. 4
Compressed start offset relative to the beginning of the file
.IP 6. 4
Uncompressed start offset relative to the beginning of the file
.IP 7. 4
Total compressed size of the block (includes headers)
.IP 8. 4
Uncompressed size
.IP 9. 4
Compression ratio
.IP 10. 4
Name of the integrity check
.RE
.PD
.PP
If
.B \-\-verbose
was specified twice, additional columns are included on the
.B block
lines.
These are not displayed with a single
.BR \-\-verbose ,
because getting this information requires many seeks
and can thus be slow:
.PD 0
.RS
.IP 11. 4
Value of the integrity check in hexadecimal
.IP 12. 4
Block header size
.IP 13. 4
Block flags:
.B c
indicates that compressed size is present, and
.B u
indicates that uncompressed size is present.
If the flag is not set, a dash
.RB ( \- )
is shown instead to keep the string length fixed.
New flags may be added to the end of the string in the future.
.IP 14. 4
Size of the actual compressed data in the block (this excludes
the block header, block padding, and check fields)
.IP 15. 4
Amount of memory (in bytes) required to decompress
this block with this
.B xz
version
.IP 16. 4
Filter chain.
Note that most of the options used at compression time
cannot be known, because only the options
that are needed for decompression are stored in the
.B .xz
headers.
.RE
.PD
.PP
The columns of the
.B summary
lines:
.PD 0
.RS
.IP 2. 4
Amount of memory (in bytes) required to decompress
this file with this
.B xz
version
.IP 3. 4
.B yes
or
.B no
indicating if all block headers have both compressed size and
uncompressed size stored in them
.PP
.I Since
.B xz
.I 5.1.2alpha:
.IP 4. 4
Minimum
.B xz
version required to decompress the file
.RE
.PD
.PP
The columns of the
.B totals
line:
.PD 0
.RS
.IP 2. 4
Number of streams
.IP 3. 4
Number of blocks
.IP 4. 4
Compressed size
.IP 5. 4
Uncompressed size
.IP 6. 4
Average compression ratio
.IP 7. 4
Comma-separated list of integrity check names
that were present in the files
.IP 8. 4
Stream padding size
.IP 9. 4
Number of files.
This is here to
keep the order of the earlier columns the same as on
.B file
lines.
.PD
.RE
.PP
If
.B \-\-verbose
was specified twice, additional columns are included on the
.B totals
line:
.PD 0
.RS
.IP 10. 4
Maximum amount of memory (in bytes) required to decompress
the files with this
.B xz
version
.IP 11. 4
.B yes
or
.B no
indicating if all block headers have both compressed size and
uncompressed size stored in them
.PP
.I Since
.B xz
.I 5.1.2alpha:
.IP 12. 4
Minimum
.B xz
version required to decompress the file
.RE
.PD
.PP
Future versions may add new line types and
new columns can be added to the existing line types,
but the existing columns won't be changed.
.
.SH "EXIT STATUS"
.TP
.B 0
All is good.
.TP
.B 1
An error occurred.
.TP
.B 2
Something worth a warning occurred,
but no actual errors occurred.
.PP
Notices (not warnings or errors) printed on standard error
don't affect the exit status.
.
.SH ENVIRONMENT
.B xz
parses space-separated lists of options
from the environment variables
.B XZ_DEFAULTS
and
.BR XZ_OPT ,
in this order, before parsing the options from the command line.
Note that only options are parsed from the environment variables;
all non-options are silently ignored.
Parsing is done with
.BR getopt_long (3)
which is used also for the command line arguments.
.TP
.B XZ_DEFAULTS
User-specific or system-wide default options.
Typically this is set in a shell initialization script to enable
.BR xz 's
memory usage limiter by default.
Excluding shell initialization scripts
and similar special cases, scripts must never set or unset
.BR XZ_DEFAULTS .
.TP
.B XZ_OPT
This is for passing options to
.B xz
when it is not possible to set the options directly on the
.B xz
command line.
This is the case e.g. when
.B xz
is run by a script or tool, e.g. GNU
.BR tar (1):
.RS
.RS
.PP
.nf
.ft CW
XZ_OPT=\-2v tar caf foo.tar.xz foo
.ft R
.fi
.RE
.RE
.IP ""
Scripts may use
.B XZ_OPT
e.g. to set script-specific default compression options.
It is still recommended to allow users to override
.B XZ_OPT
if that is reasonable, e.g. in
.BR sh (1)
scripts one may use something like this:
.RS
.RS
.PP
.nf
.ft CW
XZ_OPT=${XZ_OPT\-"\-7e"}
export XZ_OPT
.ft R
.fi
.RE
.RE
.
.SH "LZMA UTILS COMPATIBILITY"
The command line syntax of
.B xz
is practically a superset of
.BR lzma ,
.BR unlzma ,
and
.BR lzcat
as found from LZMA Utils 4.32.x.
In most cases, it is possible to replace
LZMA Utils with XZ Utils without breaking existing scripts.
There are some incompatibilities though,
which may sometimes cause problems.
.
.SS "Compression preset levels"
The numbering of the compression level presets is not identical in
.B xz
and LZMA Utils.
The most important difference is how dictionary sizes
are mapped to different presets.
Dictionary size is roughly equal to the decompressor memory usage.
.RS
.PP
.TS
tab(;);
c c c
c n n.
Level;xz;LZMA Utils
\-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
.TE
.RE
.PP
The dictionary size differences affect
the compressor memory usage too,
but there are some other differences between
LZMA Utils and XZ Utils, which
make the difference even bigger:
.RS
.PP
.TS
tab(;);
c c c
c n n.
Level;xz;LZMA Utils 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
.TE
.RE
.PP
The default preset level in LZMA Utils is
.B \-7
while in XZ Utils it is
.BR \-6 ,
so both use an 8 MiB dictionary by default.
.
.SS "Streamed vs. non-streamed .lzma files"
The uncompressed size of the file can be stored in the
.B .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.
.PP
.B xz
supports decompressing
.B .lzma
files with or without end-of-payload marker, but all
.B .lzma
files created by
.B xz
will use end-of-payload marker and have uncompressed size
marked as unknown in the
.B .lzma
header.
This may be a problem in some uncommon situations.
For example, a
.B .lzma
decompressor in an embedded device might work
only with files that have known uncompressed size.
If you hit this problem, you need to use LZMA Utils
or LZMA SDK to create
.B .lzma
files with known uncompressed size.
.
.SS "Unsupported .lzma files"
The
.B .lzma
format allows
.I lc
values up to 8, and
.I lp
values up to 4.
LZMA Utils can decompress files with any
.I lc
and
.IR lp ,
but always creates files with
.B lc=3
and
.BR lp=0 .
Creating files with other
.I lc
and
.I lp
is possible with
.B xz
and with LZMA SDK.
.PP
The implementation of the LZMA1 filter in liblzma
requires that the sum of
.I lc
and
.I lp
must not exceed 4.
Thus,
.B .lzma
files, which exceed this limitation, cannot be decompressed with
.BR xz .
.PP
LZMA Utils creates only
.B .lzma
files which have a dictionary size of
.RI "2^" n
(a power of 2) but accepts files with any dictionary size.
liblzma accepts only
.B .lzma
files which have a dictionary size of
.RI "2^" n
or
.RI "2^" n " + 2^(" n "\-1)."
This is to decrease false positives when detecting
.B .lzma
files.
.PP
These limitations shouldn't be a problem in practice,
since practically all
.B .lzma
files have been compressed with settings that liblzma will accept.
.
.SS "Trailing garbage"
When decompressing,
LZMA Utils silently ignore everything after the first
.B .lzma
stream.
In most situations, this is a bug.
This also means that LZMA Utils
don't support decompressing concatenated
.B .lzma
files.
.PP
If there is data left after the first
.B .lzma
stream,
.B xz
considers the file to be corrupt unless
.B \-\-single\-stream
was used.
This may break obscure scripts which have
assumed that trailing garbage is ignored.
.
.SH NOTES
.
.SS "Compressed output may vary"
The exact compressed output produced from
the same uncompressed input file
may vary between XZ Utils versions even if
compression options are identical.
This is because the encoder can be improved
(faster or better compression)
without affecting the file format.
The output can vary even between different
builds of the same XZ Utils version,
if different build options are used.
.PP
The above means that once
.B \-\-rsyncable
has been implemented,
the resulting files won't necessarily be rsyncable
unless both old and new files have been compressed
with the same xz version.
This problem can be fixed if a part of the encoder
implementation is frozen to keep rsyncable output
stable across xz versions.
.
.SS "Embedded .xz decompressors"
Embedded
.B .xz
decompressor implementations like XZ Embedded don't necessarily
support files created with integrity
.I check
types other than
.B none
and
.BR crc32 .
Since the default is
.BR \-\-check=crc64 ,
you must use
.B \-\-check=none
or
.B \-\-check=crc32
when creating files for embedded systems.
.PP
Outside embedded systems, all
.B .xz
format decompressors support all the
.I check
types, or at least are able to decompress
the file without verifying the
integrity check if the particular
.I check
is not supported.
.PP
XZ Embedded supports BCJ filters,
but only with the default start offset.
.
.SH EXAMPLES
.
.SS Basics
Compress the file
.I foo
into
.I foo.xz
using the default compression level
.RB ( \-6 ),
and remove
.I foo
if compression is successful:
.RS
.PP
.nf
.ft CW
xz foo
.ft R
.fi
.RE
.PP
Decompress
.I bar.xz
into
.I bar
and don't remove
.I bar.xz
even if decompression is successful:
.RS
.PP
.nf
.ft CW
xz \-dk bar.xz
.ft R
.fi
.RE
.PP
Create
.I baz.tar.xz
with the preset
.B \-4e
.RB ( "\-4 \-\-extreme" ),
which is slower than e.g. the default
.BR \-6 ,
but needs less memory for compression and decompression (48\ MiB
and 5\ MiB, respectively):
.RS
.PP
.nf
.ft CW
tar cf \- baz | xz \-4e > baz.tar.xz
.ft R
.fi
.RE
.PP
A mix of compressed and uncompressed files can be decompressed
to standard output with a single command:
.RS
.PP
.nf
.ft CW
xz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt
.ft R
.fi
.RE
.
.SS "Parallel compression of many files"
On GNU and *BSD,
.BR find (1)
and
.BR xargs (1)
can be used to parallelize compression of many files:
.RS
.PP
.nf
.ft CW
find . \-type f \e! \-name '*.xz' \-print0 \e
    | xargs \-0r \-P4 \-n16 xz \-T1
.ft R
.fi
.RE
.PP
The
.B \-P
option to
.BR xargs (1)
sets the number of parallel
.B xz
processes.
The best value for the
.B \-n
option depends on how many files there are to be compressed.
If there are only a couple of files,
the value should probably be 1;
with tens of thousands of files,
100 or even more may be appropriate to reduce the number of
.B xz
processes that
.BR xargs (1)
will eventually create.
.PP
The option
.B \-T1
for
.B xz
is there to force it to single-threaded mode, because
.BR xargs (1)
is used to control the amount of parallelization.
.
.SS "Robot mode"
Calculate how many bytes have been saved in total
after compressing multiple files:
.RS
.PP
.nf
.ft CW
xz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'
.ft R
.fi
.RE
.PP
A script may want to know that it is using new enough
.BR xz .
The following
.BR sh (1)
script checks that the version number of the
.B xz
tool is at least 5.0.0.
This method is compatible with old beta versions,
which didn't support the
.B \-\-robot
option:
.RS
.PP
.nf
.ft CW
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
.ft R
.fi
.RE
.PP
Set a memory usage limit for decompression using
.BR XZ_OPT ,
but if a limit has already been set, don't increase it:
.RS
.PP
.nf
.ft CW
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
.ft R
.fi
.RE
.
.SS "Custom compressor filter chains"
The simplest use for custom filter chains is
customizing a LZMA2 preset.
This can be useful,
because the presets cover only a subset of the
potentially useful combinations of compression settings.
.PP
The CompCPU columns of the tables
from the descriptions of the options
.BR "\-0" " ... " "\-9"
and
.B \-\-extreme
are useful when customizing LZMA2 presets.
Here are the relevant parts collected from those two tables:
.RS
.PP
.TS
tab(;);
c c
n n.
Preset;CompCPU
\-0;0
\-1;1
\-2;2
\-3;3
\-4;4
\-5;5
\-6;6
\-5e;7
\-6e;8
.TE
.RE
.PP
If you know that a file requires
somewhat big dictionary (e.g. 32 MiB) to compress well,
but you want to compress it quicker than
.B "xz \-8"
would do, a preset with a low CompCPU value (e.g. 1)
can be modified to use a bigger dictionary:
.RS
.PP
.nf
.ft CW
xz \-\-lzma2=preset=1,dict=32MiB foo.tar
.ft R
.fi
.RE
.PP
With certain files, the above command may be faster than
.B "xz \-6"
while compressing significantly better.
However, it must be emphasized that only some files benefit from
a big dictionary while keeping the CompCPU value low.
The most obvious situation,
where a big dictionary can help a lot,
is an archive containing very similar files
of at least a few megabytes each.
The dictionary size has to be significantly bigger
than any individual file to allow LZMA2 to take
full advantage of the similarities between consecutive files.
.PP
If very high compressor and decompressor memory usage is fine,
and the file being compressed is
at least several hundred megabytes, it may be useful
to use an even bigger dictionary than the 64 MiB that
.B "xz \-9"
would use:
.RS
.PP
.nf
.ft CW
xz \-vv \-\-lzma2=dict=192MiB big_foo.tar
.ft R
.fi
.RE
.PP
Using
.B \-vv
.RB ( "\-\-verbose \-\-verbose" )
like in the above example can be useful
to see the memory requirements
of the compressor and decompressor.
Remember that using a dictionary bigger than
the size of the uncompressed file is waste of memory,
so the above command isn't useful for small files.
.PP
Sometimes the compression time doesn't matter,
but the decompressor memory usage has to be kept low
e.g. to make it possible to decompress the file on
an embedded system.
The following command uses
.B \-6e
.RB ( "\-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
.BR \-\-check=crc32 )
using about 100\ KiB of memory.
.RS
.PP
.nf
.ft CW
xz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo
.ft R
.fi
.RE
.PP
If you want to squeeze out as many bytes as possible,
adjusting the number of literal context bits
.RI ( lc )
and number of position bits
.RI ( pb )
can sometimes help.
Adjusting the number of literal position bits
.RI ( lp )
might help too, but usually
.I lc
and
.I pb
are more important.
E.g. a source code archive contains mostly US-ASCII text,
so something like the following might give
slightly (like 0.1\ %) smaller file than
.B "xz \-6e"
(try also without
.BR lc=4 ):
.RS
.PP
.nf
.ft CW
xz \-\-lzma2=preset=6e,pb=0,lc=4 source_code.tar
.ft R
.fi
.RE
.PP
Using another filter together with LZMA2 can improve
compression with certain file types.
E.g. to compress a x86-32 or x86-64 shared library
using the x86 BCJ filter:
.RS
.PP
.nf
.ft CW
xz \-\-x86 \-\-lzma2 libfoo.so
.ft R
.fi
.RE
.PP
Note that the order of the filter options is significant.
If
.B \-\-x86
is specified after
.BR \-\-lzma2 ,
.B xz
will give an error,
because there cannot be any filter after LZMA2,
and also because the x86 BCJ filter cannot be used
as the last filter in the chain.
.PP
The Delta filter together with LZMA2
can give good results with bitmap images.
It should usually beat PNG,
which has a few more advanced filters than simple
delta but uses Deflate for the actual compression.
.PP
The image has to be saved in uncompressed format,
e.g. as uncompressed TIFF.
The distance parameter of the Delta filter is set
to match the number of bytes per pixel in the image.
E.g. 24-bit RGB bitmap needs
.BR dist=3 ,
and it is also good to pass
.B pb=0
to LZMA2 to accommodate the three-byte alignment:
.RS
.PP
.nf
.ft CW
xz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff
.ft R
.fi
.RE
.PP
If multiple images have been put into a single archive (e.g.\&
.BR .tar ),
the Delta filter will work on that too as long as all images
have the same number of bytes per pixel.
.
.SH "SEE ALSO"
.BR xzdec (1),
.BR xzdiff (1),
.BR xzgrep (1),
.BR xzless (1),
.BR xzmore (1),
.BR gzip (1),
.BR bzip2 (1),
.BR 7z (1)
.PP
XZ Utils: <http://tukaani.org/xz/>
.br
XZ Embedded: <http://tukaani.org/xz/embedded.html>
.br
LZMA SDK: <http://7-zip.org/sdk.html>
