Adding upstream version 0.24.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
9a8733dd3b
commit
4f5d0de2b2
33 changed files with 905 additions and 882 deletions
140
doc/tarlz.info
140
doc/tarlz.info
|
@ -11,7 +11,7 @@ File: tarlz.info, Node: Top, Next: Introduction, Up: (dir)
|
|||
Tarlz Manual
|
||||
************
|
||||
|
||||
This manual is for Tarlz (version 0.23, 23 September 2022).
|
||||
This manual is for Tarlz (version 0.24, 20 September 2023).
|
||||
|
||||
* Menu:
|
||||
|
||||
|
@ -28,7 +28,7 @@ This manual is for Tarlz (version 0.23, 23 September 2022).
|
|||
* Concept index:: Index of concepts
|
||||
|
||||
|
||||
Copyright (C) 2013-2022 Antonio Diaz Diaz.
|
||||
Copyright (C) 2013-2023 Antonio Diaz Diaz.
|
||||
|
||||
This manual is free documentation: you have unlimited permission to copy,
|
||||
distribute, and modify it.
|
||||
|
@ -58,9 +58,9 @@ plzip may even double the amount of files lost for each lzip member damaged
|
|||
because it does not keep the members aligned.
|
||||
|
||||
Tarlz can create tar archives with five levels of compression
|
||||
granularity: per file (--no-solid), per block (--bsolid, default), per
|
||||
directory (--dsolid), appendable solid (--asolid), and solid (--solid). It
|
||||
can also create uncompressed tar archives.
|
||||
granularity: per file ('--no-solid'), per block ('--bsolid', default), per
|
||||
directory ('--dsolid'), appendable solid ('--asolid'), and solid
|
||||
('--solid'). It can also create uncompressed tar archives.
|
||||
|
||||
Of course, compressing each file (or each directory) individually can't
|
||||
achieve a compression ratio as high as compressing solidly the whole tar
|
||||
|
@ -87,9 +87,9 @@ archive, but it has the following advantages:
|
|||
Tarlz protects the extended records with a Cyclic Redundancy Check (CRC)
|
||||
in a way compatible with standard tar tools. *Note crc32::.
|
||||
|
||||
Tarlz does not understand other tar formats like 'gnu', 'oldgnu', 'star'
|
||||
or 'v7'. The command 'tarlz -tf archive.tar.lz > /dev/null' can be used to
|
||||
verify that the format of the archive is compatible with tarlz.
|
||||
Tarlz does not understand other tar formats like 'gnu', 'oldgnu',
|
||||
'star', or 'v7'. The command 'tarlz -t -f archive.tar.lz > /dev/null' can
|
||||
be used to check that the format of the archive is compatible with tarlz.
|
||||
|
||||
|
||||
File: tarlz.info, Node: Invoking tarlz, Next: Portable character set, Prev: Introduction, Up: Top
|
||||
|
@ -140,7 +140,7 @@ to '-1 --solid'.
|
|||
'-A'
|
||||
'--concatenate'
|
||||
Append one or more archives to the end of an archive. If no archive is
|
||||
specified with the option '-f', the input archives are concatenated to
|
||||
specified with the option '-f', concatenate the input archives to
|
||||
standard output. All the archives involved must be regular (seekable)
|
||||
files, and must be either all compressed or all uncompressed.
|
||||
Compressed and uncompressed archives can't be mixed. Compressed
|
||||
|
@ -163,7 +163,7 @@ to '-1 --solid'.
|
|||
'-d'
|
||||
'--diff'
|
||||
Compare and report differences between archive and file system. For
|
||||
each tar member in the archive, verify that the corresponding file in
|
||||
each tar member in the archive, check that the corresponding file in
|
||||
the file system exists and is of the same type (regular file,
|
||||
directory, etc). Report on standard output the differences found in
|
||||
type, mode (permissions), owner and group IDs, modification time, file
|
||||
|
@ -224,22 +224,25 @@ to '-1 --solid'.
|
|||
directory without extracting the files under it, use
|
||||
'tarlz -xf foo --exclude='dir/*' dir'. Tarlz removes files and empty
|
||||
directories unconditionally before extracting over them. Other than
|
||||
that, it will not make any special effort to extract a file over an
|
||||
that, it does not make any special effort to extract a file over an
|
||||
incompatible type of file. For example, extracting a file over a
|
||||
non-empty directory will usually fail.
|
||||
non-empty directory usually fails.
|
||||
|
||||
'-z'
|
||||
'--compress'
|
||||
Compress existing POSIX tar archives aligning the lzip members to the
|
||||
tar members with choice of granularity (--bsolid by default, --dsolid
|
||||
works like --asolid). The input archives are kept unchanged. Existing
|
||||
compressed archives are not overwritten. A hyphen '-' used as the name
|
||||
of an input archive reads from standard input and writes to standard
|
||||
output (unless the option '--output' is used). Tarlz can be used as
|
||||
compressor for GNU tar using a command like
|
||||
'tar -c -Hustar foo | tarlz -z -o foo.tar.lz'. Note that tarlz only
|
||||
works reliably on archives without global headers, or with global
|
||||
headers whose content can be ignored.
|
||||
tar members with choice of granularity ('--bsolid' by default,
|
||||
'--dsolid' works like '--asolid'). Exit with error status 2 if any
|
||||
input archive is an empty file. The input archives are kept unchanged.
|
||||
Existing compressed archives are not overwritten. A hyphen '-' used as
|
||||
the name of an input archive reads from standard input and writes to
|
||||
standard output (unless the option '--output' is used). Tarlz can be
|
||||
used as compressor for GNU tar by using a command like
|
||||
'tar -c -Hustar foo | tarlz -z -o foo.tar.lz'. Tarlz can be used as
|
||||
compressor for zupdate (zutils) by using a command like
|
||||
'zupdate --lz="tarlz -z" foo.tar.gz'. Note that tarlz only works
|
||||
reliably on archives without global headers, or with global headers
|
||||
whose content can be ignored.
|
||||
|
||||
The compression is reversible, including any garbage present after the
|
||||
end-of-archive blocks. Tarlz stops parsing after the first
|
||||
|
@ -277,18 +280,18 @@ to '-1 --solid'.
|
|||
|
||||
'-C DIR'
|
||||
'--directory=DIR'
|
||||
Change to directory DIR. When creating or appending, the position of
|
||||
each '-C' option in the command line is significant; it will change the
|
||||
current working directory for the following FILES until a new '-C'
|
||||
option appears in the command line. When extracting or comparing, all
|
||||
the '-C' options are executed in sequence before reading the archive.
|
||||
Listing ignores any '-C' options specified. DIR is relative to the
|
||||
then current working directory, perhaps changed by a previous '-C'
|
||||
Change to directory DIR. When creating, appending, comparing, or
|
||||
extracting, the position of each '-C' option in the command line is
|
||||
significant; it changes the current working directory for the following
|
||||
FILES until a new '-C' option appears in the command line. '--list'
|
||||
and '--delete' ignore any '-C' options specified. DIR is relative to
|
||||
the then current working directory, perhaps changed by a previous '-C'
|
||||
option.
|
||||
|
||||
Note that a process can only have one current working directory (CWD).
|
||||
Therefore multi-threading can't be used to create an archive if a '-C'
|
||||
option appears after a relative file name in the command line.
|
||||
Therefore multi-threading can't be used to create or decode an archive
|
||||
if a '-C' option appears after a (relative) file name in the command
|
||||
line. (All file names are made relative when decoding).
|
||||
|
||||
'-f ARCHIVE'
|
||||
'--file=ARCHIVE'
|
||||
|
@ -308,8 +311,7 @@ to '-1 --solid'.
|
|||
support". A value of 0 disables threads entirely. If this option is
|
||||
not used, tarlz tries to detect the number of processors in the system
|
||||
and use it as default value. 'tarlz --help' shows the system's default
|
||||
value. See the note about multi-threaded archive creation in the
|
||||
option '-C' above.
|
||||
value. See the note about multi-threading in the option '-C' above.
|
||||
|
||||
Note that the number of usable threads is limited during compression to
|
||||
ceil( uncompressed_size / data_size ) (*note Minimum archive sizes::),
|
||||
|
@ -360,7 +362,9 @@ to '-1 --solid'.
|
|||
With '--create', don't compress the tar archive created. Create an
|
||||
uncompressed tar archive instead. With '--append', don't compress the
|
||||
new members appended to the tar archive. Compressed members can't be
|
||||
appended to an uncompressed archive, nor vice versa.
|
||||
appended to an uncompressed archive, nor vice versa. '--uncompressed'
|
||||
can be omitted if it can be deduced from the archive name. (An
|
||||
uncompressed archive name lacks a '.lz' or '.tlz' extension).
|
||||
|
||||
'--asolid'
|
||||
When creating or appending to a compressed archive, use appendable
|
||||
|
@ -438,13 +442,13 @@ to '-1 --solid'.
|
|||
happens while extracting a file, keep the partial data extracted. Use
|
||||
this option to recover as much data as possible from each damaged
|
||||
member. It is recommended to run tarlz in single-threaded mode
|
||||
(--threads=0) when using this option.
|
||||
('--threads=0') when using this option.
|
||||
|
||||
'--missing-crc'
|
||||
Exit with error status 2 if the CRC of the extended records is
|
||||
missing. When this option is used, tarlz detects any corruption in the
|
||||
extended records (only limited by CRC collisions). But note that a
|
||||
corrupt 'GNU.crc32' keyword, for example 'GNU.crc33', is reported as a
|
||||
corrupt 'GNU.crc32' keyword, for example 'GNU.crc30', is reported as a
|
||||
missing CRC instead of as a corrupt record. This misleading
|
||||
'Missing CRC' message is the consequence of a flaw in the POSIX pax
|
||||
format; i.e., the lack of a mandatory check sequence of the extended
|
||||
|
@ -588,6 +592,10 @@ header block are zeroed on archive creation to prevent trouble if the
|
|||
archive is read by an ustar tool, and are ignored by tarlz on archive
|
||||
extraction. *Note flawed-compat::.
|
||||
|
||||
Tarlz limits the size of the pax extended header data so that the whole
|
||||
header set (extended header + extended data + ustar header) can be read and
|
||||
decoded in a buffer of size INT_MAX.
|
||||
|
||||
The pax extended header data consists of one or more records, each of
|
||||
them constructed as follows:
|
||||
'"%d %s=%s\n", <length>, <keyword>, <value>'
|
||||
|
@ -618,11 +626,11 @@ space, equal-sign, and newline.
|
|||
previously archived. This record overrides the field 'linkname' in the
|
||||
following ustar header block. The following ustar header block
|
||||
determines the type of link created. If typeflag of the following
|
||||
header block is 1, it will be a hard link. If typeflag is 2, it will
|
||||
be a symbolic link and the linkpath value will be used as the contents
|
||||
of the symbolic link. The linkpath record is created only for links
|
||||
with a link name that does not fit in the space provided by the ustar
|
||||
header.
|
||||
header block is 1, a hard link is created. If typeflag is 2, a
|
||||
symbolic link is created and the linkpath value is used as the
|
||||
contents of the symbolic link. The linkpath record is created only for
|
||||
links with a link name that does not fit in the space provided by the
|
||||
ustar header.
|
||||
|
||||
'mtime'
|
||||
The signed decimal representation of the modification time of the
|
||||
|
@ -657,7 +665,7 @@ space, equal-sign, and newline.
|
|||
CRC32-C (Castagnoli) of the extended header data excluding the 8 bytes
|
||||
representing the CRC <value> itself. The <value> is represented as 8
|
||||
hexadecimal digits in big endian order, '22 GNU.crc32=00000000\n'. The
|
||||
keyword of the CRC record is protected by the CRC to guarante that
|
||||
keyword of the CRC record is protected by the CRC to guarantee that
|
||||
corruption is always detected when using '--missing-crc' (except in
|
||||
case of CRC collision). A CRC was chosen because a checksum is too
|
||||
weak for a potentially large list of variable sized records. A
|
||||
|
@ -843,11 +851,11 @@ to the POSIX-2:1993 standard, POSIX.1-2008 recommends selecting extended
|
|||
header field values that allow such tar to create a regular file containing
|
||||
the extended header records as data. This approach is broken because if the
|
||||
extended header is needed because of a long file name, the fields 'name'
|
||||
and 'prefix' will be unable to contain the full file name. (Some tar
|
||||
and 'prefix' are unable to contain the full file name. (Some tar
|
||||
implementations store the truncated name in the field 'name' alone,
|
||||
truncating the name to only 100 bytes instead of 256). Therefore the files
|
||||
corresponding to both the extended header and the overridden ustar header
|
||||
will be extracted using truncated file names, perhaps overwriting existing
|
||||
are extracted using truncated file names, perhaps overwriting existing
|
||||
files or directories. It may be a security risk to extract a file with a
|
||||
truncated file name.
|
||||
|
||||
|
@ -1098,11 +1106,11 @@ multimember compressed archive.
|
|||
For this to work as expected (and roughly multiply the compression speed
|
||||
by the number of available processors), the uncompressed archive must be at
|
||||
least as large as the number of worker threads times the block size (*note
|
||||
--data-size::). Else some processors will not get any data to compress, and
|
||||
compression will be proportionally slower. The maximum speed increase
|
||||
achievable on a given archive is limited by the ratio
|
||||
(uncompressed_size / data_size). For example, a tarball the size of gcc or
|
||||
linux will scale up to 10 or 14 processors at level -9.
|
||||
--data-size::). Else some processors do not get any data to compress, and
|
||||
compression is proportionally slower. The maximum speed increase achievable
|
||||
on a given archive is limited by the ratio (uncompressed_size / data_size).
|
||||
For example, a tarball the size of gcc or linux scales up to 10 or 14
|
||||
processors at level -9.
|
||||
|
||||
The following table shows the minimum uncompressed archive size needed
|
||||
for full use of N processors at a given compression level, using the default
|
||||
|
@ -1245,24 +1253,24 @@ Concept index
|
|||
Tag Table:
|
||||
Node: Top216
|
||||
Node: Introduction1210
|
||||
Node: Invoking tarlz4029
|
||||
Ref: --data-size12880
|
||||
Ref: --bsolid17192
|
||||
Node: Portable character set22788
|
||||
Node: File format23431
|
||||
Ref: key_crc3230188
|
||||
Ref: ustar-uid-gid33452
|
||||
Ref: ustar-mtime34254
|
||||
Node: Amendments to pax format36254
|
||||
Ref: crc3236963
|
||||
Ref: flawed-compat38274
|
||||
Node: Program design42364
|
||||
Node: Multi-threaded decoding46289
|
||||
Ref: mt-extraction49570
|
||||
Node: Minimum archive sizes50876
|
||||
Node: Examples53014
|
||||
Node: Problems55381
|
||||
Node: Concept index55936
|
||||
Node: Invoking tarlz4041
|
||||
Ref: --data-size13085
|
||||
Ref: --bsolid17521
|
||||
Node: Portable character set23119
|
||||
Node: File format23762
|
||||
Ref: key_crc3230703
|
||||
Ref: ustar-uid-gid33968
|
||||
Ref: ustar-mtime34770
|
||||
Node: Amendments to pax format36770
|
||||
Ref: crc3237479
|
||||
Ref: flawed-compat38790
|
||||
Node: Program design42872
|
||||
Node: Multi-threaded decoding46797
|
||||
Ref: mt-extraction50078
|
||||
Node: Minimum archive sizes51384
|
||||
Node: Examples53511
|
||||
Node: Problems55878
|
||||
Node: Concept index56433
|
||||
|
||||
End Tag Table
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue