lz4
[OPTIONS] [-|INPUT-FILE]
unlz4
is equivalent to lz4 -d
lz4cat
is equivalent to lz4 -dcfm
When writing scripts that need to decompress files, it is recommended to always use the name lz4
with appropriate arguments (lz4 -d
or lz4 -dc
) instead of the names unlz4
and lz4cat
.
lz4
is an extremely fast lossless compression algorithm, based on byte-aligned LZ77 family of compression scheme. lz4
offers compression speeds of 400 MB/s per core, linearly scalable with multi-core CPUs. It features an extremely fast decoder, with speed in multiple GB/s per core, typically reaching RAM speed limit on multi-core systems. The native file format is the .lz4
format.
lz4
supports a command line syntax similar but not identical to gzip(1)
. Differences are :
lz4
preserves original fileslz4
compresses a single file by default (see -m
for multiple files)lz4 file1 file2
means : compress file1 into file2lz4 file.lz4
will default to decompression (use -z
to force compression)lz4
shows real-time notification statistics during compression or decompression of a single file (use -q
to silence them)stdout
except if stdout is the console.stdout
is the console, file
is compressed into file.lz4
.lz4 file | consumer
sends compressed data to consumer
through stdout
, hence it does not create file.lz4
.lz4
under nohup
, you should provide a destination file: nohup lz4 file file.lz4
, because nohup
writes the specified command's output to a file.Default behaviors can be modified by opt-in commands, detailed below.
lz4 -m
makes it possible to provide multiple input filenames, which will be compressed into files using suffix .lz4
. Progress notifications are also disabled by default (use -v
to enable them). This mode has a behavior which more closely mimics gzip
command line, with the main remaining difference being that source files are preserved by default.lz4 -m -d
can decompress multiple *.lz4
files.--rm
command.lz4 -m --rm
behaves the same as gzip
.It is possible to concatenate .lz4
files as is. lz4
will decompress such files as if they were a single .lz4
file. For example:
lz4 file1 > foo.lz4 lz4 file2 >> foo.lz4
Then lz4cat foo.lz4
is equivalent to cat file1 file2
.
In some cases, some options can be expressed using short command -x
or long command --long-word
. Short commands can be concatenated together. For example, -d -c
is equivalent to -dc
. Long commands cannot be concatenated. They must be clearly separated by a space.
When multiple contradictory commands are issued on a same command line, only the latest one will be applied.
-z
--compress
: Compress. This is the default operation mode when no operation mode option is specified, no other operation mode is implied from the command name (for example, unlz4
implies --decompress
), nor from the input file name (for example, a file extension .lz4
implies --decompress
by default). -z
can also be used to force compression of an already compressed .lz4
file.
-d
--decompress
--uncompress
: Decompress. --decompress
is also the default operation when the input filename has an .lz4
extension.
-t
--test
: Test the integrity of compressed .lz4
files. The decompressed data is discarded. No files are created nor removed.
-b#
: Benchmark mode, using #
compression level.
-#
: Compression level, with # being any value from 1 to 12. Higher values trade compression speed for compression ratio. Values above 12 are considered the same as 12. Recommended values are 1 for fast compression (default), and 9 for high compression. Speed/compression trade-off will vary depending on data to compress. Decompression speed remains fast at all settings.
-f
--[no-]force
: This option has several effects:
If the target file already exists, overwrite it without prompting.
When used with --decompress
and lz4
cannot recognize the type of the source file, copy the source file as is to standard output. This allows lz4cat --force
to be used like cat (1)
for files that have not been compressed with lz4
.
-c
--stdout
--to-stdout
: Force write to standard output, even if it is the console.
-m
--multiple
: Multiple input files. Compressed file names will be appended a .lz4
suffix. This mode also reduces notification level. lz4 -m
has a behavior equivalent to gzip -k
(it preserves source files by default).
-r
: operate recursively on directories. This mode also sets -m
(multiple input files).
-B#
: Block size [4-7](default : 7)
-B4
= 64KB ; -B5
= 256KB ; -B6
= 1MB ; -B7
= 4MB
-BD
: Block Dependency (improves compression ratio on small blocks)
--fast[=#]
: switch to ultra-fast compression levels. If =#
is not present, it defaults to 1
. The higher the value, the faster the compression speed, at the cost of some compression ratio. This setting overwrites compression level if one was set previously. Similarly, if a compression level is set after --fast
, it overrides it.
--[no-]frame-crc
: Select frame checksum (default:enabled)
--[no-]content-size
: Header includes original size (default:not present)
Note : this option can only be activated when the original size can be determined, hence for a file. It won't work with unknown source size, such as stdin or pipe.
--[no-]sparse
: Sparse mode support (default:enabled on file, disabled on stdout)
-l
: Use Legacy format (typically for Linux Kernel compression)
Note : -l
is not compatible with -m
(--multiple
) nor -r
-v
--verbose
: Verbose mode
-q
--quiet
: Suppress warnings and real-time statistics; specify twice to suppress errors too
-h
-H
--help
: Display help/long help and exit
-V
--version
: Display Version number and exit
-k
--keep
: Preserve source files (default behavior)
--rm
: Delete source files on successful compression or decompression
--
: Treat all subsequent arguments as files
-b#
: Benchmark file(s), using # compression level
-e#
: Benchmark multiple compression levels, from b# to e# (included)
-i#
: Minimum evaluation time in seconds [1-9] (default : 3)
Report bugs at: https://github.com/lz4/lz4/issues
Yann Collet