From b4bcb97e386a30996d3d4df8255116fc09c1f505 Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Sun, 11 Jul 2010 19:36:43 +0300 Subject: [PATCH] Version 1.23.90 * NEWS, configure.ac: Version 1.23.90 * doc/tar.texi: Document the use of lbzip2. --- NEWS | 1 + configure.ac | 2 +- doc/tar.texi | 199 +++++++++++++++++++++++++++++++++------------------ 3 files changed, 131 insertions(+), 71 deletions(-) diff --git a/NEWS b/NEWS index 5950259..11d3fa0 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,7 @@ GNU tar NEWS - User visible changes. 2010-03-28 Please send GNU tar bug reports to +version 1.23.90 - (Git) * The --full-time option. diff --git a/configure.ac b/configure.ac index 5535b70..e84a839 100644 --- a/configure.ac +++ b/configure.ac @@ -19,7 +19,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. -AC_INIT([GNU tar], [1.23], [bug-tar@gnu.org]) +AC_INIT([GNU tar], [1.23.90], [bug-tar@gnu.org]) AC_CONFIG_SRCDIR([src/tar.c]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_HEADERS([config.h]) diff --git a/doc/tar.texi b/doc/tar.texi index ed93e57..30fa61f 100644 --- a/doc/tar.texi +++ b/doc/tar.texi @@ -330,6 +330,10 @@ Using Less Space through Compression * gzip:: Creating and Reading Compressed Archives * sparse:: Archiving Sparse Files +Creating and Reading Compressed Archives + +* lbzip2:: Using lbzip2 with @GNUTAR{}. + Making @command{tar} Archives More Portable * Portable Names:: Portable Names @@ -8701,7 +8705,7 @@ For example: $ @kbd{tar cfz archive.tar.gz .} @end smallexample -You can also let @GNUTAR{} select the compression program basing on +You can also let @GNUTAR{} select the compression program based on the suffix of the archive file name. This is done using @option{--auto-compress} (@option{-a}) command line option. For example, the following invocation will use @command{bzip2} for @@ -8766,34 +8770,9 @@ cannot append another @command{tar} archive to a compressed archive using @option{--concatenate} (@option{-A}). Secondly, multi-volume archives cannot be compressed. -The following table summarizes compression options used by @GNUTAR{}. +The following options allow to select a particular compressor program: @table @option -@anchor{auto-compress} -@opindex auto-compress -@item --auto-compress -@itemx -a -Select a compression program to use by the archive file name -suffix. The following suffixes are recognized: - -@multitable @columnfractions 0.3 0.6 -@headitem Suffix @tab Compression program -@item @samp{.gz} @tab @command{gzip} -@item @samp{.tgz} @tab @command{gzip} -@item @samp{.taz} @tab @command{gzip} -@item @samp{.Z} @tab @command{compress} -@item @samp{.taZ} @tab @command{compress} -@item @samp{.bz2} @tab @command{bzip2} -@item @samp{.tz2} @tab @command{bzip2} -@item @samp{.tbz2} @tab @command{bzip2} -@item @samp{.tbz} @tab @command{bzip2} -@item @samp{.lz} @tab @command{lzip} -@item @samp{.lzma} @tab @command{lzma} -@item @samp{.tlz} @tab @command{lzma} -@item @samp{.lzo} @tab @command{lzop} -@item @samp{.xz} @tab @command{xz} -@end multitable - @opindex gzip @opindex ungzip @item -z @@ -8801,69 +8780,110 @@ suffix. The following suffixes are recognized: @itemx --ungzip Filter the archive through @command{gzip}. -You can use @option{--gzip} and @option{--gunzip} on physical devices -(tape drives, etc.) and remote files as well as on normal files; data -to or from such devices or remote files is reblocked by another copy -of the @command{tar} program to enforce the specified (or default) record -size. The default compression parameters are used; if you need to -override them, set @env{GZIP} environment variable, e.g.: - -@smallexample -$ @kbd{GZIP=--best tar cfz archive.tar.gz subdir} -@end smallexample - -@noindent -Another way would be to avoid the @option{--gzip} (@option{--gunzip}, @option{--ungzip}, @option{-z}) option and run -@command{gzip} explicitly: - -@smallexample -$ @kbd{tar cf - subdir | gzip --best -c - > archive.tar.gz} -@end smallexample - -@cindex corrupted archives -About corrupted compressed archives: @command{gzip}'ed files have no -redundancy, for maximum compression. The adaptive nature of the -compression scheme means that the compression tables are implicitly -spread all over the archive. If you lose a few blocks, the dynamic -construction of the compression tables becomes unsynchronized, and there -is little chance that you could recover later in the archive. - -There are pending suggestions for having a per-volume or per-file -compression in @GNUTAR{}. This would allow for viewing the -contents without decompression, and for resynchronizing decompression at -every volume or file, in case of corrupted archives. Doing so, we might -lose some compressibility. But this would have make recovering easier. -So, there are pros and cons. We'll see! - -@opindex bzip2 +@opindex xz @item -J @itemx --xz -Filter the archive through @code{xz}. Otherwise like -@option{--gzip}. +Filter the archive through @code{xz}. @item -j @itemx --bzip2 -Filter the archive through @code{bzip2}. Otherwise like @option{--gzip}. +Filter the archive through @code{bzip2}. @opindex lzip @item --lzip -Filter the archive through @command{lzip}. Otherwise like @option{--gzip}. +Filter the archive through @command{lzip}. @opindex lzma @item --lzma -Filter the archive through @command{lzma}. Otherwise like @option{--gzip}. +Filter the archive through @command{lzma}. @opindex lzop @item --lzop -Filter the archive through @command{lzop}. Otherwise like -@option{--gzip}. +Filter the archive through @command{lzop}. @opindex compress @opindex uncompress @item -Z @itemx --compress @itemx --uncompress -Filter the archive through @command{compress}. Otherwise like @option{--gzip}. +Filter the archive through @command{compress}. +@end table + +When any of these options is given, @GNUTAR{} searches the compressor +binary in the current path and invokes it. The name of the compressor +program is specified at compilation time using a corresponding +@option{--with-@var{compname}} option to @command{configure}, e.g. +@option{--with-bzip2} to select a specific @command{bzip2} binary. +@xref{lbzip2}, for a detailed discussion. + +The output produced by @command{tar --help} shows the actual +compressor names along with each of these options. + +You can use any of these options on physical devices (tape drives, +etc.) and remote files as well as on normal files; data to or from +such devices or remote files is reblocked by another copy of the +@command{tar} program to enforce the specified (or default) record +size. The default compression parameters are used. Most compression +programs allow to override these by setting a program-specific +environment variable. For example, when using @command{gzip} you can +use @env{GZIP} as in the example below: + +@smallexample +$ @kbd{GZIP=--best tar cfz archive.tar.gz subdir} +@end smallexample + +@noindent +Another way would be to use the @option{-I} option instead (see +below), e.g.: + +@smallexample +$ @kbd{tar -cf archive.tar.gz -I 'gzip --best' subdir} +@end smallexample + +@noindent +Finally, the third, traditional, way to achieve the same result is to +use pipe: + +@smallexample +$ @kbd{tar cf - subdir | gzip --best -c - > archive.tar.gz} +@end smallexample + +@cindex corrupted archives +About corrupted compressed archives: compressed files have no +redundancy, for maximum compression. The adaptive nature of the +compression scheme means that the compression tables are implicitly +spread all over the archive. If you lose a few blocks, the dynamic +construction of the compression tables becomes unsynchronized, and there +is little chance that you could recover later in the archive. + +Another compression options provide a better control over creating +compressed archives. These are: + +@table @option +@anchor{auto-compress} +@opindex auto-compress +@item --auto-compress +@itemx -a +Select a compression program to use by the archive file name +suffix. The following suffixes are recognized: + +@multitable @columnfractions 0.3 0.6 +@headitem Suffix @tab Compression program +@item @samp{.gz} @tab @command{gzip} +@item @samp{.tgz} @tab @command{gzip} +@item @samp{.taz} @tab @command{gzip} +@item @samp{.Z} @tab @command{compress} +@item @samp{.taZ} @tab @command{compress} +@item @samp{.bz2} @tab @command{bzip2} +@item @samp{.tz2} @tab @command{bzip2} +@item @samp{.tbz2} @tab @command{bzip2} +@item @samp{.tbz} @tab @command{bzip2} +@item @samp{.lz} @tab @command{lzip} +@item @samp{.lzma} @tab @command{lzma} +@item @samp{.tlz} @tab @command{lzma} +@item @samp{.lzo} @tab @command{lzop} +@item @samp{.xz} @tab @command{xz} +@end multitable @opindex use-compress-program @item --use-compress-program=@var{prog} @@ -8957,6 +8977,45 @@ The above is based on the following discussion: end up with less space on the tape. @end ignore +@menu +* lbzip2:: Using lbzip2 with @GNUTAR{}. +@end menu + +@node lbzip2 +@subsubsection Using lbzip2 with @GNUTAR{}. +@cindex lbzip2 +@cindex Laszlo Ersek + @command{Lbzip2} is a multithreaded utility for handling +@samp{bzip2} compression, written by Laszlo Ersek. It makes use of +multiple processors to speed up its operation and in general works +considerably faster than @command{bzip2}. For a detailed description +of @command{lbzip2} see @uref{http://freshmeat.net/@/projects/@/lbzip2} and +@uref{http://www.linuxinsight.com/@/lbzip2-parallel-bzip2-utility.html, +lbzip2: parallel bzip2 utility}. + + Recent versions of @command{lbzip2} are mostly command line compatible +with @command{bzip2}, which makes it possible to automatically invoke +it via the @option{--bzip2} @GNUTAR{} command line option. To do so, +@GNUTAR{} must be configured with the @option{--with-bzip2} command +line option, like this: + +@smallexample +$ @kbd{./configure --with-bzip2=lbzip2 [@var{other-options}]} +@end smallexample + + Once configured and compiled this way, @command{tar --help} will show the +following: + +@smallexample +@group +$ @kbd{tar --help | grep -- --bzip2} + -j, --bzip2 filter the archive through lbzip2 +@end group +@end smallexample + +@noindent +which means that running @command{tar --bzip2} will invoke @command{lbzip2}. + @node sparse @subsection Archiving Sparse Files @cindex Sparse Files -- 2.44.0