The lzip file format is designed for data sharing and long-term archiving, taking into account both data integrity and decoder availability:
A nice feature of the lzip format is that a corrupt byte is easier to repair the nearer it is from the beginning of the file. Therefore, with the help of lziprecover, losing an entire archive just because of a corrupt byte near the beginning is a thing of the past.
Lzip uses the same well-defined exit status values used by bzip2, which makes it safer than compressors returning ambiguous warning values (like gzip) when it is used as a back end for other programs like tar or zutils.
In this lzip benchmark page you can find some tests showing how well lzip can replace gzip and bzip2 as general purpose compressor for unix-like systems.
When compressing, lzip replaces every file given in the command line with a compressed version of itself, with the name "original_name.lz".
(De)compressing a file is much like copying or moving it; therefore lzip preserves the access and modification dates, permissions, and, when possible, ownership of the file just as "cp -p" does. (If the user ID or the group ID can't be duplicated, the file permission bits S_ISUID and S_ISGID are cleared).
Lzip is able to read from some types of non regular files if the "--stdout" option is specified.
If no file names are specified, lzip compresses (or decompresses) from standard input to standard output. In this case, lzip will decline to write compressed output to a terminal, as this would be entirely incomprehensible and therefore pointless.
Lzip will correctly decompress a file which is the concatenation of two or more compressed files. The result is the concatenation of the corresponding uncompressed files. Integrity testing of concatenated compressed files is also supported.
Lzip can produce multi-member files and safely recover, with lziprecover, the undamaged members in case of file damage. Lzip can also split the compressed output in volumes of a given size, even when reading from standard input. This allows the direct creation of multivolume compressed tar archives.
Lzip is able to compress and decompress streams of unlimited size by automatically creating multi-member output. The members so created are large, about 64 PiB each.
There is no such thing as a "LZMA algorithm"; it is more like a "LZMA coding scheme". For example, the option '-0' of lzip uses the scheme in almost the simplest way possible; issuing the longest match it can find, or a literal byte if it can't find a match. Inversely, a much more elaborated way of finding coding sequences of minimum price than the one currently used by lzip could be developed, and the resulting sequence could also be coded using the LZMA coding scheme.
Lzip currently implements two variants of the LZMA algorithm; fast (used by option -0) and normal (used by all other compression levels).
The high compression of LZMA comes from combining two basic, well-proven compression ideas: sliding dictionaries (LZ77/78) and markov models (the thing used by every compression algorithm that uses a range encoder or similar order-0 entropy coder as its last stage) with segregation of contexts according to what the bits are used for.
The ideas embodied in lzip are due to (at least) the following people: Abraham Lempel and Jacob Ziv (for the LZ algorithm), Andrey Markov (for the definition of Markov chains), G.N.N. Martin (for the definition of range encoding), Igor Pavlov (for putting all the above together in LZMA), and Julian Seward (for bzip2's CLI).
Lzlib - A compression library for the lzip file format, written in C.
Lunzip - A decompressor for lzip files, written in C.
Clzip - A C implementation of lzip for systems lacking a C++ compiler.
Lziprecover - A data recovery tool and decompressor for the lzip format.
Zutils - Replacement for zcat, zdiff, zgrep, etc, that understands lzip, bzip2 and gzip formats.
Pdlzip - A limited, "public domain" C implementation of the lzip data compressor, intended for those who can't distribute GPL licensed Free Software. Pdlzip is also able to decompress legacy lzma-alone (.lzma) files.
Lzd - An educational decompressor for the lzip format.
An online manual for lzip can be found here.
Jonatan Yong kindly provided a Windows32 port of lzip that can also be downloaded from the Savannah download link just above.
An archive of the bug report mailing list is available at http://lists.gnu.org/mailman/listinfo/lzip-bug.
See also the lzip project page at Savannah.
GNU Automake - A Makefile generator able to create lzip-compressed tarballs.
Documentation as an indicator of code quality - A different review of lzip.
Dragora GNU/Linux - A GNU/Linux distribution using lzip in its package system.
Easylzma - C library and tools for lzip and lzma-alone file formats.
File Roller - An archive manager for GNOME that understands lzip files.
Lesspipe.sh - View the contents of lzipped files with the pager less.
Littleutils - Convert your files to lzip format.
Man-db - An implementation of the Unix man command able to read lzipped pages.
GNU Midnight Commander - A visual file manager that understands lzip files.
RPM - RPM Package Manager that uses lzip to compress packages.
GNU Tar, Star - Automatically create and extract lzip-compressed tar archives.
GNU Texinfo - The GNU Documentation System understands lzip-compressed manuals.
Z - A simple, safe and convenient front-end for lzip, bzip2 and gzip.
Download lzip for AIX, ALT Linux, Amiga, Arch Linux, Debian, Exherbo, Fedora, FreeBSD, Gentoo, HP-UX, Mac (fink), Mac (softpedia), NetBSD, NixOS, OS/2, Slackware, Solaris (OpenCSW), Ubuntu, Windows (Cygwin).
You are free to copy, modify and distribute all or part of this article without limitation.