dwww Home | Manual pages | Find package

LBZIP2(1)                        User commands                       LBZIP2(1)

NAME
       lbzip2 - parallel bzip2 utility

SYNOPSIS
       lbzip2|bzip2  [-n WTHRS] [-k|-c|-t] [-d] [-1 .. -9] [-f] [-s] [-u] [-v]
       [-S] [ FILE ... ]

       lbunzip2|bunzip2 [-n WTHRS] [-k|-c|-t] [-z] [-f] [-s] [-u] [-v] [-S]  [
       FILE ... ]

       lbzcat|bzcat [-n WTHRS] [-z] [-f] [-s] [-u] [-v] [-S] [ FILE ... ]

       lbzip2|bzip2|lbunzip2|bunzip2|lbzcat|bzcat -h

DESCRIPTION
       Compress or decompress FILE operands or standard input to regular files
       or standard output using the Burrows-Wheeler  block-sorting  text  com-
       pression  algorithm. The lbzip2 utility employs multiple threads and an
       input-bound splitter even when  decompressing  .bz2  files  created  by
       standard bzip2.

       Compression is generally considerably better than that achieved by more
       conventional LZ77/LZ78-based compressors, and competitive with all  but
       the best of the PPM family of statistical compressors.

       Compression  is  always  performed,  even  if  the  compressed  file is
       slightly larger than the original. The  worst  case  expansion  is  for
       files  of zero length, which expand to fourteen bytes. Random data (in-
       cluding the output of most file compressors) is coded  with  asymptotic
       expansion of around 0.5%.

       The  command-line  options  are  deliberately  very similar to those of
       bzip2 and gzip, but they are not identical.

INVOCATION
       The default mode of operation is compression. If the utility is invoked
       as  lbunzip2 or bunzip2, the mode is switched to decompression. Calling
       the utility as lbzcat or bzcat selects decompression, with  the  decom-
       pressed byte-stream written to standard output.

OPTIONS
       -n WTHRS
              Set  the number of (de)compressor threads to WTHRS.  If this op-
              tion is not specified, lbzip2 tries to query the system for  the
              number of online processors (if both the compilation environment
              and the execution environment support that), or  exits  with  an
              error  (if it's unable to determine the number of processors on-
              line).

       -k, --keep
              Don't remove FILE  operands  after  successful  (de)compression.
              Open regular input files with more than one link.

       -c, --stdout
              Write  output  to  standard  output, even when FILE operands are
              present. Implies -k and excludes -t.

       -t, --test
              Test decompression; discard output  instead  of  writing  it  to
              files  or  standard output. Implies -k and excludes -c.  Roughly
              equivalent to passing -c and redirecting standard output to  the
              bit bucket.

       -d, --decompress
              Force  decompression  over the mode of operation selected by the
              invocation name.

       -z, --compress
              Force compression over the mode of operation selected by the in-
              vocation name.

       -1 .. -9
              Set  the  compression block size to 100K .. 900K, in 100K incre-
              ments.  Ignored during decompression. See also  the  BLOCK  SIZE
              section below.

       --fast Alias for -1.

       --best Alias for -9.  This is the default.

       -f, --force
              Open  non-regular  input  files. Open input files with more than
              one link, breaking links when -k isn't  specified  in  addition.
              Try  to  remove  each output file before opening it.  By default
              lbzip2 will not overwrite existing files; if you  want  this  to
              happen,  you  should  specify  -f.   If -c and -d are also given
              don't reject files not in bzip2 format, just copy  them  without
              change;  without -f lbzip2 would stop after reaching a file that
              is not in bzip2 format.

       -s, --small
              Reduce memory usage at cost of performance.

       -u, --sequential
              Perform splitting input blocks sequentially.  This  may  improve
              compression ratio and decrease CPU usage, but will degrade scal-
              ability.

       -v, --verbose
              Be more verbose. Print more detailed information about  (de)com-
              pression  progress  to  standard  error:  before processing each
              file, print a message stating the  names  of  input  and  output
              files;  during (de)compression, print a rough percentage of com-
              pleteness and estimated time of arrival (only if standard  error
              is  connected to a terminal); after processing each file print a
              message showing compression ratio, space savings, total compres-
              sion  time  (wall time) and average (de)compression speed (bytes
              of plain data processed per second).

       -S     Print condition variable statistics to standard error  for  each
              completed (de)compression operation. Useful in profiling.

       -q, --quiet, --repetitive-fast, --repetitive-best, --exponential
              Accepted for compatibility with bzip2, otherwise ignored.

       -h, --help
              Print  help  on  command-line  usage on standard output and exit
              successfully.

       -L, --license, -V, --version
              Print license and version information  on  standard  output  and
              exit successfully.

ENVIRONMENT
       LBZIP2, BZIP2, BZIP
              Before  parsing the command line, lbzip2 inserts the contents of
              these variables, in the order specified, between the  invocation
              name  and  the rest of the command line. Tokens are separated by
              spaces and tabs, which cannot be escaped.

OPERANDS
       FILE   Specify files to compress or decompress.

              FILEs with .bz2, .tbz, .tbz2 and  .tz2  name  suffixes  will  be
              skipped when compressing. When decompressing, .bz2 suffixes will
              be removed in output filenames; .tbz, .tbz2  and  .tz2  suffixes
              will  be replaced by .tar; other filenames will be suffixed with
              .out. If an INT or TERM signal is delivered to lbzip2,  then  it
              removes the regular output file currently open before exiting.

              If  no FILE is given, lbzip2 works as a filter, processing stan-
              dard input to standard output. In this case, lbzip2 will decline
              to write compressed output to a terminal (or read compressed in-
              put from a terminal), as this would be entirely incomprehensible
              and therefore pointless.

EXIT STATUS
       0      if  lbzip2 finishes successfully. This presumes that whenever it
              tries, lbzip2 never fails to write to standard error.

       1      if lbzip2 encounters a fatal error.

       4      if lbzip2 issues warnings without encountering  a  fatal  error.
              This  presumes  that  whenever  it  tries, lbzip2 never fails to
              write to standard error.

       SIGPIPE, SIGXFSZ
              if lbzip2 intends to exit with status 1 due to any fatal  error,
              but  any such signal with inherited SIG_DFL action was generated
              for lbzip2 previously, then lbzip2 terminates by way of  one  of
              said signals, after cleaning up any interrupted output file.

       SIGABRT
              if  a runtime assertion fails (i.e.  lbzip2 detects a bug in it-
              self). Hopefully whoever compiled your binary wasn't bold enough
              to #define NDEBUG.

       SIGINT, SIGTERM
              lbzip2  catches  these  signals  so that it can remove an inter-
              rupted output file. In such cases, lbzip2  exits  by  re-raising
              (one of) the received signal(s).

BLOCK SIZE
       lbzip2  compresses  large  files  in  blocks. It can operate at various
       block sizes, ranging from 100k to 900k in 100k steps, and it  allocates
       only  as  much  memory  as it needs to. The block size affects both the
       compression ratio achieved, and the amount of memory  needed  both  for
       compression  and decompression.  Compression and decompression speed is
       virtually unaffected by block size, provided that the file  being  pro-
       cessed is large enough to be split among all worker threads.

       The  flags  -1  through  -9  specify the block size to be 100,000 bytes
       through 900,000 bytes (the  default)  respectively.  At  decompression-
       time,  the  block size used for compression is read from the compressed
       file -- the flags -1 to -9 are irrelevant to and so ignored during  de-
       compression.

       Larger  block  sizes give rapidly diminishing marginal returns; most of
       the compression comes from the first two or three hundred  k  of  block
       size, a fact worth bearing in mind when using lbzip2 on small machines.
       It is also important to appreciate that the  decompression  memory  re-
       quirement  is  set  at compression-time by the choice of block size. In
       general you should try and use  the  largest  block  size  memory  con-
       straints allow.

       Another  significant  point applies to small files. By design, only one
       of lbzip2's worker threads can work on a single block. This means  that
       if  the number of blocks in the compressed file is less than the number
       of processors online, then some of worker threads will remain idle  for
       the  entire  time. Compressing small files with smaller block sizes can
       therefore significantly increase  both  compression  and  decompression
       speed.  The  speed  difference  is more noticeable as the number of CPU
       cores grows.

ERROR HANDLING
       Dealing with error conditions  is  the  least  satisfactory  aspect  of
       lbzip2.   The policy is to try and leave the filesystem in a consistent
       state, then quit, even if it means not processing  some  of  the  files
       mentioned in the command line.

       `A  consistent state' means that a file exists either in its compressed
       or uncompressed form, but not both. This boils down to the rule `delete
       the  output  file  if  an error condition occurs, leaving the input in-
       tact'. Input files are only deleted when we can be pretty sure the out-
       put file has been written and closed successfully.

RESOURCE ALLOCATION
       lbzip2  needs  various  kinds of system resources to operate. Those in-
       clude memory, threads, mutexes and condition variables. The  policy  is
       to simply give up if a resource allocation failure occurs.

       Resource  consumption  grows linearly with number of worker threads. If
       lbzip2 fails because of lack of some resources,  decreasing  number  of
       worker  threads may help. It would be possible for lbzip2 to try to re-
       duce number of worker threads (and hence the resource consumption),  or
       to  move  on  to subsequent files in the hope that some might need less
       resources, but the complications for doing this seem more trouble  than
       they are worth.

DAMAGED FILES
       lbzip2  attempts  to  compress  data  by performing several non-trivial
       transformations on it. Every compression of a file implies  an  assump-
       tion  that  the  compressed  file  can be decompressed to reproduce the
       original. Great efforts in design, coding and testing have been made to
       ensure  that  this program works correctly.  However, the complexity of
       the algorithms, and, in particular, the  presence  of  various  special
       cases  in  the  code which occur with very low but non-zero probability
       make it very difficult to rule out the possibility of bugs remaining in
       the  program. That is not to say this program is inherently unreliable.
       Indeed, I very much hope the opposite is true -- lbzip2 has been  care-
       fully constructed and extensively tested.

       As  a  self-check  for your protection, lbzip2 uses 32-bit CRCs to make
       sure that the decompressed version of a file is identical to the origi-
       nal. This guards against corruption of the compressed data, and against
       undiscovered bugs in lbzip2 (hopefully unlikely). The chances  of  data
       corruption  going  undetected  is microscopic, about one chance in four
       billion for each file processed. Be aware, though, that the  check  oc-
       curs upon decompression, so it can only tell you that that something is
       wrong.

       CRCs can only detect corrupted files, they can't help you  recover  the
       original,  uncompressed  data.  However, because of the block nature of
       the compression algorithm, it may be possible to recover some parts  of
       the damaged file, even if some blocks are destroyed.

BUGS
       Separate input files don't share worker threads; at most one input file
       is worked on at any moment.

AUTHORS
       lbzip2 was originally written by Laszlo  Ersek  <lacos@caesar.elte.hu>,
       http://lacos.hu/. Versions 2.0 and later were written by Mikolaj Izdeb-
       ski.

COPYRIGHT
       Copyright (C) 2011, 2012, 2013 Mikolaj Izdebski
       Copyright (C) 2008, 2009, 2010 Laszlo Ersek
       Copyright (C) 1996 Julian Seward

       This manual page is part of lbzip2, version 2.5. lbzip2 is  free  soft-
       ware:  you  can redistribute it and/or modify it under the terms of the
       GNU General Public License as published by the  Free  Software  Founda-
       tion,  either  version  3 of the License, or (at your option) any later
       version.

       lbzip2 is distributed in the hope that it will be useful,  but  WITHOUT
       ANY  WARRANTY;  without even the implied warranty of MERCHANTABILITY or
       FITNESS FOR A PARTICULAR PURPOSE. See the GNU  General  Public  License
       for more details.

       You should have received a copy of the GNU General Public License along
       with lbzip2. If not, see <http://www.gnu.org/licenses/>.

THANKS
       Adam Maulis at ELTE IIG; Julian Seward;  Paul  Sladen;  Michael  Thomas
       from  Caltech  HEP; Bryan Stillwell; Zsolt Bartos-Elekes; Imre Csatlos;
       Gabor Kovesdan; Paul Wise; Paolo Bonzini; Department of Electrical  and
       Information Engineering at the University of Oulu; Yuta Mori.

SEE ALSO
       lbzip2 home page
              http://lbzip2.org/

       bzip2(1)
              http://www.bzip.org/

       pbzip2(1)
              http://compression.ca/pbzip2/

       bzip2smp(1)
              http://bzip2smp.sourceforge.net/

       smpbzip2(1)
              http://home.student.utwente.nl/n.werensteijn/smpbzip2/

       dbzip2(1)
              http://www.mediawiki.org/wiki/Dbzip2

       p7zip(1)
              http://p7zip.sourceforge.net/

lbzip2-2.5                       26 March 2014                       LBZIP2(1)

Generated by dwww version 1.14 on Fri Jan 24 06:19:15 CET 2025.