Lzip

 [lzip logo]

Introduction

Lzip is a lossless data compressor based on the LZMA algorithm, with very safe integrity checking and a user interface similar to the one of gzip or bzip2. Lzip decompresses almost as fast as gzip and compresses better than bzip2, which makes it well suited for software distribution and data archiving.

Here you can find some tests showing how well lzip complements gzip and bzip2.

The lzip file format (.lz) is an improved successor of the lzma_alone file format (.lzma). Software tools that decompress both formats or can convert lzma_alone files to lzip format are listed below, in the Links section.

Lzip replaces every file given in the command line with a compressed version of itself, with the name "original_name.lz". Each compressed file has the same modification date, permissions, and, when possible, ownership as the corresponding original, so that these properties can be correctly restored at decompression time. 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 multimember 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 will automatically use the smallest possible dictionary size for each member without exceeding the given limit. It is important to appreciate that the decompression memory requirement is affected at compression time by the choice of dictionary size limit.

As a self-check for your protection, lzip stores in the member trailer the 32-bit CRC of the original data and the size of the original data, to make sure that the decompressed version of the data is identical to the original. This guards against corruption of the compressed data, and against undetected bugs in lzip (hopefully very unlikely). The chances of data corruption going undetected are microscopic, less than one chance in 4000 million for each member processed. Be aware, though, that the check occurs upon decompression, so it can only tell you that something is wrong. It can't help you recover the original uncompressed data.

The LZMA (Lempel-Ziv-Markov chain-Algorithm) algorithm was designed by Igor Pavlov. 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.

Related projects

Clzip - A C implementation of lzip for systems lacking a C++ compiler.

Plzip - A multi-threaded compressor using the lzip file format.

Lzlib - A compression library for the lzip file format.

Zutils - Replacement for zdiff, zgrep, etc, that understands bzip2, gzip and lzip formats.

Pdlzip - A limited, "public domain" implementation of the lzip data compressor, intended for those who can't distribute GPL licensed Free Software. Pdlzip is able to decompress legacy lzma-alone (.lzma) files.

Download

The latest released version of lzip can be found here. You may also subscribe to Freshmeat and receive an email every time a new version is released.

Jonatan Yong kindly provided a Windows32 port of lzip that can also be downloaded from the link above.

How to Get Help

An online manual for lzip can be found here.

For general discussion of bugs in lzip the mailing list lzip-bug@nongnu.org is the most appropriate forum. Please send messages as plain text. Please do not send messages encoded as HTML nor encoded as base64 MIME nor included as multiple formats. Please include a descriptive subject line. If all of the subject are "bug in lzip" it is impossible to differentiate them.

An archive of the bug report mailing list is available at http://lists.nongnu.org/mailman/listinfo/lzip-bug.

How to Help

To contact the author, either to report a bug or to contribute fixes or improvements, send mail to lzip-bug@nongnu.org. Please send messages as plain text. If posting patches they should be in unified diff format against the latest version. They should include a text description.

See also the lzip project page at Savannah.

Links

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.

Z - A simple, safe and convenient front-end for bzip2, gzip and lzip.

Download lzip for AIX, ALT Linux, Amiga, Arch Linux, Debian, Exherbo, Fedora, FreeBSD, FreeBSD (freshports), Gentoo, HP-UX, Mac (darwinports), Mac (fink), Mac (macports), Mac (softpedia), NetBSD, OS/2, PLD-Linux, Slackware, Slitaz, Solaris (CSW), Solaris (Sunfreeware), Ubuntu, Unix, Windows (Cygwin).

Valid HTML 4.01!


Copyright © 2010 Antonio Diaz Diaz
Lzip logo Copyright © 2009 Sonia Diaz Pacheco

You are free to copy, modify and distribute all or part of this article without limitation.

Updated: 2010/04/21