Update format manpages for libarchive.

This commit is contained in:
Tim Kientzle 2009-12-28 01:50:23 +00:00
parent 7ba6829897
commit ff30341ebf
2 changed files with 87 additions and 32 deletions

View File

@ -1,4 +1,4 @@
.\" Copyright (c) 2003-2007 Tim Kientzle .\" Copyright (c) 2003-2009 Tim Kientzle
.\" All rights reserved. .\" All rights reserved.
.\" .\"
.\" Redistribution and use in source and binary forms, with or without .\" Redistribution and use in source and binary forms, with or without
@ -24,7 +24,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd April 17, 2009 .Dd December 27, 2009
.Dt libarchive-formats 5 .Dt libarchive-formats 5
.Os .Os
.Sh NAME .Sh NAME
@ -45,7 +45,8 @@ limitations of the current library support.
Note that just because a format is supported by libarchive does not Note that just because a format is supported by libarchive does not
imply that a program that uses libarchive will support that format. imply that a program that uses libarchive will support that format.
Applications that use libarchive specify which formats they wish Applications that use libarchive specify which formats they wish
to support. to support, though many programs do use libarchive convenience
functions to enable all supported formats.
.Ss Tar Formats .Ss Tar Formats
The The
.Xr libarchive 3 .Xr libarchive 3
@ -83,8 +84,8 @@ library can read and write POSIX-compliant pax interchange format
archives. archives.
Pax interchange format archives are an extension of the older ustar Pax interchange format archives are an extension of the older ustar
format that adds a separate entry with additional attributes stored format that adds a separate entry with additional attributes stored
as key/value pairs. as key/value pairs immediately before each regular entry.
The presence of this additional entry is the only difference between The presence of these additional entries is the only difference between
pax interchange format and the older ustar format. pax interchange format and the older ustar format.
The extended attributes are of unlimited length and are stored The extended attributes are of unlimited length and are stored
as UTF-8 Unicode strings. as UTF-8 Unicode strings.
@ -131,16 +132,30 @@ This name is limited to 100 bytes.
Extended attributes, file flags, and other extended Extended attributes, file flags, and other extended
security information cannot be stored. security information cannot be stored.
.It .It
Archive entries are limited to 2 gigabytes in size. Archive entries are limited to 8 gigabytes in size.
.El .El
Note that the pax interchange format has none of these restrictions. Note that the pax interchange format has none of these restrictions.
.El .El
.Pp .Pp
The libarchive library can also read a variety of commonly-used extensions to The libarchive library also reads a variety of commonly-used extensions to
the basic tar format. the basic tar format.
In particular, it supports base-256 values in certain numeric fields. These extensions are recognized automatically whenever they appear.
This essentially removes the limitations on file size, modification time, .Bl -tag -width indent
.It Numeric extensions.
The POSIX standards require fixed-length numeric fields to be written with
some character position reserved for terminators.
Libarchive allows these fields to be written without terminator characters.
This extends the allowable range; in particular, ustar archives with this
extension can support entries up to 64 gigabytes in size.
Libarchive also recognizes base-256 values in most numeric fields.
This essentially removes all limitations on file size, modification time,
and device numbers. and device numbers.
.It Solaris extensions
Libarchive recognizes ACL and extended attribute records written
by Solaris tar.
Currently, libarchive only has support for old-style ACLs; the
newer NFSv4 ACLs are recognized but discarded.
.El
.Pp .Pp
The first tar program appeared in Seventh Edition Unix in 1979. The first tar program appeared in Seventh Edition Unix in 1979.
The first official standard for the tar file format was the The first official standard for the tar file format was the
@ -159,13 +174,13 @@ A cpio archive stores each entry as a fixed-size header followed
by a variable-length filename and variable-length data. by a variable-length filename and variable-length data.
Unlike the tar format, the cpio format does only minimal padding Unlike the tar format, the cpio format does only minimal padding
of the header or file data. of the header or file data.
There are a variety of cpio formats, which differ primarily in There are several cpio variants, which differ primarily in
how they store the initial header: some store the values as how they store the initial header: some store the values as
octal or hexadecimal numbers in ASCII, others as binary values of octal or hexadecimal numbers in ASCII, others as binary values of
varying byte order and length. varying byte order and length.
.Bl -tag -width indent .Bl -tag -width indent
.It Cm binary .It Cm binary
The libarchive library can read both big-endian and little-endian The libarchive library transparently reads both big-endian and little-endian
variants of the original binary cpio format. variants of the original binary cpio format.
This format used 32-bit binary values for file size and mtime, This format used 32-bit binary values for file size and mtime,
and 16-bit binary values for the other fields. and 16-bit binary values for the other fields.
@ -243,20 +258,24 @@ shardump archives less portable than plain shar archives.
.Ss ISO9660 format .Ss ISO9660 format
Libarchive can read and extract from files containing ISO9660-compliant Libarchive can read and extract from files containing ISO9660-compliant
CDROM images. CDROM images.
It also has partial support for Rockridge extensions.
In many cases, this can remove the need to burn a physical CDROM In many cases, this can remove the need to burn a physical CDROM
just in order to read the files contained in an ISO9660 image. just in order to read the files contained in an ISO9660 image.
It also avoids security and complexity issues that come with It also avoids security and complexity issues that come with
virtual mounts and loopback devices. virtual mounts and loopback devices.
Libarchive supports the most common Rockridge extensions and has partial
support for Joliet extensions.
If both extensions are present, the Joliet extensions will be
used and the Rockridge extensions will be ignored.
In particular, this can create problems with hardlinks and symlinks,
which are supported by Rockridge but not by Joliet.
.Ss Zip format .Ss Zip format
Libarchive can extract from most zip format archives, including Libarchive can read and write zip format archives that have
jar archives, archives that use Zip64 extensions and many uncompressed entries and entries compressed with the
self-extracting zip archives.
It currently only supports uncompressed entries and entries
compressed with the
.Dq deflate .Dq deflate
algorithm. algorithm.
Older zip compression algorithms are not supported. Older zip compression algorithms are not supported.
It can extract jar archives, archives that use Zip64 extensions and many
self-extracting zip archives.
Libarchive reads Zip archives as they are being streamed, Libarchive reads Zip archives as they are being streamed,
which allows it to read archives of arbitrary size. which allows it to read archives of arbitrary size.
It currently does not use the central directory; this It currently does not use the central directory; this
@ -273,7 +292,20 @@ The ar format has never been standardised.
There are two common variants: There are two common variants:
the GNU format derived from SVR4, the GNU format derived from SVR4,
and the BSD format, which first appeared in 4.4BSD. and the BSD format, which first appeared in 4.4BSD.
Libarchive provides read and write support for both variants. The two differ primarily in their handling of filenames
longer than 15 characters:
the GNU/SVR4 variant writes a filename table at the beginning of the archive;
the BSD format stores each long filename in an extension
area adjacent to the entry.
Libarchive can read both extensions,
including archives that may include both types of long filenames.
Programs using libarchive can write GNU/SVR4 format
if they provide a filename table to be written into
the archive before any of the entries.
Any entries whose names are not in the filename table
will be written using BSD-style long filenames.
This can cause problems for programs such as
GNU ld that do not support the BSD-style long filenames.
.Ss mtree .Ss mtree
Libarchive can read and write files in Libarchive can read and write files in
.Xr mtree 5 .Xr mtree 5
@ -287,20 +319,29 @@ the NetBSD and FreeBSD versions of
although many of the keywords cannot currently be stored in an although many of the keywords cannot currently be stored in an
.Tn archive_entry .Tn archive_entry
object. object.
When reading, libarchive supports an extension that allows it
to obtain the contents of the files described by the
.Xr mtree 5
description from files on disk.
When writing, libarchive supports use of the When writing, libarchive supports use of the
.Xr archive_write_set_options 3 .Xr archive_write_set_options 3
interface to specify which keywords should be included in the interface to specify which keywords should be included in the
output. output.
This includes the ability to compute hash entries such If libarchive was compiled with access to suitable
as cryptographic libraries (such as the OpenSSL libraries),
it can compute hash entries such as
.Cm sha512 .Cm sha512
or or
.Cm md5 .Cm md5
from file data being written to the mtree writer. from file data being written to the mtree writer.
.Pp
When reading an mtree file, libarchive will locate the corresponding
files on disk using the
.Cm contents
keyword if present or the regular filename.
If it can locate and open the file on disk, it will use that
to fill in any metadata that is missing from the mtree file
and will read the file contents and return those to the program
using libarchive.
If it cannot locate and open the file on disk, libarchive
will return an error for any attempt to read the entry
body.
.Sh SEE ALSO .Sh SEE ALSO
.Xr ar 1 , .Xr ar 1 ,
.Xr cpio 1 , .Xr cpio 1 ,

View File

@ -24,7 +24,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd April 19, 2009 .Dd December 27, 2009
.Dt tar 5 .Dt tar 5
.Os .Os
.Sh NAME .Sh NAME
@ -55,8 +55,11 @@ number of records with each I/O operation.
These These
.Dq blocks .Dq blocks
are always a multiple of the record size. are always a multiple of the record size.
The most common block size\(emand the maximum supported by historic The maximum block size supported by early
implementations\(emis 10240 bytes or 20 records. implementations was 10240 bytes or 20 records.
This is still the default for most implementations
although block sizes of 1MiB (2048 records) or larger are
commonly used with modern high-speed tape drives.
(Note: the terms (Note: the terms
.Dq block .Dq block
and and
@ -272,16 +275,19 @@ when they are set and the corresponding names exist on
the system. the system.
.It Va devmajor , Va devminor .It Va devmajor , Va devminor
Major and minor numbers for character device or block device entry. Major and minor numbers for character device or block device entry.
.It Va prefix .It Va name , Va prefix
First part of pathname.
If the pathname is too long to fit in the 100 bytes provided by the standard If the pathname is too long to fit in the 100 bytes provided by the standard
format, it can be split at any format, it can be split at any
.Pa / .Pa /
character with the first portion going here. character with the first portion going into the prefix field.
If the prefix field is not empty, the reader will prepend If the prefix field is not empty, the reader will prepend
the prefix value and a the prefix value and a
.Pa / .Pa /
character to the regular name field to obtain the full pathname. character to the regular name field to obtain the full pathname.
The standard does not require a trailing
.Pa /
character on directory names, though most implementations still
include this for compatibility reasons.
.El .El
.Pp .Pp
Note that all unused bytes must be set to Note that all unused bytes must be set to
@ -308,7 +314,7 @@ unless they fill the entire field.
happens to have a happens to have a
.Pa / .Pa /
as the 156th character.) as the 156th character.)
POSIX requires numeric fields to be zero-padded in the front, and allows POSIX requires numeric fields to be zero-padded in the front, and requires
them to be terminated with either space or them to be terminated with either space or
.Dv NUL .Dv NUL
characters. characters.
@ -809,9 +815,17 @@ John Gilmore's
.Nm pdtar .Nm pdtar
public-domain implementation (circa 1987) was highly influential public-domain implementation (circa 1987) was highly influential
and formed the basis of and formed the basis of
.Nm GNU tar . .Nm GNU tar
(circa 1988).
Joerg Shilling's Joerg Shilling's
.Nm star .Nm star
archiver is another open-source (GPL) archiver (originally developed archiver is another open-source (GPL) archiver (originally developed
circa 1985) which features complete support for pax interchange circa 1985) which features complete support for pax interchange
format. format.
.Pp
This documentation was written as part of the
.Nm libarchive
and
.Nm bsdtar
project by
.An Tim Kientzle Aq kientzle@FreeBSD.org .