349 lines
10 KiB
Text
349 lines
10 KiB
Text
|
\input texinfo @c -*-texinfo-*-
|
||
|
@c %**start of header
|
||
|
@setfilename tarlz.info
|
||
|
@documentencoding ISO-8859-15
|
||
|
@settitle Tarlz Manual
|
||
|
@finalout
|
||
|
@c %**end of header
|
||
|
|
||
|
@set UPDATED 23 April 2018
|
||
|
@set VERSION 0.4
|
||
|
|
||
|
@dircategory Data Compression
|
||
|
@direntry
|
||
|
* Tarlz: (tarlz). Archiver with multimember lzip compression
|
||
|
@end direntry
|
||
|
|
||
|
|
||
|
@ifnothtml
|
||
|
@titlepage
|
||
|
@title Tarlz
|
||
|
@subtitle Archiver with multimember lzip compression
|
||
|
@subtitle for Tarlz version @value{VERSION}, @value{UPDATED}
|
||
|
@author by Antonio Diaz Diaz
|
||
|
|
||
|
@page
|
||
|
@vskip 0pt plus 1filll
|
||
|
@end titlepage
|
||
|
|
||
|
@contents
|
||
|
@end ifnothtml
|
||
|
|
||
|
@node Top
|
||
|
@top
|
||
|
|
||
|
This manual is for Tarlz (version @value{VERSION}, @value{UPDATED}).
|
||
|
|
||
|
@menu
|
||
|
* Introduction:: Purpose and features of tarlz
|
||
|
* Invoking tarlz:: Command line interface
|
||
|
* Examples:: A small tutorial with examples
|
||
|
* Problems:: Reporting bugs
|
||
|
* Concept index:: Index of concepts
|
||
|
@end menu
|
||
|
|
||
|
@sp 1
|
||
|
Copyright @copyright{} 2013-2018 Antonio Diaz Diaz.
|
||
|
|
||
|
This manual is free documentation: you have unlimited permission
|
||
|
to copy, distribute and modify it.
|
||
|
|
||
|
|
||
|
@node Introduction
|
||
|
@chapter Introduction
|
||
|
@cindex introduction
|
||
|
|
||
|
Tarlz is a small and simple implementation of the tar archiver. By
|
||
|
default tarlz creates, lists and extracts archives in the 'ustar' format
|
||
|
compressed with lzip on a per file basis. Tarlz can append files to the
|
||
|
end of such compressed archives.
|
||
|
|
||
|
Each tar member is compressed in its own lzip member, as well as the
|
||
|
end-of-file blocks. This same method works for any tar format (gnu,
|
||
|
ustar, posix) and is fully backward compatible with standard tar tools
|
||
|
like GNU tar, which treat the resulting multimember tar.lz archive like
|
||
|
any other tar.lz archive.
|
||
|
|
||
|
Tarlz can create tar archives with four levels of compression
|
||
|
granularity; per file, per directory, appendable solid, and solid.
|
||
|
|
||
|
Tarlz is intended as a showcase project for the maintainers of real tar
|
||
|
programs to evaluate the format and perhaps implement it in their tools.
|
||
|
|
||
|
The diagram below shows the correspondence between tar members (formed
|
||
|
by a header plus optional data) in the tar archive and
|
||
|
@uref{http://www.nongnu.org/lzip/manual/lzip_manual.html#File-format,,lzip members}
|
||
|
in the resulting multimember tar.lz archive:
|
||
|
@ifnothtml
|
||
|
@xref{File format,,,lzip}.
|
||
|
@end ifnothtml
|
||
|
|
||
|
@verbatim
|
||
|
tar
|
||
|
+========+======+========+======+========+======+========+
|
||
|
| header | data | header | data | header | data | eof |
|
||
|
+========+======+========+======+========+======+========+
|
||
|
|
||
|
tar.lz
|
||
|
+===============+===============+===============+========+
|
||
|
| member | member | member | member |
|
||
|
+===============+===============+===============+========+
|
||
|
@end verbatim
|
||
|
|
||
|
@noindent
|
||
|
Of course, compressing each file (or each directory) individually is
|
||
|
less efficient than compressing the whole tar archive, but it has the
|
||
|
following advantages:
|
||
|
|
||
|
@itemize @bullet
|
||
|
@item
|
||
|
The resulting multimember tar.lz archive can be decompressed in
|
||
|
parallel with plzip, multiplying the decompression speed.
|
||
|
|
||
|
@item
|
||
|
New members can be appended to the archive (by removing the eof
|
||
|
member) just like to an uncompressed tar archive.
|
||
|
|
||
|
@item
|
||
|
It is a safe posix-style backup format. In case of corruption,
|
||
|
tarlz can extract all the undamaged members from the tar.lz
|
||
|
archive, skipping over the damaged members, just like the standard
|
||
|
(uncompressed) tar. Moreover, lziprecover can be used to recover at
|
||
|
least part of the contents of the damaged members.
|
||
|
|
||
|
@item
|
||
|
A multimember tar.lz archive is usually smaller than the
|
||
|
corresponding solidly compressed tar.gz archive, except when
|
||
|
individually compressing files smaller than about 32 KiB.
|
||
|
@end itemize
|
||
|
|
||
|
|
||
|
@node Invoking tarlz
|
||
|
@chapter Invoking tarlz
|
||
|
@cindex invoking
|
||
|
@cindex options
|
||
|
@cindex usage
|
||
|
@cindex version
|
||
|
|
||
|
The format for running tarlz is:
|
||
|
|
||
|
@example
|
||
|
tarlz [@var{options}] [@var{files}]
|
||
|
@end example
|
||
|
|
||
|
@noindent
|
||
|
On archive creation or appending, tarlz removes leading and trailing
|
||
|
slashes from file names, as well as file name prefixes containing a
|
||
|
@samp{..} component. On extraction, archive members containing a
|
||
|
@samp{..} component are skipped.
|
||
|
|
||
|
tarlz supports the following options:
|
||
|
|
||
|
@table @code
|
||
|
@item -h
|
||
|
@itemx --help
|
||
|
Print an informative help message describing the options and exit.
|
||
|
|
||
|
@item -V
|
||
|
@itemx --version
|
||
|
Print the version number of tarlz on the standard output and exit.
|
||
|
|
||
|
@item -c
|
||
|
@itemx --create
|
||
|
Create a new archive.
|
||
|
|
||
|
@item -C @var{dir}
|
||
|
@itemx --directory=@var{dir}
|
||
|
Change to directory @var{dir}. When creating or appending, the position
|
||
|
of each @code{-C} option in the command line is significant; it will
|
||
|
change the current working directory for the following @var{files} until
|
||
|
a new @code{-C} option appears in the command line. When extracting, all
|
||
|
the @code{-C} options are executed in sequence before starting the
|
||
|
extraction. Listing ignores any @code{-C} options specified. @var{dir}
|
||
|
is relative to the then current working directory, perhaps changed by a
|
||
|
previous @code{-C} option.
|
||
|
|
||
|
@item -f @var{archive}
|
||
|
@itemx --file=@var{archive}
|
||
|
Use archive file @var{archive}. @samp{-} used as an @var{archive}
|
||
|
argument reads from standard input or writes to standard output.
|
||
|
|
||
|
@item -q
|
||
|
@itemx --quiet
|
||
|
Quiet operation. Suppress all messages.
|
||
|
|
||
|
@item -r
|
||
|
@itemx --append
|
||
|
Append files to the end of an archive. The archive must be a regular
|
||
|
(seekable) file compressed as a multimember lzip file, and the two
|
||
|
end-of-file blocks plus any zero padding must be contained in the last
|
||
|
lzip member of the archive. First this last member is removed, then the
|
||
|
new members are appended, and then a new end-of-file member is appended
|
||
|
to the archive. Exit with status 0 without modifying the archive if no
|
||
|
@var{files} have been specified. tarlz can't append files to an
|
||
|
uncompressed tar archive.
|
||
|
|
||
|
@item -t
|
||
|
@itemx --list
|
||
|
List the contents of an archive.
|
||
|
|
||
|
@item -v
|
||
|
@itemx --verbose
|
||
|
Verbosely list files processed.
|
||
|
|
||
|
@item -x
|
||
|
@itemx --extract
|
||
|
Extract files from an archive.
|
||
|
|
||
|
@item -0 .. -9
|
||
|
Set the compression level. The default compression level is @samp{-6}.
|
||
|
|
||
|
@item --asolid
|
||
|
When creating or appending to a compressed archive, use appendable solid
|
||
|
compression. All the files being added to the archive are compressed
|
||
|
into a single lzip member, but the end-of-file blocks are compressed
|
||
|
into a separate lzip member. This creates a solidly compressed
|
||
|
appendable archive.
|
||
|
|
||
|
@item --dsolid
|
||
|
When creating or appending to a compressed archive, use solid
|
||
|
compression for each directory especified in the command line. The
|
||
|
end-of-file blocks are compressed into a separate lzip member. This
|
||
|
creates a compressed appendable archive with a separate lzip member for
|
||
|
each top-level directory.
|
||
|
|
||
|
@item --solid
|
||
|
When creating or appending to a compressed archive, use solid
|
||
|
compression. The files being added to the archive, along with the
|
||
|
end-of-file blocks, are compressed into a single lzip member. The
|
||
|
resulting archive is not appendable. No more files can be later appended
|
||
|
to the archive without decompressing it first.
|
||
|
|
||
|
@item --group=@var{group}
|
||
|
When creating or appending, use @var{group} for files added to the
|
||
|
archive. If @var{group} is not a valid group name, it is decoded as a
|
||
|
decimal numeric group ID.
|
||
|
|
||
|
@item --owner=@var{owner}
|
||
|
When creating or appending, use @var{owner} for files added to the
|
||
|
archive. If @var{owner} is not a valid user name, it is decoded as a
|
||
|
decimal numeric user ID.
|
||
|
|
||
|
@item --uncompressed
|
||
|
With @code{--create}, don't compress the created tar archive. Create an
|
||
|
uncompressed tar archive instead.
|
||
|
|
||
|
@end table
|
||
|
|
||
|
Exit status: 0 for a normal exit, 1 for environmental problems (file not
|
||
|
found, invalid flags, I/O errors, etc), 2 to indicate a corrupt or
|
||
|
invalid input file, 3 for an internal consistency error (eg, bug) which
|
||
|
caused tarlz to panic.
|
||
|
|
||
|
|
||
|
@node Examples
|
||
|
@chapter A small tutorial with examples
|
||
|
@cindex examples
|
||
|
|
||
|
@noindent
|
||
|
Example 1: Create a multimember compressed archive @samp{archive.tar.lz}
|
||
|
containing files @samp{a}, @samp{b} and @samp{c}.
|
||
|
|
||
|
@example
|
||
|
tarlz -cf archive.tar.lz a b c
|
||
|
@end example
|
||
|
|
||
|
@sp 1
|
||
|
@noindent
|
||
|
Example 2: Append files @samp{d} and @samp{e} to the multimember
|
||
|
compressed archive @samp{archive.tar.lz}.
|
||
|
|
||
|
@example
|
||
|
tarlz -rf archive.tar.lz d e
|
||
|
@end example
|
||
|
|
||
|
@sp 1
|
||
|
@noindent
|
||
|
Example 3: Create a solidly compressed appendable archive
|
||
|
@samp{archive.tar.lz} containing files @samp{a}, @samp{b} and @samp{c}.
|
||
|
Then append files @samp{d} and @samp{e} to the archive.
|
||
|
|
||
|
@example
|
||
|
tarlz --asolid -cf archive.tar.lz a b c
|
||
|
tarlz --asolid -rf archive.tar.lz d e
|
||
|
@end example
|
||
|
|
||
|
@sp 1
|
||
|
@noindent
|
||
|
Example 4: Create a compressed appendable archive containing directories
|
||
|
@samp{dir1}, @samp{dir2} and @samp{dir3} with a separate lzip member per
|
||
|
directory. Then append files @samp{a}, @samp{b}, @samp{c}, @samp{d} and
|
||
|
@samp{e} to the archive, all of them contained in a single lzip member.
|
||
|
The resulting archive @samp{archive.tar.lz} contains 5 lzip members
|
||
|
(including the eof member).
|
||
|
|
||
|
@example
|
||
|
tarlz --dsolid -cf archive.tar.lz dir1 dir2 dir3
|
||
|
tarlz --asolid -rf archive.tar.lz a b c d e
|
||
|
@end example
|
||
|
|
||
|
@sp 1
|
||
|
@noindent
|
||
|
Example 5: Create a solidly compressed archive @samp{archive.tar.lz}
|
||
|
containing files @samp{a}, @samp{b} and @samp{c}. Note that no more
|
||
|
files can be later appended to the archive without decompressing it
|
||
|
first.
|
||
|
|
||
|
@example
|
||
|
tarlz --solid -cf archive.tar.lz a b c
|
||
|
@end example
|
||
|
|
||
|
@sp 1
|
||
|
@noindent
|
||
|
Example 6: Extract all files from archive @samp{archive.tar.lz}.
|
||
|
|
||
|
@example
|
||
|
tarlz -xf archive.tar.lz
|
||
|
@end example
|
||
|
|
||
|
@sp 1
|
||
|
@noindent
|
||
|
Example 7: Extract files @samp{a} and @samp{c} from archive
|
||
|
@samp{archive.tar.lz}.
|
||
|
|
||
|
@example
|
||
|
tarlz -xf archive.tar.lz a c
|
||
|
@end example
|
||
|
|
||
|
@sp 1
|
||
|
@noindent
|
||
|
Example 8: Copy the contents of directory @samp{sourcedir} to the
|
||
|
directory @samp{targetdir}.
|
||
|
|
||
|
@example
|
||
|
tarlz -C sourcedir -c . | tarlz -C targetdir -x
|
||
|
@end example
|
||
|
|
||
|
|
||
|
@node Problems
|
||
|
@chapter Reporting bugs
|
||
|
@cindex bugs
|
||
|
@cindex getting help
|
||
|
|
||
|
There are probably bugs in tarlz. There are certainly errors and
|
||
|
omissions in this manual. If you report them, they will get fixed. If
|
||
|
you don't, no one will ever know about them and they will remain unfixed
|
||
|
for all eternity, if not longer.
|
||
|
|
||
|
If you find a bug in tarlz, please send electronic mail to
|
||
|
@email{lzip-bug@@nongnu.org}. Include the version number, which you can
|
||
|
find by running @w{@code{tarlz --version}}.
|
||
|
|
||
|
|
||
|
@node Concept index
|
||
|
@unnumbered Concept index
|
||
|
|
||
|
@printindex cp
|
||
|
|
||
|
@bye
|