LZ4(1) Cosmopolitan User Commands -*-text-*- ๐๐€๐Œ๐„ ๐—น๐˜‡๐Ÿฐ - lz4, unlz4, lz4cat - Compress or decompress .lz4 files ๐’๐˜๐๐Ž๐๐’๐ˆ๐’ ๐—น๐˜‡๐Ÿฐ [OฬฒPฬฒTฬฒIฬฒOฬฒNฬฒSฬฒ] [-|INPUT-FILE] OฬฒUฬฒTฬฒPฬฒUฬฒTฬฒ-ฬฒFฬฒIฬฒLฬฒEฬฒ ๐˜‚๐—ป๐—น๐˜‡๐Ÿฐ is equivalent to ๐—น๐˜‡๐Ÿฐ -๐—ฑ ๐—น๐˜‡๐Ÿฐ๐—ฐ๐—ฎ๐˜ is equivalent to ๐—น๐˜‡๐Ÿฐ -๐—ฑ๐—ฐ๐—ณ๐—บ When writing scripts that need to decompress files, it is recomโ€ mended to always use the name ๐—น๐˜‡๐Ÿฐ with appropriate arguments (๐—น๐˜‡๐Ÿฐ -๐—ฑ or ๐—น๐˜‡๐Ÿฐ -๐—ฑ๐—ฐ) instead of the names ๐˜‚๐—ป๐—น๐˜‡๐Ÿฐ and ๐—น๐˜‡๐Ÿฐ๐—ฐ๐—ฎ๐˜. ๐ƒ๐„๐’๐‚๐‘๐ˆ๐๐“๐ˆ๐Ž๐ ๐—น๐˜‡๐Ÿฐ is an extremely fast lossless compression algorithm, based on ๐—ฏ๐˜†๐˜๐—ฒ-๐—ฎ๐—น๐—ถ๐—ด๐—ป๐—ฒ๐—ฑ ๐‹๐™๐Ÿณ๐Ÿณ family of compression scheme. ๐—น๐˜‡๐Ÿฐ offers comโ€ pression 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 .๐—น๐˜‡๐Ÿฐ format. ๐ƒ๐—ถ๐—ณ๐—ณ๐—ฒ๐—ฟ๐—ฒ๐—ป๐—ฐ๐—ฒ ๐—ฏ๐—ฒ๐˜๐˜„๐—ฒ๐—ฒ๐—ป ๐—น๐˜‡๐Ÿฐ ๐—ฎ๐—ป๐—ฑ ๐—ด๐˜‡๐—ถ๐—ฝ ๐—น๐˜‡๐Ÿฐ supports a command line syntax similar bฬฒuฬฒtฬฒ nฬฒoฬฒtฬฒ iฬฒdฬฒeฬฒnฬฒtฬฒiฬฒcฬฒaฬฒlฬฒ to ๐—ด๐˜‡๐—ถ๐—ฝ(๐Ÿญ). Differences are : ยท ๐—น๐˜‡๐Ÿฐ preserves original files ยท ๐—น๐˜‡๐Ÿฐ compresses a single file by default (see -๐—บ for multiple files) ยท ๐—น๐˜‡๐Ÿฐ ๐—ณ๐—ถ๐—น๐—ฒ๐Ÿญ ๐—ณ๐—ถ๐—น๐—ฒ๐Ÿฎ means : compress file1 iฬฒnฬฒtฬฒoฬฒ file2 ยท ๐—น๐˜‡๐Ÿฐ ๐—ณ๐—ถ๐—น๐—ฒ.๐—น๐˜‡๐Ÿฐ will default to decompression (use -๐˜‡ to force compression) ยท ๐—น๐˜‡๐Ÿฐ shows real-time notification statistics during compresโ€ sion or decompression of a single file (use -๐—พ to silence them) ยท If no destination name is provided, result is sent to ๐˜€๐˜๐—ฑ๐—ผ๐˜‚๐˜ eฬฒxฬฒcฬฒeฬฒpฬฒtฬฒ iฬฒfฬฒ sฬฒtฬฒdฬฒoฬฒuฬฒtฬฒ iฬฒsฬฒ tฬฒhฬฒeฬฒ cฬฒoฬฒnฬฒsฬฒoฬฒlฬฒeฬฒ. ยท If no destination name is provided, ๐—ฎ๐—ป๐—ฑ if ๐˜€๐˜๐—ฑ๐—ผ๐˜‚๐˜ is the conโ€ sole, ๐—ณ๐—ถ๐—น๐—ฒ is compressed into ๐—ณ๐—ถ๐—น๐—ฒ.๐—น๐˜‡๐Ÿฐ. ยท As a consequence of previous rules, note the following examโ€ ple : ๐—น๐˜‡๐Ÿฐ ๐—ณ๐—ถ๐—น๐—ฒ | ๐—ฐ๐—ผ๐—ป๐˜€๐˜‚๐—บ๐—ฒ๐—ฟ sends compressed data to ๐—ฐ๐—ผ๐—ป๐˜€๐˜‚๐—บ๐—ฒ๐—ฟ through ๐˜€๐˜๐—ฑ๐—ผ๐˜‚๐˜, hence it does nฬฒoฬฒtฬฒ create ๐—ณ๐—ถ๐—น๐—ฒ.๐—น๐˜‡๐Ÿฐ. ยท Another consequence of those rules is that to run ๐—น๐˜‡๐Ÿฐ under ๐—ป๐—ผ๐—ต๐˜‚๐—ฝ, you should provide a destination file: ๐—ป๐—ผ๐—ต๐˜‚๐—ฝ ๐—น๐˜‡๐Ÿฐ ๐—ณ๐—ถ๐—น๐—ฒ ๐—ณ๐—ถ๐—น๐—ฒ.๐—น๐˜‡๐Ÿฐ, because ๐—ป๐—ผ๐—ต๐˜‚๐—ฝ writes the specified commandยดs output to a file. Default behaviors can be modified by opt-in commands, detailed below. ยท ๐—น๐˜‡๐Ÿฐ -๐—บ makes it possible to provide multiple input filenames, which will be compressed into files using suffix .๐—น๐˜‡๐Ÿฐ. Progress notifications are also disabled by default (use -๐˜ƒ to enable them). This mode has a behavior which more closely mimics ๐—ด๐˜‡๐—ถ๐—ฝ command line, with the main remaining difference being that source files are preserved by default. ยท Similarly, ๐—น๐˜‡๐Ÿฐ -๐—บ -๐—ฑ can decompress multiple *.๐—น๐˜‡๐Ÿฐ files. ยท Itยดs possible to opt-in to erase source files on successful compression or decompression, using --๐—ฟ๐—บ command. ยท Consequently, ๐—น๐˜‡๐Ÿฐ -๐—บ --๐—ฟ๐—บ behaves the same as ๐—ด๐˜‡๐—ถ๐—ฝ. ๐‚๐—ผ๐—ป๐—ฐ๐—ฎ๐˜๐—ฒ๐—ป๐—ฎ๐˜๐—ถ๐—ผ๐—ป ๐—ผ๐—ณ .๐—น๐˜‡๐Ÿฐ ๐—ณ๐—ถ๐—น๐—ฒ๐˜€ It is possible to concatenate .๐—น๐˜‡๐Ÿฐ files as is. ๐—น๐˜‡๐Ÿฐ will decomโ€ press such files as if they were a single .๐—น๐˜‡๐Ÿฐ file. For example: lz4 file1 > foo.lz4 lz4 file2 >> foo.lz4 Then ๐—น๐˜‡๐Ÿฐ๐—ฐ๐—ฎ๐˜ ๐—ณ๐—ผ๐—ผ.๐—น๐˜‡๐Ÿฐ is equivalent to ๐—ฐ๐—ฎ๐˜ ๐—ณ๐—ถ๐—น๐—ฒ๐Ÿญ ๐—ณ๐—ถ๐—น๐—ฒ๐Ÿฎ. ๐Ž๐๐“๐ˆ๐Ž๐๐’ ๐’๐—ต๐—ผ๐—ฟ๐˜ ๐—ฐ๐—ผ๐—บ๐—บ๐—ฎ๐—ป๐—ฑ๐˜€ ๐—ฐ๐—ผ๐—ป๐—ฐ๐—ฎ๐˜๐—ฒ๐—ป๐—ฎ๐˜๐—ถ๐—ผ๐—ป In some cases, some options can be expressed using short command -๐˜… or long command --๐—น๐—ผ๐—ป๐—ด-๐˜„๐—ผ๐—ฟ๐—ฑ. Short commands can be concateโ€ nated together. For example, -๐—ฑ -๐—ฐ is equivalent to -๐—ฑ๐—ฐ. 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. ๐Ž๐—ฝ๐—ฒ๐—ฟ๐—ฎ๐˜๐—ถ๐—ผ๐—ป ๐—บ๐—ผ๐—ฑ๐—ฒ -๐˜‡ --๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐˜€๐˜€ Compress. This is the default operation mode when no operโ€ ation mode option is specified, no other operation mode is implied from the command name (for example, ๐˜‚๐—ป๐—น๐˜‡๐Ÿฐ implies --๐—ฑ๐—ฒ๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐˜€๐˜€), nor from the input file name (for example, a file extension .๐—น๐˜‡๐Ÿฐ implies --๐—ฑ๐—ฒ๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐˜€๐˜€ by default). -๐˜‡ can also be used to force compression of an already comโ€ pressed .๐—น๐˜‡๐Ÿฐ file. -๐—ฑ --๐—ฑ๐—ฒ๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐˜€๐˜€ --๐˜‚๐—ป๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐˜€๐˜€ Decompress. --๐—ฑ๐—ฒ๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐˜€๐˜€ is also the default operation when the input filename has an .๐—น๐˜‡๐Ÿฐ extension. -๐˜ --๐˜๐—ฒ๐˜€๐˜ Test the integrity of compressed .๐—น๐˜‡๐Ÿฐ files. The decomโ€ pressed data is discarded. No files are created nor removed. -๐—ฏ# 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. Recโ€ ommended 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. -๐ƒ ๐—ฑ๐—ถ๐—ฐ๐˜๐—ถ๐—ผ๐—ป๐—ฎ๐—ฟ๐˜†๐๐—ฎ๐—บ๐—ฒ Compress, decompress or benchmark using dictionary dฬฒiฬฒcฬฒtฬฒiฬฒoฬฒโ€ฬฒ nฬฒaฬฒrฬฒyฬฒNฬฒaฬฒmฬฒeฬฒ. Compression and decompression must use the same dictionary to be compatible. Using a different dictionary during decompression will either abort due to decompresโ€ sion error, or generate a checksum error. -๐—ณ --[๐—ป๐—ผ-]๐—ณ๐—ผ๐—ฟ๐—ฐ๐—ฒ This option has several effects: If the target file already exists, overwrite it without prompting. When used with --๐—ฑ๐—ฒ๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐˜€๐˜€ and ๐—น๐˜‡๐Ÿฐ cannot recognize the type of the source file, copy the source file as is to standard output. This allows ๐—น๐˜‡๐Ÿฐ๐—ฐ๐—ฎ๐˜ --๐—ณ๐—ผ๐—ฟ๐—ฐ๐—ฒ to be used like ๐—ฐ๐—ฎ๐˜ (๐Ÿญ) for files that have not been compressed with ๐—น๐˜‡๐Ÿฐ. -๐—ฐ --๐˜€๐˜๐—ฑ๐—ผ๐˜‚๐˜ --๐˜๐—ผ-๐˜€๐˜๐—ฑ๐—ผ๐˜‚๐˜ Force write to standard output, even if it is the console. -๐—บ --๐—บ๐˜‚๐—น๐˜๐—ถ๐—ฝ๐—น๐—ฒ Multiple input files. Compressed file names will be appended a .๐—น๐˜‡๐Ÿฐ suffix. This mode also reduces notificaโ€ tion level. ๐—น๐˜‡๐Ÿฐ -๐—บ has a behavior equivalent to ๐—ด๐˜‡๐—ถ๐—ฝ -๐—ธ (it preserves source files by default). -๐—ฟ operate recursively on directories. This mode also sets -๐—บ (multiple input files). -๐# Block size [4-7](default : 7) -๐๐Ÿฐ= 64KB ; -๐๐Ÿฑ= 256KB ; -๐๐Ÿฒ= 1MB ; -๐๐Ÿณ= 4MB -๐๐ƒ Block Dependency (improves compression ratio on small blocks) --๐—ณ๐—ฎ๐˜€๐˜[=#] switch to ultra-fast compression levels. If =# is not present, it defaults to ๐Ÿญ. The higher the value, the faster the compression speed, at the cost of some compresโ€ sion ratio. This setting overwrites compression level if one was set previously. Similarly, if a compression level is set after --๐—ณ๐—ฎ๐˜€๐˜, it overrides it. --[๐—ป๐—ผ-]๐—ณ๐—ฟ๐—ฎ๐—บ๐—ฒ-๐—ฐ๐—ฟ๐—ฐ Select frame checksum (default:enabled) --[๐—ป๐—ผ-]๐—ฐ๐—ผ๐—ป๐˜๐—ฒ๐—ป๐˜-๐˜€๐—ถ๐˜‡๐—ฒ 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. --[๐—ป๐—ผ-]๐˜€๐—ฝ๐—ฎ๐—ฟ๐˜€๐—ฒ Sparse mode support (default:enabled on file, disabled on stdout) -๐—น Use Legacy format (typically for Linux Kernel compression) Note : -๐—น is not compatible with -๐—บ (--๐—บ๐˜‚๐—น๐˜๐—ถ๐—ฝ๐—น๐—ฒ) nor -๐—ฟ ๐Ž๐˜๐—ต๐—ฒ๐—ฟ ๐—ผ๐—ฝ๐˜๐—ถ๐—ผ๐—ป๐˜€ -๐˜ƒ --๐˜ƒ๐—ฒ๐—ฟ๐—ฏ๐—ผ๐˜€๐—ฒ Verbose mode -๐—พ --๐—พ๐˜‚๐—ถ๐—ฒ๐˜ Suppress warnings and real-time statistics; specify twice to suppress errors too -๐—ต -๐‡ --๐—ต๐—ฒ๐—น๐—ฝ Display help/long help and exit -๐• --๐˜ƒ๐—ฒ๐—ฟ๐˜€๐—ถ๐—ผ๐—ป Display Version number and exit -๐—ธ --๐—ธ๐—ฒ๐—ฒ๐—ฝ Preserve source files (default behavior) --๐—ฟ๐—บ Delete source files on successful compression or decomโ€ pression -- Treat all subsequent arguments as files ๐๐—ฒ๐—ป๐—ฐ๐—ต๐—บ๐—ฎ๐—ฟ๐—ธ ๐—บ๐—ผ๐—ฑ๐—ฒ -๐—ฏ# Benchmark file(s), using # compression level -๐—ฒ# Benchmark multiple compression levels, from b# to e# (included) -๐—ถ# Minimum evaluation time in seconds [1-9] (default : 3) ๐๐”๐†๐’ Report bugs at: https://github.com/lz4/lz4/issues ๐€๐”๐“๐‡๐Ž๐‘ Yann Collet lz4 1.8.3 September 2018 LZ4(1)