1
0
Fork 0

Adding upstream version 0.24.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-17 21:27:02 +01:00
parent 9a8733dd3b
commit 4f5d0de2b2
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
33 changed files with 905 additions and 882 deletions

View file

@ -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