108 lines
3.9 KiB
Plaintext
108 lines
3.9 KiB
Plaintext
|
|
||
|
Introduction to the lzma command line tool
|
||
|
------------------------------------------
|
||
|
|
||
|
Overview
|
||
|
|
||
|
The lzma command line tool is similar to gzip and bzip2, but for
|
||
|
compressing and uncompressing .lzma files.
|
||
|
|
||
|
|
||
|
Supported file formats
|
||
|
|
||
|
By default, the tool creates files in the new .lzma format. This can
|
||
|
be overriden with --format=FMT command line option. Use --format=alone
|
||
|
to create files in the old LZMA_Alone format.
|
||
|
|
||
|
By default, the tool uncompresses both the new .lzma format and
|
||
|
LZMA_Alone format. This is to make it transparent to switch from
|
||
|
the old LZMA_Alone format to the new .lzma format. Since both
|
||
|
formats use the same filename suffix, average user should never
|
||
|
notice which format was used.
|
||
|
|
||
|
|
||
|
Differences to gzip and bzip2
|
||
|
|
||
|
Standard input and output
|
||
|
|
||
|
Both gzip and bzip2 refuse to write compressed data to a terminal and
|
||
|
read compressed data from a terminal. With gzip (but not with bzip2),
|
||
|
this can be overriden with the `--force' option. lzma follows the
|
||
|
behavior of gzip here.
|
||
|
|
||
|
Usage of LZMA_OPT environment variable
|
||
|
|
||
|
gzip and bzip2 read GZIP and BZIP2 environment variables at startup.
|
||
|
These variables may contain extra command line options.
|
||
|
|
||
|
gzip and bzip2 allow passing not only options, but also end-of-options
|
||
|
indicator (`--') and filenames via the environment variable. No quoting
|
||
|
is supported with the filenames.
|
||
|
|
||
|
Here are examples with gzip. bzip2 behaves identically.
|
||
|
|
||
|
bash$ echo asdf > 'foo bar'
|
||
|
bash$ GZIP='"foo bar"' gzip
|
||
|
gzip: "foo: No such file or directory
|
||
|
gzip: bar": No such file or directory
|
||
|
|
||
|
bash$ GZIP=-- gzip --help
|
||
|
gzip: --help: No such file or directory
|
||
|
|
||
|
lzma silently ignores all non-option arguments given via the
|
||
|
environment variable LZMA_OPT. Like on the command line, everything
|
||
|
after `--' is taken as non-options, and thus ignored in LZMA_OPT.
|
||
|
|
||
|
bash$ LZMA_OPT='--help' lzma --version # Displays help
|
||
|
bash$ LZMA_OPT='-- --help' lzma --version # Displays version
|
||
|
|
||
|
|
||
|
Filter chain presets
|
||
|
|
||
|
Like in gzip and bzip2, lzma supports numbered presets from 1 to 9
|
||
|
where 1 is the fastest and 9 the best compression. 1 and 2 are for
|
||
|
fast compressing with small memory usage, 3 to 6 for good compression
|
||
|
ratio with medium memory usage, and 7 to 9 for excellent compression
|
||
|
ratio with higher memory requirements. The default is 7 if memory
|
||
|
usage limit allows.
|
||
|
|
||
|
In future, there will probably be an option like --preset=NAME, which
|
||
|
will contain more special presets for specific file types.
|
||
|
|
||
|
It's also possible that there will be some heuristics to select good
|
||
|
filters. For example, the tool could detect when a .tar archive is
|
||
|
being compressed, and enable x86 filter only for those files in the
|
||
|
.tar archive that are ELF or PE executables for x86.
|
||
|
|
||
|
|
||
|
Specifying custom filter chains
|
||
|
|
||
|
Custom filter chains are specified by using long options with the name
|
||
|
of the filters in correct order. For example, to pass the input data to
|
||
|
the x86 filter and the output of that to the LZMA filter, the following
|
||
|
command will do:
|
||
|
|
||
|
lzma --x86 --lzma filename
|
||
|
|
||
|
Some filters accept options, which are specified as a comma-separated
|
||
|
list of key=value pairs:
|
||
|
|
||
|
lzma --delta=distance=4 --lzma=dict=4Mi,lc=8,lp=2 filename
|
||
|
|
||
|
|
||
|
Memory usage control
|
||
|
|
||
|
By default, the command line tool limits memory usage to 1/3 of the
|
||
|
available physical RAM. If no preset or custom filter chain has been
|
||
|
given, the default preset will be used. If the memory limit is too
|
||
|
low for the default preset, the tool will silently switch to lower
|
||
|
preset.
|
||
|
|
||
|
When a preset or a custom filter chain has been specified and the
|
||
|
memory limit is too low, an error message is displayed and no files
|
||
|
are processed.
|
||
|
|
||
|
If the decoder hits the memory usage limit, an error is displayed and
|
||
|
no more files are processed.
|
||
|
|