]> Dogcows Code - chaz/tar/commitdiff
Update
authorSergey Poznyakoff <gray@gnu.org.ua>
Fri, 9 Jun 2006 13:49:51 +0000 (13:49 +0000)
committerSergey Poznyakoff <gray@gnu.org.ua>
Fri, 9 Jun 2006 13:49:51 +0000 (13:49 +0000)
doc/tar.texi

index af4031122905455f203ad622f75d5996c50acc78..39dd206b99f8240198a3d38e1f25929b1f33b3eb 100644 (file)
@@ -10,6 +10,7 @@
 @smallbook
 @c %**end of header
 
+@include config.texi
 @include rendition.texi
 @include value.texi
 
@@ -80,7 +81,7 @@ document.  The rest of the menu lists all the lower level nodes.
 @end ifnottex
 
 @c The master menu, created with texinfo-master-menu, goes here.
-@c (However, getdate.texi's menu is interpolated by hand.)
+@c FIXME: Submenus for getdate.texi and intern.texi are interpolated by hand.
 
 @menu
 * Introduction::
@@ -98,8 +99,7 @@ Appendices
 * Changes::
 * Configuring Help Summary::
 * Genfile::
-* Snapshot Files::
-* Dumpdir::
+* Tar Internals::
 * Free Software Needs Free Documentation::
 * Copying This Manual::
 * Index of Command Line Options::
@@ -152,6 +152,7 @@ How to Extract Members from an Archive
 * extracting archives::
 * extracting files::
 * extract dir::
+* extracting untrusted archives::
 * failing commands::
 
 Invoking @GNUTAR{}
@@ -231,7 +232,9 @@ Changing How @command{tar} Writes Files
 * Recursive Unlink::
 * Data Modification Times::
 * Setting Access Permissions::
+* Directory Modification Times and Permissions::
 * Writing to Standard Output::
+* Writing to an External Program::
 * remove files::
 
 Coping with Scarce Resources
@@ -276,11 +279,22 @@ Excluding Some Files
 
 * problems with exclude::
 
+Wildcards Patterns and Matching
+
+* controlling pattern-matching::
+
 Crossing File System Boundaries
 
 * directory::                   Changing Directory
 * absolute::                    Absolute File Names
 
+Controlling the Archive Format
+
+* Portability::                 Making @command{tar} Archives More Portable
+* Compression::                 Using Less Space through Compression
+* Attributes::                  Handling File Attributes
+* cpio::                        Comparison of @command{tar} and @command{cpio}
+
 Date input formats
 
 * General date syntax::            Common rules.
@@ -293,24 +307,21 @@ Date input formats
 * Seconds since the Epoch::        @@1078100502.
 * Authors of get_date::            Bellovin, Eggert, Salz, Berets, et al.
 
-Controlling the Archive Format
-
-* Portability::                 Making @command{tar} Archives More Portable
-* Compression::                 Using Less Space through Compression
-* Attributes::                  Handling File Attributes
-* Standard::                    The Standard Format
-* Extensions::                  @acronym{GNU} Extensions to the Archive Format
-* cpio::                        Comparison of @command{tar} and @command{cpio}
-
 Making @command{tar} Archives More Portable
 
 * Portable Names::              Portable Names
 * dereference::                 Symbolic Links
 * old::                         Old V7 Archives
+* ustar::                       Ustar Archives
+* gnu::                         GNU and old GNU format archives.
 * posix::                       @acronym{POSIX} archives
 * Checksumming::                Checksumming Problems
 * Large or Negative Values::    Large files, negative time stamps, etc.
 
+@GNUTAR{} and @acronym{POSIX} @command{tar}
+
+* PAX keywords:: Controlling Extended Header Keywords.
+
 Using Less Space through Compression
 
 * gzip::                        Creating and Reading Compressed Archives
@@ -347,12 +358,14 @@ Using Multiple Tapes
 GNU tar internals and development
 
 * Genfile::
+* Tar Internals::
+* Standard::
+* Extensions::
 * Snapshot Files::
 * Dumpdir::
 
 Copying This Manual
 
-* Free Software Needs Free Documentation::
 * GNU Free Documentation License::  License for copying this manual
 
 @end detailmenu
@@ -852,24 +865,38 @@ others.  We will use @option{--verbose} at times to help make something
 clear, and we will give many examples both using and not using
 @option{--verbose} to show the differences.
 
-Sometimes, a single instance of @option{--verbose} on the command line
-will show a full, @samp{ls} style listing of an archive or files,
-giving sizes, owners, and similar information. @FIXME{Describe the
-exact output format, e.g., how hard links are displayed.}
-Other times, @option{--verbose} will only show files or members that the particular
-operation is operating on at the time.  In the latter case, you can
-use @option{--verbose} twice in a command to get a listing such as that
-in the former case.  For example, instead of saying
+Each instance of @option{--verbose} on the command line increases the
+verbosity level by one, so if you need more details on the output, 
+specify it twice.
+
+When reading archives (@option{--list}, @option{--extract},
+@option{--diff}), @command{tar} by default prints only the names of
+the members being extracted.  Using @option{--verbose} will show a full,
+@command{ls} style member listing.
+
+In contrast, when writing archives (@option{--create}, @option{--append},
+@option{--update}), @command{tar} does not print file names by
+default.  So, a single @option{--verbose} option shows the file names
+being added to the archive, while two @option{--verbose} options
+enable the full listing.
+   
+For example, to create an archive in verbose mode:
 
 @smallexample
-@kbd{tar -cvf afiles.tar apple angst aspic}
+$ @kbd{tar -cvf afiles.tar apple angst aspic}
+apple
+angst
+aspic
 @end smallexample
 
 @noindent
-above, you might say
+Creating the same archive with the verbosity level 2 could give:
 
 @smallexample
-@kbd{tar -cvvf afiles.tar apple angst aspic}
+$ @kbd{tar -cvvf afiles.tar apple angst aspic}
+-rw-r--r-- gray/staff    62373 2006-06-09 12:06 apple
+-rw-r--r-- gray/staff    11481 2006-06-09 12:06 angst
+-rw-r--r-- gray/staff    23152 2006-06-09 12:06 aspic
 @end smallexample
 
 @noindent
@@ -887,6 +914,92 @@ Note that you must double the hyphens properly each time.
 Later in the tutorial, we will give examples using @w{@option{--verbose
 --verbose}}.
 
+The full output consists of six fields:
+
+@itemize @bullet
+@item File type and permissions in symbolic form.
+These are displayed in the same format as the first column of
+@command{ls -l} output (@pxref{What information is listed,
+format=verbose, Verbose listing, fileutils, GNU file utilities}).
+
+@item Owner name and group separated by a slash character.
+If these data are not available (for example, when listing a @samp{v7} format
+archive), numeric ID values are printed instead.
+
+@item Size of the file, in bytes.
+
+@item File modification date in ISO 8601 format.
+
+@item File modification time.
+
+@item File name.
+If the name contains any special characters (white space, newlines,
+etc.) these are displayed in an unambiguous form using so called
+@dfn{quoting style}.  For the detailed discussion of available styles
+and on how to use them, see @ref{quoting styles}.
+
+Depending on the file type, the name can be followed by some
+additional information, described in the following table:
+
+@table @samp
+@item -> @var{link-name}
+The file or archive member is a @dfn{symbolic link} and
+@var{link-name} is the name of file it links to.
+
+@item link to @var{link-name}
+The file or archive member is a @dfn{hard link} and @var{link-name} is
+the name of file it links to.
+
+@item --Long Link--
+The archive member is an old GNU format long link.  You will normally
+not encounter this.
+
+@item --Long Name--
+The archive member is an old GNU format long name.  You will normally
+not encounter this.
+
+@item --Volume Header--
+The archive member is a GNU @dfn{volume header} (@pxref{Tape Files}).
+
+@item --Continued at byte @var{n}--
+Encountered only at the beginning of a multy-volume archive
+(@pxref{Using Multiple Tapes}).  This archive member is a continuation
+from the previous volume. The number @var{n} gives the offset where
+the original file was split.  
+
+@item --Mangled file names--
+This archive member contains @dfn{mangled file names} declarations,
+a special member type that was used by early versions of @GNUTAR{}.
+You probably will never encounter this, unless you are reading a very
+old archive.
+
+@item  unknown file type @var{c}
+An archive member of unknown type. @var{c} is the type character from
+the archive header.  If you encounter such a message, it means that
+either your archive contains proprietary member types @GNUTAR{} is not
+able to handle, or the archive is corrupted.
+@end table
+
+@end itemize
+
+For example, here is an archive listing containing most of the special
+suffixes explained above:
+
+@smallexample
+@group
+V--------- 0/0          1536 2006-06-09 13:07 MyVolume--Volume Header--
+-rw-r--r-- gray/staff 456783 2006-06-09 12:06 aspic--Continued at
+byte 32456--
+-rw-r--r-- gray/staff  62373 2006-06-09 12:06 apple
+lrwxrwxrwx gray/staff      0 2006-06-09 13:01 angst -> apple
+-rw-r--r-- gray/staff  35793 2006-06-09 12:06 blues
+hrw-r--r-- gray/staff      0 2006-06-09 12:06 music link to blues
+@end group
+@end smallexample
+
+@smallexample
+@end smallexample
+
 @node help tutorial
 @unnumberedsubsec Getting Help: Using the @option{--help} Option
 
@@ -2287,7 +2400,7 @@ If this option was given, @command{tar} will check the number of links
 dumped for each processed file.  If this number does not match the
 total number of hard links for the file, a warning message will be
 output @footnote{Earlier versions of @GNUTAR{} understood @option{-l} as a
-synonym for @option{--one-file-system}.  The current semantics, wich
+synonym for @option{--one-file-system}.  The current semantics, which
 complies to UNIX98, was introduced with version
 1.15.91. @xref{Changes}, for more information.}. 
 
@@ -2751,114 +2864,11 @@ package.
 
 @opindex pax-option, summary
 @item --pax-option=@var{keyword-list}
-@FIXME{Such a detailed description does not belong there, move it elsewhere.}
 This option is meaningful only with @acronym{POSIX.1-2001} archives
 (@pxref{posix}).  It modifies the way @command{tar} handles the
 extended header keywords.  @var{Keyword-list} is a comma-separated
-list of keyword options, each keyword option taking one of
-the following forms:
-
-@table @asis
-@item delete=@var{pattern}
-When used with one of archive-creation commands,
-this option instructs @command{tar} to omit from extended header records
-that it produces any keywords matching the string @var{pattern}.
-
-When used in extract or list mode, this option instructs tar
-to ignore any keywords matching the given @var{pattern} in the extended
-header records.  In both cases, matching is performed using the pattern
-matching notation described in @acronym{POSIX 1003.2}, 3.13
-(See @cite{glob(7)}). For example:
-
-@smallexample
---pax-option delete=security.*
-@end smallexample
-
-would suppress security-related information.
-
-@item exthdr.name=@var{string}
-
-This keyword allows user control over the name that is written into the
-ustar header blocks for the extended headers.  The name is obtained
-from @var{string} after making the following substitutions:
-
-@multitable @columnfractions .30 .70
-@headitem Meta-character @tab Replaced By
-@item %d @tab  The directory name of the file, equivalent to the
-result of the @command{dirname} utility on the translated pathname.
-@item %f @tab  The filename of the file, equivalent to the result
-of the @command{basename} utility on the translated pathname.
-@item %p @tab  The process ID of the @command{tar} process.
-@item %% @tab  A @samp{%} character.
-@end multitable
-
-Any other @samp{%} characters in @var{string} produce undefined
-results.
-
-If no option @samp{exthdr.name=string} is specified, @command{tar}
-will use the following default value:
-
-@smallexample
-%d/PaxHeaders.%p/%f
-@end smallexample
-
-@item globexthdr.name=@var{string}
-This keyword allows user control over the name that is written into
-the ustar header blocks for global extended header records.  The name
-is obtained from the contents of @var{string}, after making
-the following substitutions:
-
-@multitable @columnfractions .30 .70
-@headitem Meta-character @tab Replaced By
-@item %n @tab An integer that represents the
-sequence number of the global extended header record in the archive,
-starting at 1.
-@item %p @tab The process ID of the @command{tar} process.
-@item %% @tab A @samp{%} character.
-@end multitable
-
-Any other @samp{%} characters in @var{string} produce undefined results.
-
-If no option @samp{globexthdr.name=string} is specified, @command{tar}
-will use the following default value:
-
-@smallexample
-$TMPDIR/GlobalHead.%p.%n
-@end smallexample
-
-@noindent
-where @samp{$TMPDIR} represents the value of the @var{TMPDIR}
-environment variable.  If @var{TMPDIR} is not set, @command{tar}
-uses @samp{/tmp}.
-
-@item @var{keyword}=@var{value}
-When used with one of archive-creation commands, these keyword/value pairs
-will be included at the beginning of the archive in a global extended
-header record.  When used with one of archive-reading commands,
-@command{tar} will behave as if it has encountered these keyword/value
-pairs at the beginning of the archive in a global extended header
-record.
-
-@item @var{keyword}:=@var{value}
-When used with one of archive-creation commands, these keyword/value pairs
-will be included as records at the beginning of an extended header for
-each file.  This is effectively equivalent to @var{keyword}=@var{value}
-form except that it creates no global extended header records.
-
-When used with one of archive-reading commands, @command{tar} will
-behave as if these keyword/value pairs were included as records at the
-end of each extended header; thus, they will override any global or
-file-specific extended header record keywords of the same names.
-For example, in the command:
-
-@smallexample
-tar --format=posix --create \
-    --file archive --pax-option gname:=user .
-@end smallexample
-
-the group name will be forced to a new value for all files
-stored in the archive.
-@end table
+list of keyword options.  @xref{PAX keywords}, for a detailed
+discussion.
 
 @opindex portability, summary
 @item --portability
@@ -6468,7 +6478,7 @@ By default, inclusion members are compared with archive members
 literally @footnote{Notice that earlier @GNUTAR{} versions used 
 globbing for inclusion members, which contradicted to UNIX98
 specification and was not documented. @xref{Changes}, for more
-information on this and other changes} and exclusion members are
+information on this and other changes.} and exclusion members are
 treated as globbing patterns.  For example:
 
 @smallexample
@@ -6542,6 +6552,7 @@ below.  These options accumulate.  For example:
 --ignore-case --exclude='makefile' --no-ignore-case ---exclude='readme'
 @end smallexample
 
+@noindent
 ignores case when excluding @samp{makefile}, but not when excluding
 @samp{readme}.
 
@@ -6864,7 +6875,7 @@ First of all, it is often unsafe to extract archive members with
 absolute file names or those that begin with a @file{../}.  @GNUTAR{}
 takes special precautions when extracting such names and provides a
 special option for handling them, which is described in
-@xref{absolute}.
+@ref{absolute}.
 
 Secondly, you may wish to extract file names without some leading
 directory components, or with otherwise modified names.  In other
@@ -6907,6 +6918,7 @@ Display file or member names with all requested transformations
 applied.
 @end table
 
+@noindent
 For example:
 
 @smallexample
@@ -6975,7 +6987,7 @@ Use case-insensitive matching
 @item x
 @var{regexp} is an @dfn{extended regular expression} (@pxref{Extended
 regexps, Extended regular expressions, Extended regular expressions,
-sed, GNU sed}.
+sed, GNU sed}).
 
 @item @var{number}
 Only replace the @var{number}th match of the @var{regexp}.
@@ -7000,19 +7012,9 @@ s,one,two,
 @end group
 @end smallexample
 
-Changing of delimiter is often useful when the @var{regex} contains
-slashes.  For example, it is more convenient to write:
-
-@smallexample
-s,/,-,
-@end smallexample
-
-@noindent
-instead of
-
-@smallexample
-s/\//-/
-@end smallexample
+Changing delimiters is often useful when the @var{regex} contains
+slashes.  For example, it is more convenient to write @code{s,/,-,} than
+@code{s/\//-/}.
 
 Here are several examples of @option{--transform} usage:
 
@@ -7053,8 +7055,8 @@ component with @file{var/}:
 $ @kbd{tar -cf arch.tar --transform='s,^usr/,var/,' /}
 @end smallexample
 
-To test @option{--transform} effect we suggest to use
-@option{--show-transformed-names}:
+To test @option{--transform} effect we suggest using
+@option{--show-transformed-names} option:
 
 @smallexample
 $ @kbd{tar -cf arch.tar --transform='s,^usr/,var/,' \
@@ -7583,8 +7585,6 @@ switch to @samp{posix}.
 * Portability::                 Making @command{tar} Archives More Portable
 * Compression::                 Using Less Space through Compression
 * Attributes::                  Handling File Attributes
-* Standard::                    The Standard Format
-* Extensions::                  @acronym{GNU} Extensions to the Archive Format
 * cpio::                        Comparison of @command{tar} and @command{cpio}
 @end menu
 
@@ -7733,11 +7733,133 @@ To force creation a @GNUTAR{} archive, use option
 
 @cindex POSIX archive format
 @cindex PAX archive format
-The version @value{VERSION} of @GNUTAR{} is able
-to read and create archives conforming to @acronym{POSIX.1-2001} standard.
+Starting from version 1.14 @GNUTAR{} features full support for
+@acronym{POSIX.1-2001} archives.
 
 A @acronym{POSIX} conformant archive will be created if @command{tar}
-was given @option{--format=posix} option.
+was given @option{--format=posix} (@option{--format=pax}) option.  No
+special option is required to read and extract from a @acronym{POSIX}
+archive. 
+
+@menu
+* PAX keywords:: Controlling Extended Header Keywords.
+@end menu
+
+@node PAX keywords
+@subsubsection Controlling Extended Header Keywords
+
+@table @option
+@opindex pax-option
+@item --pax-option=@var{keyword-list}
+Handle keywords in @acronym{PAX} extended headers.  This option is
+equivalent to @option{-o} option of the @command{pax} utility.
+@end table
+
+@var{Keyword-list} is a comma-separated
+list of keyword options, each keyword option taking one of
+the following forms:
+
+@table @code
+@item delete=@var{pattern}
+When used with one of archive-creation commands,
+this option instructs @command{tar} to omit from extended header records
+that it produces any keywords matching the string @var{pattern}.
+
+When used in extract or list mode, this option instructs tar
+to ignore any keywords matching the given @var{pattern} in the extended
+header records.  In both cases, matching is performed using the pattern
+matching notation described in @acronym{POSIX 1003.2}, 3.13
+(@pxref{wildcards}). For example:
+
+@smallexample
+--pax-option delete=security.*
+@end smallexample
+
+would suppress security-related information.
+
+@item exthdr.name=@var{string}
+
+This keyword allows user control over the name that is written into the
+ustar header blocks for the extended headers.  The name is obtained
+from @var{string} after making the following substitutions:
+
+@multitable @columnfractions .25 .55
+@headitem Meta-character @tab Replaced By
+@item %d @tab  The directory name of the file, equivalent to the
+result of the @command{dirname} utility on the translated pathname.
+@item %f @tab  The filename of the file, equivalent to the result
+of the @command{basename} utility on the translated pathname.
+@item %p @tab  The process ID of the @command{tar} process.
+@item %% @tab  A @samp{%} character.
+@end multitable
+
+Any other @samp{%} characters in @var{string} produce undefined
+results.
+
+If no option @samp{exthdr.name=string} is specified, @command{tar}
+will use the following default value:
+
+@smallexample
+%d/PaxHeaders.%p/%f
+@end smallexample
+
+@item globexthdr.name=@var{string}
+This keyword allows user control over the name that is written into
+the ustar header blocks for global extended header records.  The name
+is obtained from the contents of @var{string}, after making
+the following substitutions:
+
+@multitable @columnfractions .25 .55
+@headitem Meta-character @tab Replaced By
+@item %n @tab An integer that represents the
+sequence number of the global extended header record in the archive,
+starting at 1.
+@item %p @tab The process ID of the @command{tar} process.
+@item %% @tab A @samp{%} character.
+@end multitable
+
+Any other @samp{%} characters in @var{string} produce undefined results.
+
+If no option @samp{globexthdr.name=string} is specified, @command{tar}
+will use the following default value:
+
+@smallexample
+$TMPDIR/GlobalHead.%p.%n
+@end smallexample
+
+@noindent
+where @samp{$TMPDIR} represents the value of the @var{TMPDIR}
+environment variable.  If @var{TMPDIR} is not set, @command{tar}
+uses @samp{/tmp}.
+
+@item @var{keyword}=@var{value}
+When used with one of archive-creation commands, these keyword/value pairs
+will be included at the beginning of the archive in a global extended
+header record.  When used with one of archive-reading commands,
+@command{tar} will behave as if it has encountered these keyword/value
+pairs at the beginning of the archive in a global extended header
+record.
+
+@item @var{keyword}:=@var{value}
+When used with one of archive-creation commands, these keyword/value pairs
+will be included as records at the beginning of an extended header for
+each file.  This is effectively equivalent to @var{keyword}=@var{value}
+form except that it creates no global extended header records.
+
+When used with one of archive-reading commands, @command{tar} will
+behave as if these keyword/value pairs were included as records at the
+end of each extended header; thus, they will override any global or
+file-specific extended header record keywords of the same names.
+For example, in the command:
+
+@smallexample
+tar --format=posix --create \
+    --file archive --pax-option gname:=user .
+@end smallexample
+
+the group name will be forced to a new value for all files
+stored in the archive.
+@end table
 
 @node Checksumming
 @subsection Checksumming Problems
@@ -7964,8 +8086,8 @@ The @option{--use-compress-program} option, in particular, lets you
 implement your own filters, not necessarily dealing with
 compression/decomression.  For example, suppose you wish to implement
 PGP encryption on top of compression, using @command{gpg} (@pxref{Top,
-gpg, gpg ---- encryption and signing tool, gpg}).  The following
-script does that: 
+gpg, gpg ---- encryption and signing tool, gpg, GNU Privacy Guard
+Manual}).  The following script does that:  
 
 @smallexample
 @group
@@ -8289,316 +8411,6 @@ Neither do I. --Sergey}
 
 @end table
 
-@node Standard
-@section Basic Tar Format
-@UNREVISED
-
-While an archive may contain many files, the archive itself is a
-single ordinary file.  Like any other file, an archive file can be
-written to a storage device such as a tape or disk, sent through a
-pipe or over a network, saved on the active file system, or even
-stored in another archive.  An archive file is not easy to read or
-manipulate without using the @command{tar} utility or Tar mode in
-@acronym{GNU} Emacs.
-
-Physically, an archive consists of a series of file entries terminated
-by an end-of-archive entry, which consists of two 512 blocks of zero
-bytes.  A file
-entry usually describes one of the files in the archive (an
-@dfn{archive member}), and consists of a file header and the contents
-of the file.  File headers contain file names and statistics, checksum
-information which @command{tar} uses to detect file corruption, and
-information about file types.
-
-Archives are permitted to have more than one member with the same
-member name.  One way this situation can occur is if more than one
-version of a file has been stored in the archive.  For information
-about adding new versions of a file to an archive, see @ref{update}.
-@FIXME-xref{To learn more about having more than one archive member with the
-same name, see -backup node, when it's written.}
-
-In addition to entries describing archive members, an archive may
-contain entries which @command{tar} itself uses to store information.
-@xref{label}, for an example of such an archive entry.
-
-A @command{tar} archive file contains a series of blocks.  Each block
-contains @code{BLOCKSIZE} bytes.  Although this format may be thought
-of as being on magnetic tape, other media are often used.
-
-Each file archived is represented by a header block which describes
-the file, followed by zero or more blocks which give the contents
-of the file.  At the end of the archive file there are two 512-byte blocks
-filled with binary zeros as an end-of-file marker.  A reasonable system
-should write such end-of-file marker at the end of an archive, but
-must not assume that such a block exists when reading an archive.  In
-particular @GNUTAR{} always issues a warning if it does not encounter it.
-
-The blocks may be @dfn{blocked} for physical I/O operations.
-Each record of @var{n} blocks (where @var{n} is set by the
-@option{--blocking-factor=@var{512-size}} (@option{-b @var{512-size}}) option to @command{tar}) is written with a single
-@w{@samp{write ()}} operation.  On magnetic tapes, the result of
-such a write is a single record.  When writing an archive,
-the last record of blocks should be written at the full size, with
-blocks after the zero block containing all zeros.  When reading
-an archive, a reasonable system should properly handle an archive
-whose last record is shorter than the rest, or which contains garbage
-records after a zero block.
-
-The header block is defined in C as follows.  In the @GNUTAR{}
-distribution, this is part of file @file{src/tar.h}:
-
-@smallexample
-@include header.texi
-@end smallexample
-
-All characters in header blocks are represented by using 8-bit
-characters in the local variant of ASCII.  Each field within the
-structure is contiguous; that is, there is no padding used within
-the structure.  Each character on the archive medium is stored
-contiguously.
-
-Bytes representing the contents of files (after the header block
-of each file) are not translated in any way and are not constrained
-to represent characters in any character set.  The @command{tar} format
-does not distinguish text files from binary files, and no translation
-of file contents is performed.
-
-The @code{name}, @code{linkname}, @code{magic}, @code{uname}, and
-@code{gname} are null-terminated character strings.  All other fields
-are zero-filled octal numbers in ASCII.  Each numeric field of width
-@var{w} contains @var{w} minus 1 digits, and a null.
-
-The @code{name} field is the file name of the file, with directory names
-(if any) preceding the file name, separated by slashes.
-
-@FIXME{how big a name before field overflows?}
-
-The @code{mode} field provides nine bits specifying file permissions
-and three bits to specify the Set UID, Set GID, and Save Text
-(@dfn{sticky}) modes.  Values for these bits are defined above.
-When special permissions are required to create a file with a given
-mode, and the user restoring files from the archive does not hold such
-permissions, the mode bit(s) specifying those special permissions
-are ignored.  Modes which are not supported by the operating system
-restoring files from the archive will be ignored.  Unsupported modes
-should be faked up when creating or updating an archive; e.g., the
-group permission could be copied from the @emph{other} permission.
-
-The @code{uid} and @code{gid} fields are the numeric user and group
-ID of the file owners, respectively.  If the operating system does
-not support numeric user or group IDs, these fields should be ignored.
-
-The @code{size} field is the size of the file in bytes; linked files
-are archived with this field specified as zero.  @FIXME-xref{Modifiers, in
-particular the @option{--incremental} (@option{-G}) option.}
-
-The @code{mtime} field is the data modification time of the file at
-the time it was archived.  It is the ASCII representation of the octal
-value of the last time the file's contents were modified, represented
-as an integer number of
-seconds since January 1, 1970, 00:00 Coordinated Universal Time.
-
-The @code{chksum} field is the ASCII representation of the octal value
-of the simple sum of all bytes in the header block.  Each 8-bit
-byte in the header is added to an unsigned integer, initialized to
-zero, the precision of which shall be no less than seventeen bits.
-When calculating the checksum, the @code{chksum} field is treated as
-if it were all blanks.
-
-The @code{typeflag} field specifies the type of file archived.  If a
-particular implementation does not recognize or permit the specified
-type, the file will be extracted as if it were a regular file.  As this
-action occurs, @command{tar} issues a warning to the standard error.
-
-The @code{atime} and @code{ctime} fields are used in making incremental
-backups; they store, respectively, the particular file's access and
-status change times.
-
-The @code{offset} is used by the @option{--multi-volume} (@option{-M}) option, when
-making a multi-volume archive.  The offset is number of bytes into
-the file that we need to restart at to continue the file on the next
-tape, i.e., where we store the location that a continued file is
-continued at.
-
-The following fields were added to deal with sparse files.  A file
-is @dfn{sparse} if it takes in unallocated blocks which end up being
-represented as zeros, i.e., no useful data.  A test to see if a file
-is sparse is to look at the number blocks allocated for it versus the
-number of characters in the file; if there are fewer blocks allocated
-for the file than would normally be allocated for a file of that
-size, then the file is sparse.  This is the method @command{tar} uses to
-detect a sparse file, and once such a file is detected, it is treated
-differently from non-sparse files.
-
-Sparse files are often @code{dbm} files, or other database-type files
-which have data at some points and emptiness in the greater part of
-the file.  Such files can appear to be very large when an @samp{ls
--l} is done on them, when in truth, there may be a very small amount
-of important data contained in the file.  It is thus undesirable
-to have @command{tar} think that it must back up this entire file, as
-great quantities of room are wasted on empty blocks, which can lead
-to running out of room on a tape far earlier than is necessary.
-Thus, sparse files are dealt with so that these empty blocks are
-not written to the tape.  Instead, what is written to the tape is a
-description, of sorts, of the sparse file: where the holes are, how
-big the holes are, and how much data is found at the end of the hole.
-This way, the file takes up potentially far less room on the tape,
-and when the file is extracted later on, it will look exactly the way
-it looked beforehand.  The following is a description of the fields
-used to handle a sparse file:
-
-The @code{sp} is an array of @code{struct sparse}.  Each @code{struct
-sparse} contains two 12-character strings which represent an offset
-into the file and a number of bytes to be written at that offset.
-The offset is absolute, and not relative to the offset in preceding
-array element.
-
-The header can hold four of these @code{struct sparse} at the moment;
-if more are needed, they are not stored in the header.
-
-The @code{isextended} flag is set when an @code{extended_header}
-is needed to deal with a file.  Note that this means that this flag
-can only be set when dealing with a sparse file, and it is only set
-in the event that the description of the file will not fit in the
-allotted room for sparse structures in the header.  In other words,
-an extended_header is needed.
-
-The @code{extended_header} structure is used for sparse files which
-need more sparse structures than can fit in the header.  The header can
-fit 4 such structures; if more are needed, the flag @code{isextended}
-gets set and the next block is an @code{extended_header}.
-
-Each @code{extended_header} structure contains an array of 21
-sparse structures, along with a similar @code{isextended} flag
-that the header had.  There can be an indeterminate number of such
-@code{extended_header}s to describe a sparse file.
-
-@table @asis
-
-@item @code{REGTYPE}
-@itemx @code{AREGTYPE}
-These flags represent a regular file.  In order to be compatible
-with older versions of @command{tar}, a @code{typeflag} value of
-@code{AREGTYPE} should be silently recognized as a regular file.
-New archives should be created using @code{REGTYPE}.  Also, for
-backward compatibility, @command{tar} treats a regular file whose name
-ends with a slash as a directory.
-
-@item @code{LNKTYPE}
-This flag represents a file linked to another file, of any type,
-previously archived.  Such files are identified in Unix by each
-file having the same device and inode number.  The linked-to name is
-specified in the @code{linkname} field with a trailing null.
-
-@item @code{SYMTYPE}
-This represents a symbolic link to another file.  The linked-to name
-is specified in the @code{linkname} field with a trailing null.
-
-@item @code{CHRTYPE}
-@itemx @code{BLKTYPE}
-These represent character special files and block special files
-respectively.  In this case the @code{devmajor} and @code{devminor}
-fields will contain the major and minor device numbers respectively.
-Operating systems may map the device specifications to their own
-local specification, or may ignore the entry.
-
-@item @code{DIRTYPE}
-This flag specifies a directory or sub-directory.  The directory
-name in the @code{name} field should end with a slash.  On systems where
-disk allocation is performed on a directory basis, the @code{size} field
-will contain the maximum number of bytes (which may be rounded to
-the nearest disk block allocation unit) which the directory may
-hold.  A @code{size} field of zero indicates no such limiting.  Systems
-which do not support limiting in this manner should ignore the
-@code{size} field.
-
-@item @code{FIFOTYPE}
-This specifies a FIFO special file.  Note that the archiving of a
-FIFO file archives the existence of this file and not its contents.
-
-@item @code{CONTTYPE}
-This specifies a contiguous file, which is the same as a normal
-file except that, in operating systems which support it, all its
-space is allocated contiguously on the disk.  Operating systems
-which do not allow contiguous allocation should silently treat this
-type as a normal file.
-
-@item @code{A} @dots{} @code{Z}
-These are reserved for custom implementations.  Some of these are
-used in the @acronym{GNU} modified format, as described below.
-
-@end table
-
-Other values are reserved for specification in future revisions of
-the P1003 standard, and should not be used by any @command{tar} program.
-
-The @code{magic} field indicates that this archive was output in
-the P1003 archive format.  If this field contains @code{TMAGIC},
-the @code{uname} and @code{gname} fields will contain the ASCII
-representation of the owner and group of the file respectively.
-If found, the user and group IDs are used rather than the values in
-the @code{uid} and @code{gid} fields.
-
-For references, see ISO/IEC 9945-1:1990 or IEEE Std 1003.1-1990, pages
-169-173 (section 10.1) for @cite{Archive/Interchange File Format}; and
-IEEE Std 1003.2-1992, pages 380-388 (section 4.48) and pages 936-940
-(section E.4.48) for @cite{pax - Portable archive interchange}.
-
-@node Extensions
-@section @acronym{GNU} Extensions to the Archive Format
-@UNREVISED
-
-The @acronym{GNU} format uses additional file types to describe new types of
-files in an archive.  These are listed below.
-
-@table @code
-@item GNUTYPE_DUMPDIR
-@itemx 'D'
-This represents a directory and a list of files created by the
-@option{--incremental} (@option{-G}) option.  The @code{size} field gives the total
-size of the associated list of files.  Each file name is preceded by
-either a @samp{Y} (the file should be in this archive) or an @samp{N}.
-(The file is a directory, or is not stored in the archive.)  Each file
-name is terminated by a null.  There is an additional null after the
-last file name.
-
-@item GNUTYPE_MULTIVOL
-@itemx 'M'
-This represents a file continued from another volume of a multi-volume
-archive created with the @option{--multi-volume} (@option{-M}) option.  The original
-type of the file is not given here.  The @code{size} field gives the
-maximum size of this piece of the file (assuming the volume does
-not end before the file is written out).  The @code{offset} field
-gives the offset from the beginning of the file where this part of
-the file begins.  Thus @code{size} plus @code{offset} should equal
-the original size of the file.
-
-@item GNUTYPE_SPARSE
-@itemx 'S'
-This flag indicates that we are dealing with a sparse file.  Note
-that archiving a sparse file requires special operations to find
-holes in the file, which mark the positions of these holes, along
-with the number of bytes of data to be found after the hole.
-
-@item GNUTYPE_VOLHDR
-@itemx 'V'
-This file type is used to mark the volume header that was given with
-the @option{--label=@var{archive-label}} (@option{-V @var{archive-label}}) option when the archive was created.  The @code{name}
-field contains the @code{name} given after the @option{--label=@var{archive-label}} (@option{-V @var{archive-label}}) option.
-The @code{size} field is zero.  Only the first file in each volume
-of an archive should have this type.
-
-@end table
-
-You may have trouble reading a @acronym{GNU} format archive on a
-non-@acronym{GNU} system if the options @option{--incremental} (@option{-G}),
-@option{--multi-volume} (@option{-M}), @option{--sparse} (@option{-S}), or @option{--label=@var{archive-label}} (@option{-V @var{archive-label}}) were
-used when writing the archive.  In general, if @command{tar} does not
-use the @acronym{GNU}-added fields of the header, other versions of
-@command{tar} should be able to read the archive.  Otherwise, the
-@command{tar} program will give an error, the most likely one being a
-checksum error.
-
 @node cpio
 @section Comparison of @command{tar} and @command{cpio}
 @UNREVISED
@@ -9655,7 +9467,7 @@ Ordinal number of the volume @command{tar} is about to start.
 
 @vrindex TAR_SUBCOMMAND, info script environment variable
 @item TAR_SUBCOMMAND
-Short option describing the operation @command{tar} is executed.
+Short option describing the operation @command{tar} is executing
 @xref{Operations}, for a complete list of subcommand options.
 
 @vrindex TAR_FORMAT, info script environment variable
@@ -10438,13 +10250,9 @@ Right margin of the text output. Used for wrapping.
 @appendix Genfile
 @include genfile.texi
 
-@node Snapshot Files
-@appendix Format of the Incremental Snapshot Files
-@include snapshot.texi
-
-@node Dumpdir
-@appendix Dumpdir
-@include dumpdir.texi
+@node Tar Internals
+@appendix Tar Internals
+@include intern.texi
 
 @node Free Software Needs Free Documentation
 @appendix Free Software Needs Free Documentation
This page took 0.054651 seconds and 4 git commands to generate.